- Node >= 24, ESM-only.
- No runtime dependencies, no wasm, no native addons, no external tools.
- Deterministic, offline tests only.
npm run check:fast(lint + typecheck + Node test suite)npm run check(full repository gate)
mainis PR-only: direct pushes should be disabled after bootstrap.- Required checks:
CI / Linux checkCI / macOS smokeCI / Windows smoke
- Dismiss stale approvals when new commits are pushed.
- Block force-push and branch deletion on
main. - Prefer linear history (enable "Require linear history" when it does not conflict with release automation).
- Open
Settings->Rules->Rulesets->New ruleset. - Target
Default branch(main) and enforce onpull request. - Require a pull request before merging.
- Require status checks and add the three CI checks listed above.
- Enable "Block force pushes" and "Do not allow bypassing the above settings".
- Optionally enable "Require linear history".
- Add tests for every bug fix and new guarantee.
- Update SPEC.md invariants and link tests for each guarantee.
- Update repo.manifest.yaml when commands or invariants change.
- Use explicit, grep-friendly names for APIs, options, and error codes.
- Dev-only dependencies are allowed only when they improve correctness, determinism, or safety and are wired into verification.
- Current approved dev-only tooling:
esbuild: browser bundle verification fornpm run web:checkto prove the web entrypoint does not pullnode:*builtins.@playwright/test: Chromium smoke proofs fornpm run test:browsercovering Blob roundtrips, writer roundtrips, and URL budget cancellation behavior in browser runtime.fast-check: deterministic property tests (fixed seeds + bounded runs) for TAR numeric parsing, ZIP EOCD mutations, gzip optional headers, and web URL budget abort behavior.