feat(booter): hrpc allowlist parser, snapshot hints parity, shell pipefix, safer mv staging

- Add bare-os-hrpc-allowlist.js; wire stock bareOsHrpcRequest + bareOsHrpcAllowlistProbe;
  passthrough BARE_OS_HRPC_ALLOWLIST_JSON and operator env for snapshot/blind-relay/mirror/pear-doctor
- Merge BARE_OS_CORESTORE_SNAPSHOT_WORKFLOW_JSON into bareOsReadSnapshotHintsJson (match proc)
- Shell: pipefail runs all pipeline stages; aggregate first non-zero exit after assign prefixes
- mv: stage renames via vfs.resolveLogical so temp files stay in writable destination dir
- coreutils: POSIX-style split suffixes past zz; xargs doc for -P vs host subprocess
- identity-session: stable Error.code for no-account / passphrase failures
- Docs: KERNEL_CONTRACT, POSIX profile, handbook 5/7/9, kernel-extensions strict-boot table,
  env appendix, developer-guide + scripts README, protocol/booter CHANGELOGs; hrpc allowlist schema
- Tests: hrpc allowlist, pear_doctor schema 2, split suffix, pipefail pipeline; fix PLACEHOLDER_BASELINE link

Pretest: refreshed kernel bins, man.json, posix dashboard, bundle health, seeder parity
This commit is contained in:
Raven Scott
2026-04-05 01:31:03 -04:00
parent c64910d72e
commit 15209b4837
46 changed files with 1603 additions and 542 deletions
+20 -3
View File
@@ -87,11 +87,28 @@ function bareOsEmitRaw(ctx, chunk) {
return false
}
/**
* POSIX-style suffix: `aa`…`zz` (676 files), then `aaa`, `aab`, … as needed.
* @param {string} prefix
* @param {number} i 0-based output index
*/
function splitSuffix(prefix, i) {
const a = 'abcdefghijklmnopqrstuvwxyz'
const hi = Math.floor(i / 26) % 26
const lo = i % 26
return prefix + a[hi] + a[lo]
let idx = i
let len = 2
let span = 26 ** len
while (idx >= span) {
idx -= span
len++
span = 26 ** len
}
let s = ''
let n = idx
for (let p = 0; p < len; p++) {
s = a[n % 26] + s
n = Math.floor(n / 26)
}
return prefix + s
}
async function run(ctx, argv) {