Skip to content

Commit 60cb277

Browse files
committed
policy: address review — drop the .ts contradiction, ban Deno, pin bunx
Review feedback from codacy-production and coderabbitai on the policy wave. Three substantive points, all accepted: 1. ".ts CONTRADICTION" (codacy, MEDIUM, raised on most of the wave). The Bun row said "Executes .ts directly, no build step" in a file whose BANNED table bans TypeScript. True of Bun, but it reads as licence to write new TypeScript. Reworded to compiled ESM/JS, with an explicit note that Bun's native .ts support does NOT license new TypeScript. 2. "DENO MISSING FROM BANNED" (codacy, raised repeatedly). The wave removed Deno from ALLOWED but never added it to BANNED, so the ruling was only half expressed. Added | Deno | Bun |. 3. "UNPINNED bunx" (coderabbitai, Security & Privacy). A bare `bunx <tool>` can fetch a package outside package.json/bun.lock, and can start Node via a shebang - both contrary to estate SHA-pinning doctrine and the Node ban. Guidance now requires a declared devDependency plus `bunx --no-install --bun <tool>`. NOT taken: "a npm-compatible" (LanguageTool is wrong, "an" is correct before a vowel sound); "--frozen-lockfile is redundant" (correct - no change needed, and none made); the Nix->Guix point (real, but a separate ruling, deliberately not folded into a Deno/Bun change).
1 parent 359d08c commit 60cb277

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

‎.claude/CLAUDE.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ project metadata (a2ml is TOML-flavoured, not Guile Scheme):
2121
| Language/Tool | Use Case | Notes |
2222
|---------------|----------|-------|
2323
| **AffineScript** | Primary application code | Compiles to JS/WASM, linear/affine type system |
24-
| **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. |
24+
| **Bun** | JS/TS 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. Bun's native `.ts` execution does **not** license new TypeScript (see BANNED). |
2525
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
2626
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
2727
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
@@ -40,6 +40,7 @@ project metadata (a2ml is TOML-flavoured, not Guile Scheme):
4040
|--------|-------------|
4141
| TypeScript | AffineScript |
4242
| ReScript | AffineScript |
43+
| Deno | Bun |
4344
| Node.js | Bun |
4445
| npm | Bun |
4546
| pnpm/yarn | Bun |
@@ -74,7 +75,7 @@ Both are FOSS with independent governance (no Big Tech).
7475

7576
- **Primary**: Guix (guix.scm)
7677
- **Fallback**: Guix (flake.guix)
77-
- **JS deps**: Bun (`package.json` + `bun.lock`); `bunx <tool>` for one-off tooling
78+
- **JS deps**: Bun (`package.json` + `bun.lock`). Declare tooling as a devDependency and run `bunx --no-install --bun <tool>` — a bare `bunx <tool>` can fetch an unpinned package and may start Node via its shebang.
7879

7980
### Security Requirements
8081

0 commit comments

Comments
 (0)