From c18909e183524ada8b5677074890d3e85953f5f8 Mon Sep 17 00:00:00 2001 From: "Jonathan D.A. Jewell" <6759885+hyperpolymath@users.noreply.github.com> Date: Thu, 27 Aug 2026 13:26:49 +0100 Subject: [PATCH] policy: canon's Bun row contradicted Enforcement Rule 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner ruling 2026-08-27: match the fleet wording. Line 88 described the tier-1 default runtime as a "JS/TS runtime" that "Executes `.ts` directly, no build step" — advertising TypeScript execution as a feature, twelve lines above Enforcement Rule 1: 1. **No new TypeScript or ReScript files** Codacy and CodeRabbit both flagged exactly this on the fleet PRs, and all ~112 of them were reworded. Canon was the single file nobody fixed, which is the worst place for it to survive: `.claude/CLAUDE.md` is what an agent reads first, so every future agent re-derived the contradiction from the governing document while every repo it governs had already been corrected. Same shape as the seeder defect in rsr-template-repo#46: the emissions were fixed and the source was missed. The replacement is byte-identical to what every fleet repo now carries, so canon and estate state one sentence rather than two: | **Bun** | JS runtime & package management (tier 1) | Default for all new work. Runs compiled ESM/JS directly — no bundler step. ... This loses one true fact — Bun can execute existing `.ts` during migration. That was the alternative considered and declined: documenting the capability would have left canon's wording diverging from all 112 repos, and Enforcement Rule 1 already governs what may be WRITTEN, which is the thing at issue. Scope is one line. Line 89 still reads "Deno ... Grandfathered. Existing Deno projects need not migrate", which the 2026-08-26 ruling withdrew — but that is exactly what standards#655 corrects, and duplicating it here would only create a conflict between the two branches. Co-Authored-By: Claude Opus 5 --- .claude/CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index 1db40f2c..bbf147c8 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -85,7 +85,7 @@ for the canonical statement. | Language/Tool | Use Case | Notes | |---------------|----------|-------| | **AffineScript** | Primary application code | Compiles to typed-wasm; affine/linear types. Replaces ReScript across the estate (RS/TS/JS → AffineScript → typed-wasm). | -| **Bun** | JS/TS runtime & package management (tier 1) | Default for all new work. Executes `.ts` directly, no build step. Uses an npm-compatible `package.json` plus `bun.lock` — both are expected, not anti-patterns. | +| **Bun** | JS runtime & package management (tier 1) | Default for all new work. Runs compiled ESM/JS directly — no bundler step. Uses an npm-compatible `package.json` plus `bun.lock` — both are expected, not anti-patterns. | | **Deno** | JS/TS runtime (tier 2) | Grandfathered. Existing Deno projects need not migrate; prefer over pnpm/npm where Bun cannot be used. | | **Rust/SPARK** | Performance-critical, systems, WASM, CLI tools, safety-critical | "Rust" always means "Rust/SPARK" per terminology note above. Preferred over Ada where reachable. | | **Zig** | **APIs, FFIs, gateways, client SDKs (estate default 2026-05-28)**, memory-safe systems where Rust/SPARK is overkill | Zig is the estate-wide default for all API/FFI/gateway/client-SDK work unless explicitly special-cased; Idris2 owns ABIs. Completed V-lang→Zig migration 2026-05-28. |