Files
bare-operating-system/docs/release-checklist.md
T
Raven Scott aa81fbff5b Close the BareOS shell + Fish REPL roadmap tracker and ship the remaining
shell surfaces in-tree.
Roadmap / CI
- docs/data/shell-roadmap-features.json: all shell-001…shell-100 rows and
  P1–P8 phases marked implemented; note documents closure date and pointers.
- scripts/verify-shell-roadmap.mjs: validate JSON (schema 1, 8 phases,
  100 implemented items) plus existing source needles; wire npm run
  verify:shell-roadmap into root pretest (package.json).
- scripts/README.md: document verifier behavior.
Lexer & expansion (packages/bare-os-booter/lib)
- shell-lex.js: central lexShellLine; ANSI-C $'…' via decodeBareOsDollarQuote;
  keep diagnostics/tokenizer aligned with execution tokenizer.
- shell.js: stray reserved words at statement start → syntax error exit 2;
  optional [[ … ]] when BARE_OS_SHELL_DOUBLE_BRACKET=1 (==, !=);
  alias expansion before function dispatch (ordering tests);
  expandWordWithCmdSubst: balanced $(…) vs skipped $((…)); backtick
  command substitution when BARE_OS_SHELL_CMDSUBST; default ctx.execLine for
  nested cmdsubst when unset; index passthrough for DOUBLE_BRACKET env.
- shell-glob.js: ~login → HOME when USER matches, else /home/login (bounded
  login pattern); tests for pathname + execShellLine.
- shell-tokenizer.js: align with shell-lex detailed spans/modes where needed.
Completion / REPL
- completion-engine.js: completion depth / collectors per shell program work.
- packages/bare-os-booter/index.js: small wiring for shell env passthrough.
/bin/sh front-end
- packages/bare-os-coreutils/src/sh.js; kernel/bin/sh; seeder copies: stay in
  sync with shell behavior and env flags.
Tests
- packages/bare-os-booter/test.js: coverage for misplaced reserved words,
  gated [[ ]], alias vs function, ~user/~~ paths, $'…', cmdsubst $(…) and
  backticks, and related regressions.
Documentation
- docs/reference/shell-grammar.md: $'…', $(…) / backticks vs $((…)).
- handbook/09-posix-utilities-shell-and-vfs.md, environment appendix,
  shell-troubleshooting / shell-unsupported-behavior, release checklist,
  docs/reference/README.md: shell behavior and operator surfaces.
- developer-guide/19-how-to-fish-keybinding-completer.md: Fish keybinding /
  completer how-to (new).
Generated / synced artifacts
- kernel/lib/bare/manifest.json, kernel/share/man/man.json,
  kernel/lib/bare/shell-completion.json, posix_utilities.json,
  docs/audit/bundle-health.json: regenerated or synced with tooling.
- scripts/bench-shell-phases.mjs: bench script touch.
2026-04-27 00:41:06 -04:00

5.2 KiB

Release checklist (Bare operating system)

Run these steps before tagging or publishing a Pear bundle so the kernel, seeder mirror, and docs stay aligned.

