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.
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.
npm ciat the repository root (clean install).npm testat the root (includes fullpretestgates plus workspace tests).npm run test:bareat the root (Bare-runtime protocol + booter + seeder lane).node scripts/verify-kernel-seeder-parity.mjs(kernel and seeder mirror must match).node scripts/verify-init-bundle-recipe.mjsandnode scripts/gen-require-initjs-sha256.mjs(init bundle recipe + digest fixture).node scripts/verify-ctx-api-feature-bits.mjsandnode scripts/verify-compat-matrix.mjs(contract/doc version gates).npm run audit:placeholder-baseline(refresh and reviewdocs/audit/placeholder-baseline-scan.json).- 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, andnode scripts/verify-holepunch-clone-drift.mjs. node scripts/verify-personal-drive-path-policy.mjsandnode scripts/verify-ctx-client-helper-sync.mjs.- 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_JSONand (optionally)BARE_OS_CORESTORE_SNAPSHOT_WORKFLOW_JSON, - verify
/proc/bare_os/snapshot_hints.jsonand/proc/bare_os/replicationsurface the same workflow metadata. - optional mirror-drive experiment helper: run
node scripts/mirror-drive-experiment.mjs --source-key <64hex> --mirror-key <64hex> --aux 1and apply emitted env hints before launching booter/seeder.
- Shell conformance and flake evidence (required for shell-touching releases):
- run
npm run test -w bare-os-booterandnpm run test:shell-bracket -w bare-os-booter, - run
npm run test:shell-fastandnpm run report:shell-reliabilityfor fast-lane + machine-readable failure-mode output, - run
npm run verify:reliability-gatesandnpm 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-roadmapand reviewdocs/data/shell-roadmap-features.jsonfor phase status.
- Zero-trust hard gates (required for trust-surface releases):
- run
npm run verify:zero-trust-gates, - run
npm run test -w bare-os-booterwithBARE_OS_ZERO_TRUST_PROFILE=strictin at least one clean lane, - verify no release config sets
BARE_OS_PEER_ALLOW_ALL=1without 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.