Skip to content

Commit dcaf6a9

Browse files
committed
policy: Bun is tier 1, Deno is being removed — correct local CLAUDE.md
Owner ruling 2026-08-26: "deno is to go and bun is the way we are going, put it first everywhere unless not possible and explain why if not". This file is what an agent reads FIRST and it listed Bun as BANNED with Deno as its replacement. Correcting hyperpolymath/standards (#655) fixes one copy of ~372 - agents read the local one. This is that local copy. ALLOWED **Deno** "Replaces Node/npm/bun" -> **Bun** tier 1 BANNED | Bun | Deno | -> row REMOVED BANNED Node.js / npm / pnpm/yarn -> Deno -> -> Bun rule "No package.json for runtime deps - use deno.json imports" -> Use package.json + bun.lock; a manifest is REQUIRED rule "No node_modules in production" -> bun install --production, pinned via bun.lock pkg JS deps: Deno -> JS deps: Bun (package.json + bun.lock), bunx WHY THE MANIFEST RULE MATTERS MOST. "No package.json for runtime deps" did not express a preference - it told repos not to declare their dependencies at all. hyperpolymath/ubicity imported zod and glob, shipped NO manifest of any kind, and could not build under ANY toolchain. Fixed in ubicity#107; the rule that caused it is fixed here. ALSO REPAIRED - blanking scars from the ReScript purge, which substituted the token with an EMPTY STRING rather than removing the text: | | AffineScript | -> | ReScript | AffineScript | 1. **No new files** ... -> **No new ReScript files** ... | **JavaScript** | Only where cannot | -> Only where AffineScript cannot Restoring the NAME in a policy table does not reintroduce the language. Same root cause as the rm -rf /lib found in wordpress-tools#62. Policy text only - no code, no workflows, no build files. 1 file(s). NOT FOLDED IN: "Fallback: Nix (flake.nix)" is stale (Guix superseded Nix per ADR-2026-STACK-MIGRATION) but that is a separate ruling; flagged, not changed.
1 parent 4f3877a commit dcaf6a9

1 file changed

Lines changed: 8 additions & 9 deletions

File tree

‎robot-repo-automaton/.claude/CLAUDE.md‎

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77
| Language/Tool | Use Case | Notes |
88
|---------------|----------|-------|
99
| **AffineScript** | Primary application code | Compiles to JS/WASM, type-safe with affine types |
10-
| **Deno** | Runtime & package management | Replaces Node/npm/bun |
10+
| **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. |
1111
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
1212
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
1313
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
1414
| **Gleam** | Backend services | Runs on BEAM or compiles to JS |
1515
| **Bash/POSIX Shell** | Scripts, automation | Keep minimal |
16-
| **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Deno APIs |
16+
| **JavaScript** | Only where AffineScript cannot | MCP protocol glue, Bun APIs |
1717
| **Nickel** | Configuration language | For complex configs |
1818
| **Guile Scheme** | State/meta files | STATE.scm, META.scm, ECOSYSTEM.scm |
1919
| **Julia** | Batch scripts, data processing | Per RSR |
@@ -25,10 +25,9 @@
2525
| Banned | Replacement |
2626
|--------|-------------|
2727
| TypeScript | AffineScript |
28-
| Node.js | Deno |
29-
| npm | Deno |
30-
| Bun | Deno |
31-
| pnpm/yarn | Deno |
28+
| Node.js | Bun |
29+
| npm | Bun |
30+
| pnpm/yarn | Bun |
3231
| Go | Rust |
3332
| Python | Julia/Rust/AffineScript |
3433
| Java/Kotlin | Rust/Tauri/Dioxus |
@@ -48,8 +47,8 @@ Both are FOSS with independent governance (no Big Tech).
4847
### Enforcement Rules
4948

5049
1. **No new TypeScript files** - Convert existing TS to AffineScript
51-
2. **No package.json - use deno.json deps** - Use deno.json imports
52-
3. **No node_modules in production** - Deno caches deps automatically
50+
2. **Use `package.json` + `bun.lock` for JS runtime deps** - Bun is npm-compatible; a manifest is REQUIRED
51+
3. **`bun install --production` for production deps** - resolved from `package.json`, pinned via `bun.lock`
5352
4. **No Go code** - Use Rust instead
5453
5. **No Python anywhere** - Use Julia for data/batch, Rust for systems, AffineScript for apps
5554
6. **No Kotlin/Swift for mobile** - Use Tauri 2.0+ or Dioxus
@@ -58,7 +57,7 @@ Both are FOSS with independent governance (no Big Tech).
5857

5958
- **Primary**: Guix (guix.scm)
6059
- **Fallback**: none — Guix-only (Nix retired 2026-06-05)
61-
- **JS deps**: Deno (deno.json imports)
60+
- **JS deps**: Bun (`package.json` + `bun.lock`); `bunx <tool>` for one-off tooling
6261

6362
### Security Requirements
6463

0 commit comments

Comments
 (0)