Docs: documentation home · contributing to docs · deployment / OTA notes.

  1. npm ci at the repository root (clean install).
  2. npm test at the root (includes full pretest gates plus workspace tests).
  3. npm run test:bare at the root (Bare-runtime protocol + booter + seeder lane).
  4. node scripts/verify-kernel-seeder-parity.mjs (kernel and seeder mirror must match).
  5. node scripts/verify-init-bundle-recipe.mjs and node scripts/gen-require-initjs-sha256.mjs (init bundle recipe + digest fixture).
  6. node scripts/verify-ctx-api-feature-bits.mjs and node scripts/verify-compat-matrix.mjs (contract/doc version gates).
  7. npm run audit:placeholder-baseline (refresh and review docs/audit/placeholder-baseline-scan.json).
  8. Holepunch alignment checks: run node scripts/report-holepunch-lockfile-drift.mjs, node scripts/report-holepunch-runtime-compat.mjs, node scripts/gen-holepunch-catalog-tiers.mjs, and node scripts/verify-holepunch-clone-drift.mjs.
  9. node scripts/verify-personal-drive-path-policy.mjs and node scripts/verify-ctx-client-helper-sync.mjs.
  10. Corestore snapshot workflow drill (operator lane):
  • quiesce writers (or pause replication),
  • capture a Corestore snapshot with your host tooling,
  • export non-secret summary JSON to BARE_OS_CORESTORE_SNAPSHOT_JSON and (optionally) BARE_OS_CORESTORE_SNAPSHOT_WORKFLOW_JSON,
  • verify /proc/bare_os/snapshot_hints.json and /proc/bare_os/replication surface the same workflow metadata.
  • optional mirror-drive experiment helper: run node scripts/mirror-drive-experiment.mjs --source-key <64hex> --mirror-key <64hex> --aux 1 and apply emitted env hints before launching booter/seeder.
  1. Shell conformance and flake evidence (required for shell-touching releases):
  • run npm run test -w bare-os-booter and npm run test:shell-bracket -w bare-os-booter,
  • run npm run test:shell-fast and npm run report:shell-reliability for fast-lane + machine-readable failure-mode output,
  • run npm run verify:reliability-gates and npm run test:flake-repeat (repeat-run must stay green without retries),
  • confirm no retry-dependent shell test behavior in two consecutive clean runs,
  • verify shell docs changed in lockstep when semantics changed (docs/reference/shell-grammar.md, shell-unsupported-behavior.md, shell-troubleshooting.md, posix-issue7-traceability.md),
  • optional: run npm run verify:shell-roadmap and review docs/data/shell-roadmap-features.json for phase status.
  1. Zero-trust hard gates (required for trust-surface releases):
  • run npm run verify:zero-trust-gates,
  • run npm run test -w bare-os-booter with BARE_OS_ZERO_TRUST_PROFILE=strict in at least one clean lane,
  • verify no release config sets BARE_OS_PEER_ALLOW_ALL=1 without explicit break-glass expiry notes,
  • verify signer trust enforcement is on for capability-protected paths (BARE_OS_PATH_CAPABILITY_REQUIRE_TRUSTED_SIGNER=1).

When COREUTILS_COMMANDS in packages/bare-os-coreutils/lib/commands.mjs changes length, update the Tier-1 count prose in root README.md, kernel/README.md, docs/reference/environment-and-posix-appendix.md, docs/audit/PLACEHOLDER_BASELINE.md, and packages/bare-os-coreutils/README.md to match — scripts/verify-doc-tier1-count.mjs (part of pretest) fails otherwise.

Optional: npm run release-checklist runs scripts/release-checklist.mjs for automated JSON checks when configured.

Quarterly: compare Holepunch dependency pins in packages/bare-os-booter/package.json (and optional optionalDependencies) against your local mirror under pearcli/holepunch-repos/holepunchto_repos (or upstream tags). Note API or semver changes before bulk upgrades. When docs/audit/bundle-health.json changes by more than a few percent for any bundle, record a one-line reason in packages/bare-os-bare-libs/README.md (bundle health log) and shrink docs/audit/bundle-marker-allowlist.json / bundle-throw-allowlist.json when upstream clears markers.

Holepunch clone inventory: run node scripts/sync-holepunch-clones.mjs on a machine with local org clones to refresh docs/audit/holepunch-clone-sync-report.json and the NDJSON stream docs/audit/holepunch-clone-sync-summary.ndjson (one JSON object per manifest package row; safe to commit empty rows when clones are absent).

Optional strict clone lag gate: docs/audit/holepunch-freshness-gate.json defaults to enabled: false. Release trains that maintain local mirrors may set enabled: true, run git fetch origin main in listed repos, and use BARE_OS_HOLEPUNCH_FRESHNESS_STRICT=1 in CI so verify-holepunch-clone-freshness.mjs fails when clones exceed maxCommitsBehind.