feat(kernel): Wave 9 mega-phase — bits9, protocol 0.5, boot policy v9, Pear/Bare bridge

- Add ninth capability word (bits9), STOCK_V9, FEATURE9_*; bump feature bits doc to 11
- Extend seed RPCs, channel wiring, replication/staging adjuncts; bare_os_proc_index schema 5
- Wave 9 /proc JSON via bare-os-wave9-proc.js + VFS aliases; ctx API 1.18.0 + d.ts hooks
- Boot policy v9 + kernel/init.js enforcement; extensions registry schema 6; strict bits9 caps
- NDJSON lifecycle 8, OTel 6, audit 6; SOCKS proxy map, worker/WASM/env passthrough
- Coreutils openssl stub (bare-crypto doc); mediaproc:* worker group; http-fetch SOCKS lookup
- CI: verify-kernel-roadmap-wave9.mjs, wave3/ctx/dts/compat updates; pretest chain
- Docs: roadmap Wave 9 table, ADR §12, kernel-extensions/capabilities/matrix/protocol/handbook/
  developer-guide (node-to-bare-modules, privacy), kernel README, scripts README, changelogs
- Sync packages/bare-os-seeder/kernel (init.js, README); refresh booter /proc readdir test list
This commit is contained in:
Raven Scott
2026-04-04 05:54:08 -04:00
parent c01ecb29c3
commit fccd07b726
56 changed files with 2362 additions and 452 deletions
+5 -5
View File
@@ -4,15 +4,15 @@ Single place to compare **protocol**, **booter `ctx` API**, **feature-bit docume
| Artifact | Location | Current (stock) |
| --- | --- | --- |
| **`bareOsCtxApiVersion`** | [`packages/bare-os-booter/lib/bare-os-ctx-api.js`](../../packages/bare-os-booter/lib/bare-os-ctx-api.js) | `1.17.0` |
| **`BARE_OS_KERNEL_FEATURE_BITS_DOC`** | [`packages/bare-os-protocol/lib/kernel-feature-bits.js`](../../packages/bare-os-protocol/lib/kernel-feature-bits.js) | `10` |
| **Capability words** | `bare_os.capabilities` RPC + `/proc/bare_os_features` | `bits`, `bits2`, `bits3`, **`bits4`**, **`bits5`**, **`bits6`**, **`bits7`**, **`bits8`** |
| **Lifecycle / telemetry NDJSON** | `BARE_OS_LIFECYCLE_SCHEMA_VERSION` in [`bare-os-lifecycle-schema.js`](../../packages/bare-os-booter/lib/bare-os-lifecycle-schema.js) | `7` |
| **`bareOsCtxApiVersion`** | [`packages/bare-os-booter/lib/bare-os-ctx-api.js`](../../packages/bare-os-booter/lib/bare-os-ctx-api.js) | `1.18.0` |
| **`BARE_OS_KERNEL_FEATURE_BITS_DOC`** | [`packages/bare-os-protocol/lib/kernel-feature-bits.js`](../../packages/bare-os-protocol/lib/kernel-feature-bits.js) | `11` |
| **Capability words** | `bare_os.capabilities` RPC + `/proc/bare_os_features` | `bits`, `bits2`, `bits3`, **`bits4`**, **`bits5`**, **`bits6`**, **`bits7`**, **`bits8`**, **`bits9`** |
| **Lifecycle / telemetry NDJSON** | `BARE_OS_LIFECYCLE_SCHEMA_VERSION` in [`bare-os-lifecycle-schema.js`](../../packages/bare-os-booter/lib/bare-os-lifecycle-schema.js) | `8` |
| **Protocol package** | [`bare-os-protocol` `package.json`](../../packages/bare-os-protocol/package.json) | see workspace version |
## Peer assumptions
- **Seeder** must answer **`bare_os.capabilities`** with **`bits4`** / **`bits5`** / **`bits6`** / **`bits7`** / **`bits8`** when using a current **`bare-os-protocol`** build; older seeders omit newer words (zeros) — use **`BARE_OS_SEED_CAP_STRICT`** only when peers are upgraded.
- **Seeder** must answer **`bare_os.capabilities`** with **`bits4`** / **`bits5`** / **`bits6`** / **`bits7`** / **`bits8`** / **`bits9`** when using a current **`bare-os-protocol`** build; older seeders omit newer words (zeros) — use **`BARE_OS_SEED_CAP_STRICT`** only when peers are upgraded.
- **Offline LKG** booters skip the swarm peer wait when **`BARE_OS_OFFLINE_LKG_BOOT=1`** and **`BARE_OS_LKG_SYSTEM_KEY_HEX`** is set; the system drive must already contain **`/boot/init.js`** in Corestore.
## See also
+105
View File
@@ -365,4 +365,109 @@ This file tracks the twenty-item “kernel super-features” plan. Items are **d
| 99 | HDMS vaultRotateCount telemetry | done — hdms_hints schema 3 |
| 100 | Mega-integration STOCK_V8 + wave8 verifier | done — protocol test + pretest |
## Wave 9 (100-item mega kernel)
| # | Item | Status |
|---|------|--------|
| 1 | bits9 + STOCK_V9 + FEATURE9_* + BARE_OS_KERNEL_FEATURE_BITS_DOC=11 | done — kernel-feature-bits.js, protocol index |
| 2 | ADR 001 §12 ninth capability word | done — developer-guide/adr/001 |
| 3 | bits9 on seed capabilities + /proc + BARE_OS_SEED_CAP_STRICT | done — channel.js, booter index.js |
| 4 | BARE_OS_CTX_API_VERSION 1.18.0 + bare-os-ctx.d.ts wave9 | done — bare-os-ctx-api.js |
| 5 | verify-ctx-api-feature-bits + verify-ctx-dts bits9 | done — scripts |
| 6 | verify-kernel-roadmap-wave9.mjs 100 rows + pretest | done — scripts |
| 7 | verify-kernel-roadmap-wave3 STOCK_V9 + RPC + boot policy v9 | done — wave3.mjs |
| 8 | package-bare-os-protocol.md semver 0.5.0 | done — docs |
| 9 | Protocol package 0.5.0 + protocol-meta.js | done — bare-os-protocol |
| 10 | STOCK_V9 !== 0 protocol test | done — test.js |
| 11 | Seed RPC pear_stage_hint | done — seed-rpc-methods, channel, seeder env |
| 12 | Seed RPC updater_channel_matrix | done — channel + seeder |
| 13 | Seed RPC appling_bundle_pointer | done — channel + seeder |
| 14 | Seed RPC drive_resolve_policy | done — channel + seeder |
| 15 | Seed RPC bundle_id_fingerprint | done — channel + seeder |
| 16 | Seed RPC hyperdb_migration_hint | done — channel + seeder |
| 17 | Seed RPC sidecar_bundle_index_v2 | done — channel + seeder |
| 18 | Seed RPC pear_message_queue_sketch | done — channel + seeder |
| 19 | Seed RPC runtime_bootstrap_etag | done — channel + seeder |
| 20 | Seed RPC force_update_guard | done — channel + seeder |
| 21 | Seed RPC gracedown_window | done — channel + seeder |
| 22 | Seed RPC tryboot_slot | done — channel + seeder |
| 23 | Seed RPC hotmods_allowlist | done — channel + seeder |
| 24 | Seed RPC prefetcher_budget | done — channel + seeder |
| 25 | Seed RPC opstream_backpressure | done — channel + seeder |
| 26 | Seed RPC multisig_link_pointer | done — channel + seeder |
| 27 | Seed RPC md_render_caps | done — channel + seeder |
| 28 | Seed RPC bundlebee_cli_stage_v2 | done — channel + seeder |
| 29 | Seed RPC seed_manifest_diff_v2 | done — channel + seeder |
| 30 | Seed RPC peer_handshake_latency_budget | done — channel + seeder |
| 31 | replication_status pearRuntimeChannel | done — channel opts |
| 32 | replication_status pearUpdaterDelegate | done — channel opts |
| 33 | staging_slot schema 6 + wave9 blob | done — channel.js |
| 34 | kernel_info pearApplingId | done — channel.js |
| 35 | peer_firewall_stats v4 wave9 | done — channel.js |
| 36 | compact_ping schema 3 encodingHint | done — channel.js |
| 37 | handshakeTokenBucketV3Json on replication_status | done — channel.js |
| 38 | Seed RPC ready_guard_v3 | done — seed-rpc-methods, channel |
| 39 | Seed RPC mirror_drive_compaction_v4 | done — channel + seeder |
| 40 | Seed RPC blind_relay_circuit_v2 | done — channel + seeder |
| 41 | /proc pear_stage_pointer.json | done — bare-os-wave9-proc.js |
| 42 | /proc pear_updater_state.json | done — wave9 proc |
| 43 | /proc pear_appling_manifest.json | done — wave9 proc |
| 44 | /proc drive_resolve_cache.json | done — wave9 proc |
| 45 | /proc bare_module_resolution.json | done — wave9 proc |
| 46 | /proc bare_crypto_policy.json | done — wave9 proc |
| 47 | /proc bare_ipc_bridge.json | done — wave9 proc |
| 48 | /proc bare_vm_sandbox_sketch.json | done — wave9 proc |
| 49 | /proc bare_daemon_hooks.json | done — wave9 proc |
| 50 | /proc bare_storage_quota.json | done — wave9 proc |
| 51 | /proc bare_worker_pool.json | done — wave9 proc |
| 52 | /proc pear_wakeups_schedule.json | done — wave9 proc |
| 53 | /proc pear_drop_events.json | done — wave9 proc |
| 54 | /proc pear_radio_state.json | done — wave9 proc |
| 55 | /proc hypercore_repair_hint.json | done — wave9 proc |
| 56 | /proc hyperdrive_sparse_index.json | done — wave9 proc |
| 57 | /proc protomux_channel_alias_v2.json | done — wave9 proc |
| 58 | /proc structured_clone_budget_v2.json | done — wave9 proc |
| 59 | /proc form_data_delegate_limits_v2.json | done — wave9 proc |
| 60 | bare_os_proc_index schema 5 | done — vfs.js + aliases + readdir |
| 61 | ctx.bareOsEmitPearStageHint | done — booter index.js |
| 62 | ctx.bareOsBareModuleResolveProbe | done — booter stub |
| 63 | ctx.bareOsBareCryptoCapProbe | done — booter + BARE_OS_BARE_CRYPTO_VERSION |
| 64 | ctx.bareOsPearUpdaterChannel | done — booter |
| 65 | ctx.bareOsEmitDriveResolveHint | done — booter |
| 66 | ctx.bareOsRegisterBareDiagnosticsTapV2 | done — booter alias |
| 67 | ctx.bareOsEmitPearMessageSketch | done — booter |
| 68 | ctx.bareOsEmitTrybootSlot | done — booter |
| 69 | ctx.bareOsEmitMultisigPointer | done — booter |
| 70 | ctx.bareOsBareStorageHint | done — booter |
| 71 | boot.policy v9 requireFeatureBits9 | done — schema + kernel/init.js |
| 72 | boot.policy requirePearRuntimeRange | done — kernel/init.js semverLte |
| 73 | boot.policy denyBareModuleSpecifierPatterns | done — kernel/init.js env JSON |
| 74 | maxKernelExtensionDepth v2 (shared key; stricter docs) | done — boot.policy.schema note |
| 75 | boot.policy requireBareCryptoMin | done — kernel/init.js |
| 76 | boot.policy denyKernelSyscalls | done — kernel/init.js env |
| 77 | boot.policy requirePearIpcMin | done — kernel/init.js |
| 78 | boot.policy extensionSignerPinsV2 | done — kernel/init.js env |
| 79 | boot.policy offlineLkgManifestMaxAgeSec | done — kernel/init.js env |
| 80 | boot.policy bootPhasesRequireProcIndexMinSchema | done — kernel/init.js |
| 81 | /bin/openssl stub (bare-crypto doc) | done — bare-os-coreutils |
| 82 | proc extensions.json schema 6 | done — vfs procBareOsExtensionsText |
| 83 | BARE_OS_WAVE9_PROBE_ID + bareModuleProbeClass telemetry | done — bare-os-var-log |
| 84 | NDJSON lifecycle schema 8 | done — bare-os-lifecycle-schema.js |
| 85 | OTel JSONL otlSchemaVersion 6 | done — bare-os-var-log |
| 86 | Audit JSON schema 6 | done — index.js + kernel-runner.js |
| 87 | BARE_OS_BIN_WORKER_ALLOW mediaproc:* | done — kernel-runner.js |
| 88 | Seed RPC http_dht_proxy_routes_v2 | done — channel + seeder |
| 89 | bareOsAdvertisedKernelBits9 + seed bits9 ctx | done — index.js |
| 90 | VFS BARE_OS_WAVE9_PROC_FILE_TO_ID + routing | done — vfs.js |
| 91 | Developer-guide Node→Bare module map | done — developer-guide/node-to-bare-modules.md |
| 92 | Handbook ch.11 wave 9 pointer | done — handbook |
| 93 | kernel-capabilities-index FEATURE9_* | done — docs reference |
| 94 | kernel-extensions.md wave9 env/proc | done — docs reference |
| 95 | compatibility-matrix wave 9 row | done — docs/reference |
| 96 | scripts/README.md wave9 verifier | done — scripts index |
| 97 | booter CHANGELOG wave 9 | done — packages/bare-os-booter |
| 98 | privacy doc PII scrub wave9 keys | done — developer-guide |
| 99 | BARE_OS_SOCKS_PROXY_MAP_JSON helper | done — http-fetch-url.js |
| 100 | Mega-integration wave9 + parity | done — pretest + seeder kernel sync |
See also [kernel-extensions.md](kernel-extensions.md) and [package-bare-os-protocol.md](package-bare-os-protocol.md).
@@ -185,6 +185,26 @@ Single map from optional **feature bits** ([`packages/bare-os-protocol/lib/kerne
**Related `ctx` (1.17.0+):** **`bareOsAdvertisedKernelBits8`**, **`bareOsSeedCapabilityBits8`**, **`bareOsBareRuntimeVersion`**; Wave 8 hooks above.
### Word 9 (`bits9`, wave 9)
| Bit (export) | Env / behavior | `/proc` or RPC | `ctx` / notes |
| --- | --- | --- | --- |
| 0 `FEATURE9_CAP_WORD` | — | seed **`bits9`** + `/proc/bare_os_features` | ninth word marker |
| 1 `FEATURE9_SEED_RPC_WAVE9` | `BARE_OS_SEED_*` JSON | `pear_stage_hint`, `updater_channel_matrix`, `drive_resolve_policy`, …, `http_dht_proxy_routes_v2` | [`seed-rpc-methods.js`](../../packages/bare-os-protocol/lib/seed-rpc-methods.js) |
| 2 `FEATURE9_REPLICATION_JSON_WAVE9` | seeder opts | `replication_status` **`pearRuntimeChannel`**, **`handshakeTokenBucketV3`**; `staging_slot` **schema 6**; `compact_ping` **schema 3** | advisory |
| 3 `FEATURE9_PROC_METRICS_WAVE9` | Wave 9 `BARE_OS_*_JSON` envs | 19× `bare_os_*.json` + `bare_os_proc_index` schema **5** | [`bare-os-wave9-proc.js`](../../packages/bare-os-booter/lib/bare-os-wave9-proc.js) |
| 4 `FEATURE9_BOOT_POLICY_V9` | `boot.policy.json` v9 | — | **`requireFeatureBits9`**, **`requirePearRuntimeRange`**, **`requireBareCryptoMin`**, … |
| 5 `FEATURE9_KERNEL_EXT_REGISTRY_V6` | extension records | `/proc/bare_os/extensions.json` schema **6** | **`extensionSignerPinsV2`** env |
| 6 `FEATURE9_PEAR_BARE_BRIDGE_WAVE9` | — | — | **`bareOsEmitPearStageHint`**, probes, storage hint |
| 7 `FEATURE9_VFS_POSIX_WAVE9` | `/bin/openssl` stub | documents **`bare-crypto`** | Node **`node:crypto`** not used |
| 8 `FEATURE9_INITD_SUBPROC_WAVE9` | — | — | shared with prior waves |
| 9 `FEATURE9_WORKER_NET_WAVE9` | **`mediaproc:*`**, **`BARE_OS_SOCKS_PROXY_MAP_JSON`** | SOCKS map helper | [`http-fetch-url.js`](../../packages/bare-os-booter/lib/http-fetch-url.js) |
| 10 `FEATURE9_TELEMETRY_AUDIT_WAVE9` | telemetry sinks | NDJSON **8** / OTel **6** / audit **6** | **`wave9ProbeId`** |
| 11 `FEATURE9_DOC_CI_WAVE9` | — | — | **`verify-kernel-roadmap-wave9.mjs`** |
| 12 `FEATURE9_HTTP_DHT_PROXY_ROUTES_V2` | — | `http_dht_proxy_routes_v2` RPC | revision v2 |
**Related `ctx` (1.18.0+):** **`bareOsAdvertisedKernelBits9`**, **`bareOsSeedCapabilityBits9`**; Wave 9 hooks above.
**Handbook:** [handbook/09-posix-utilities-shell-and-vfs.md](../../handbook/09-posix-utilities-shell-and-vfs.md), [handbook/04-the-booter-runtime.md](../../handbook/04-the-booter-runtime.md).
**Extended reference:** [kernel-extensions.md](./kernel-extensions.md), [environment-and-posix-appendix.md](./environment-and-posix-appendix.md).
+13 -7
View File
@@ -2,7 +2,7 @@
This document complements the [handbook](../../handbook/09-posix-utilities-shell-and-vfs.md) with a single map of optional **booter + stock kernel** features added for richer POSIX-like behavior, protocol alignment, and operations.
## Governance (feature bits doc v10)
## Governance (feature bits doc v11)
New capability bits are governed by [ADR 001 — Kernel feature bit governance](../../developer-guide/adr/001-kernel-feature-bits-governance.md). **`BARE_OS_KERNEL_FEATURE_BITS_DOC`** must bump when semantics change. Bits **2830** on word 1 are assigned (see ADR). **Word 2 (`bits2`)** carries wave-2 features; always mask with **`>>> 0`**. Avoid `1 << 31` on word 1 in JS without `>>> 0` discipline.
@@ -10,12 +10,14 @@ New capability bits are governed by [ADR 001 — Kernel feature bit governance](
## Capability bitmask
Runtime bits are defined in `bare-os-protocol` (`kernel-feature-bits.js`) and surfaced under `/proc/bare_os_features` and the **`/proc/bare_os/`** tree. The stock booter advertises **`BARE_OS_KERNEL_FEATURES_STOCK_V1`** … **`STOCK_V8`** (eight words on the wire when non-zero).
Runtime bits are defined in `bare-os-protocol` (`kernel-feature-bits.js`) and surfaced under `/proc/bare_os_features` and the **`/proc/bare_os/`** tree. The stock booter advertises **`BARE_OS_KERNEL_FEATURES_STOCK_V1`** … **`STOCK_V9`** (nine words on the wire when non-zero).
Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optional **`booterPackageVersion`**, **`featureBitsDoc`**, **`doc`**, **`bits`**, **`bits2`**, **`bits3`**, **`bits4`**, **`bits5`**, **`bits6`**, **`bits7`**, **`bits8`**, **`role`**, **`protocol`**. RPC method names are listed from a single registry ([`seed-rpc-methods.js`](../../packages/bare-os-protocol/lib/seed-rpc-methods.js)); unknown methods return **`bare_os.rpc_unknown_method`**. **`bare_os.replication_status`** returns seeder-side replication hints (manifest path count, local RAM block count). **`bare_os.replication_queue`** includes bounded **`queueDepthEstimate`** and snapshot workflow notes; **`bare_os.capability_attestation`**, and **`bare_os.mbr_layout`** remain optional wave-2 RPCs. Wave 6 adds **`replication_plan`**, **`dht_bootstrap_hint`**, **`snapshot_chain`**, **`mirror_compaction_hint`**, **`updater_state`**, **`blind_peer_topology_v2`**, **`compact_ping`**. Wave 7 adds **`corestore_stats`**, **`snapshot_manifest_slice`**, **`mirror_drive_hint_v2`**, **`hrpc_registry_summary`**, **`protomux_capability_ad`**, **`dht_address_book`**, **`replication_throttle_hint`**, **`bundlebee_stage`**, **`http_dht_proxy_hint`**. Wave 8 adds **`protomux_rpc_pool_hint`**, **`hyperblob_store_hint`**, **`signing_request_queue_hint`**, **`core_storage_layout_hint`**, **`mirror_drive_compaction_v3`**, **`bundlebee_cli_stage`**, **`ready_guard_v2`**, **`blind_relay_circuit_hint`**, **`http_dht_proxy_routes`**. **`bare_os.manifest_hints`** returns a sample of manifest paths; **`bare_os.peer_health`** returns seeder health counters; **`bare_os.staging_slot`** returns optional A/B slot hints (seeder env `BARE_OS_SEED_STAGING_SLOT`, `BARE_OS_SEED_STAGING_PENDING`). Booter mirrors hints under **`/proc/bare_os/manifest_hints`**, **`peer_health`**, **`staging_slot`**, **`net_summary.json`**, **`extensions.json`** (schema **5** in wave 8), **`hdms_hints.json`** (schema **3**: optional **`vaultRotateCount`**) and embeds them in **`/proc/bare_os_replication`** JSON.
Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optional **`booterPackageVersion`**, **`featureBitsDoc`**, **`doc`**, **`bits`**, **`bits2`**, **`bits3`**, **`bits4`**, **`bits5`**, **`bits6`**, **`bits7`**, **`bits8`**, **`bits9`**, **`role`**, **`protocol`**. RPC method names are listed from a single registry ([`seed-rpc-methods.js`](../../packages/bare-os-protocol/lib/seed-rpc-methods.js)); unknown methods return **`bare_os.rpc_unknown_method`**. **`bare_os.replication_status`** returns seeder-side replication hints (manifest path count, local RAM block count). **`bare_os.replication_queue`** includes bounded **`queueDepthEstimate`** and snapshot workflow notes; **`bare_os.capability_attestation`**, and **`bare_os.mbr_layout`** remain optional wave-2 RPCs. Wave 6 adds **`replication_plan`**, **`dht_bootstrap_hint`**, **`snapshot_chain`**, **`mirror_compaction_hint`**, **`updater_state`**, **`blind_peer_topology_v2`**, **`compact_ping`**. Wave 7 adds **`corestore_stats`**, **`snapshot_manifest_slice`**, **`mirror_drive_hint_v2`**, **`hrpc_registry_summary`**, **`protomux_capability_ad`**, **`dht_address_book`**, **`replication_throttle_hint`**, **`bundlebee_stage`**, **`http_dht_proxy_hint`**. Wave 8 adds **`protomux_rpc_pool_hint`**, **`hyperblob_store_hint`**, **`signing_request_queue_hint`**, **`core_storage_layout_hint`**, **`mirror_drive_compaction_v3`**, **`bundlebee_cli_stage`**, **`ready_guard_v2`**, **`blind_relay_circuit_hint`**, **`http_dht_proxy_routes`**. **Wave 9** adds Holepunch-aligned short names such as **`pear_stage_hint`**, **`updater_channel_matrix`**, **`appling_bundle_pointer`**, **`drive_resolve_policy`**, **`bundle_id_fingerprint`**, **`hyperdb_migration_hint`**, **`sidecar_bundle_index_v2`**, **`pear_message_queue_sketch`**, **`runtime_bootstrap_etag`**, **`force_update_guard`**, **`gracedown_window`**, **`tryboot_slot`**, **`hotmods_allowlist`**, **`prefetcher_budget`**, **`opstream_backpressure`**, **`multisig_link_pointer`**, **`md_render_caps`**, **`bundlebee_cli_stage_v2`**, **`seed_manifest_diff_v2`**, **`peer_handshake_latency_budget`**, plus replication adjuncts (**`ready_guard_v3`**, **`mirror_drive_compaction_v4`**, **`blind_relay_circuit_v2`**, **`http_dht_proxy_routes_v2`**, token-bucket metadata, **`compact_ping` v3**, **`peer_firewall_stats` v4**, **`staging_slot` schema 6**, **`kernel_info.pearApplingId`**). **`bare_os.manifest_hints`** returns a sample of manifest paths; **`bare_os.peer_health`** returns seeder health counters; **`bare_os.staging_slot`** returns optional A/B slot hints (seeder env `BARE_OS_SEED_STAGING_SLOT`, `BARE_OS_SEED_STAGING_PENDING`). Booter mirrors hints under **`/proc/bare_os/manifest_hints`**, **`peer_health`**, **`staging_slot`**, **`net_summary.json`**, **`extensions.json`** (schema **6** in wave 9), **`hdms_hints.json`** (schema **3**: optional **`vaultRotateCount`**) and embeds them in **`/proc/bare_os_replication`** JSON. **`/proc/bare_os/index.json`** lists stable aliases (**`bare_os_proc_index` schema 5**).
**Wave 8 Pear/Bare bridge (doc-first):** **`ctx.bareOsEmitStructuredCloneCap`** / **`ctx.bareOsProtomuxChannelAlias`**; **`BARE_OS_CURL_RESOLVE_MAP_JSON`** (curl/wget); **`BARE_OS_HTTP_PROXY_MAP_JSON`** (operator proxy map, host-interpreted); **`BARE_OS_BARE_HTTP1_KEEPALIVE_POOL`**, **`BARE_OS_HAPPY_EYEBALLS_IPV6_FIRST`**, **`BARE_OS_RESUME_STAGGER_LEVEL_MS_JSON`**, **`BARE_OS_INITD_COLLECT_MODE_HINT`**, **`BARE_OS_INITD_START_LIMIT_INTERVAL_MS`**, **`BARE_OS_INITD_START_LIMIT_BURST`**, **`BARE_OS_WORKER_RSS_HIGH_WATER_JSON`**, **`BARE_OS_SANDBOX_FS_CLASS`**, **`BARE_OS_SUBPROCESS_SCHED_POLICY_HINT`**, **`BARE_OS_DIAGNOSTICS_SUBSCRIBE_ALLOWLIST_JSON`**; **`BARE_OS_BOOT_POLICY_DENY_SEED_RPC_METHODS`** (comma-separated short names, also merged from **`denySeedRpcMethods`** in **`boot.policy.json`** v8).
**Wave 9 Pear/Bare bridge:** **`ctx.bareOsEmitPearStageHint`**, **`ctx.bareOsBareModuleResolveProbe`**, **`ctx.bareOsBareCryptoCapProbe`**, **`ctx.bareOsPearUpdaterChannel`**, **`ctx.bareOsEmitDriveResolveHint`**, **`ctx.bareOsRegisterBareDiagnosticsTapV2`**, **`ctx.bareOsEmitPearMessageSketch`**, **`ctx.bareOsEmitTrybootSlot`**, **`ctx.bareOsEmitMultisigPointer`**, **`ctx.bareOsBareStorageHint`**; host env **`BARE_OS_SOCKS_PROXY_MAP_JSON`** (delegated fetch); **`BARE_OS_BARE_CRYPTO_VERSION`**, **`BARE_OS_PEAR_IPC_PACKAGE_VERSION`**, **`BARE_OS_PEAR_UPDATER_CHANNEL`**, **`BARE_OS_HAPPY_EYEBALLS_V3_MODE`**, **`BARE_OS_BIN_WORKER_WASM_MS_MAX`**, **`BARE_OS_WAVE9_PROBE_ID`**, **`BARE_OS_BARE_MODULE_PROBE_CLASS`**; optional **`BARE_OS_*_JSON`** blobs for Wave 9 **`/proc/bare_os/*.json`** files (see **`bare-os-wave9-proc.js`**); boot policy **v9** adds **`requireFeatureBits9`**, **`requirePearRuntimeRange`**, **`denyBareModuleSpecifierPatterns`**, **`requireBareCryptoMin`**, **`denyKernelSyscalls`**, **`requirePearIpcMin`**, **`extensionSignerPinsV2`**, **`offlineLkgManifestMaxAgeSec`**, **`bootPhasesRequireProcIndexMinSchema`**, **`maxKernelExtensionDepth` v2 semantics**, … — see [`boot.policy.schema.json`](../schemas/boot.policy.schema.json).
**JSON Schemas** (policy, telemetry, boot trace): [`docs/schemas/`](../schemas/) (see also [reference README](./README.md)).
## Environment quick reference
@@ -30,8 +32,8 @@ Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optio
| Union writes | `BARE_OS_VFS_UNION_WRITE_DENY` | Comma/colon list of path prefixes blocked for writes under union prefixes |
| IPC | `BARE_OS_IPC_CHANNEL_MAX_BYTES` | JSON map `{"fifoName": 65536}` per-channel backlog cap |
| Initd journal | `BARE_OS_INITD_JOURNAL_MAX_LINES` | Cap NDJSON lines per unit (default 400, max 20000) |
| Telemetry | `BARE_OS_TELEMETRY_NDJSON` | Logical path; append NDJSON mirror (`telemetrySchemaVersion` / `lifecycleSchemaVersion` **7**); optional **`sessionForkGeneration`**; optional correlation via **`BARE_OS_BOOT_ATTEMPT_ID`** → **`bootAttemptId`** |
| Telemetry OTel | `BARE_OS_TELEMETRY_OTEL_JSONL` | Logical path; append OTLP-inspired JSON lines (`otlSchemaVersion` **45**, optional **`scopeMetrics`** sketch; see [`otel-bare-os-jsonl.schema.json`](../schemas/otel-bare-os-jsonl.schema.json)) |
| Telemetry | `BARE_OS_TELEMETRY_NDJSON` | Logical path; append NDJSON mirror (`telemetrySchemaVersion` / `lifecycleSchemaVersion` **8**); optional **`sessionForkGeneration`**, **`wave9ProbeId`**, **`bareModuleProbeClass`**; optional correlation via **`BARE_OS_BOOT_ATTEMPT_ID`** → **`bootAttemptId`** |
| Telemetry OTel | `BARE_OS_TELEMETRY_OTEL_JSONL` | Logical path; append OTLP-inspired JSON lines (`otlSchemaVersion` **46**, optional **`scopeMetrics`** sketch; see [`otel-bare-os-jsonl.schema.json`](../schemas/otel-bare-os-jsonl.schema.json)) |
| Proc poll | `BARE_OS_PROC_POLL_MS` | Min interval 250ms, max 60s, for coalesced **`/proc/bare_os/metrics_live.json`** |
| Shell `${…}` | `BARE_OS_SHELL_PARAM_EXPANSION=1` | Enable `${VAR:-default}` and `${VAR#prefix}` (bounded prefix length) |
| Shell `${…}` v2 | `BARE_OS_SHELL_PARAM_EXPANSION_V2=1` | With param expansion on: `${VAR:=x}`, `${VAR##*/}` / `${VAR#*/}`, `${VAR%%pat}` / `${VAR%pat}` (bounded; see handbook ch.9) |
@@ -39,7 +41,7 @@ Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optio
| VFS pseudo watch | `BARE_OS_VFS_WATCH_PSEUDO=1` | `vfs.watch` on coalesced **`/proc/bare_os/metrics_live.json`** |
| Diagnostics | `BARE_OS_DIAGNOSTICS_SUBSCRIBE=1` | `ctx.bareOsDiagnosticsSubscribe` for structured dev events |
| HDMS / autopass hint | `BARE_OS_AUTOPASS_INVITE_URL` | Surfaced in **`/proc/bare_os/hdms_hints.json`** (guest does not open URLs) |
| Bin worker | `BARE_OS_BIN_WORKER_OFFLOAD=1`, `BARE_OS_BIN_WORKER_ALLOW` | Offload eligible `/bin` on Bare via `bare-worker`; allow list defaults to awk/sed/jq, or patterns like `textproc:*` (cut, tr, sort, uniq, …); **`mathproc:*`** (`bc`, `dc`); optional per-invocation wall cap **`BARE_OS_BIN_WORKER_WALL_MS`** |
| Bin worker | `BARE_OS_BIN_WORKER_OFFLOAD=1`, `BARE_OS_BIN_WORKER_ALLOW` | Offload eligible `/bin` on Bare via `bare-worker`; allow list defaults to awk/sed/jq, or patterns like `textproc:*` (cut, tr, sort, uniq, …); **`mathproc:*`** (`bc`, `dc`); **`mediaproc:*`** (`ffmpeg`, `ffprobe`); optional per-invocation wall cap **`BARE_OS_BIN_WORKER_WALL_MS`**; optional WASM time budget **`BARE_OS_BIN_WORKER_WASM_MS_MAX`** |
| Wave 6 proc inject | `BARE_OS_PROC_*` (see [kernel-capabilities-index](./kernel-capabilities-index.md) Word 6) | Bounded JSON for **`/proc/bare_os/*.json`** operator metrics (udx, DHT, backpressure, locale, …) |
| DNS map | `BARE_OS_DNS_MAP_JSON` | Split-horizon static map; summary in **`/proc/bare_os/dns_map_active.json`** |
| Resume stagger | `BARE_OS_RESUME_STAGGER_MS` | Delay between initd unit starts on resume (advisory) |
@@ -50,7 +52,7 @@ Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optio
| Exec budget | `BARE_OS_EXEC_LINE_BUDGET_MS` | Reject top-level `execLine` when session wall time exceeds budget |
| Delegates | `BARE_OS_DELEGATE_MAX_PER_MIN`, `BARE_OS_DELEGATE_CURL_MAX_PER_MIN`, … | Per-minute caps on host delegates (sliding minute window) |
| Delegates | `BARE_OS_DELEGATE_AUDIT_ONLY=1` | With `BARE_OS_AUDIT=1`, log delegate invocations and skip host run (exit 0) |
| Boot policy | `BARE_OS_BOOT_POLICY=1` | Merge `skipPhases` / `denyBootPhases` from `/etc/bare-os/boot.policy.json`; optional `minKernelFeatureMask` / `requireSeedCaps`; v2 `maxExecLineDepth`, `denyEnvKeys`, `requireProcNodes`; **v3** `requireFeatureBits2`, `requireFeatureBits3`, `allowedPearIpcChannels` → session env, `denyVfsPrefixes` (VFS deny), `maxInitdRestartsPerUnit``BARE_OS_INITD_RESTART_MAX_DEFAULT`; **v4** `requireFeatureBits4`, `denyExecLineBuiltins``BARE_OS_BOOT_POLICY_DENY_EXEC_LINE_BUILTINS`, `allowedCtxMethods``BARE_OS_BOOT_POLICY_ALLOWED_CTX_METHODS`; **v5** `requireFeatureBits5`, `requireInitJsSha256`; **v6** `requireFeatureBits6`, `requireBooterSemver`, `requireCtxApiMin`, `denyKernelExtensionIds`, `kernelExtensionHashPins`, `offlineLkgIntegrityStrict` |
| Boot policy | `BARE_OS_BOOT_POLICY=1` | Merge `skipPhases` / `denyBootPhases` from `/etc/bare-os/boot.policy.json`; optional `minKernelFeatureMask` / `requireSeedCaps`; v2 `maxExecLineDepth`, `denyEnvKeys`, `requireProcNodes`; **v3** `requireFeatureBits2`, `requireFeatureBits3`, `allowedPearIpcChannels` → session env, `denyVfsPrefixes` (VFS deny), `maxInitdRestartsPerUnit``BARE_OS_INITD_RESTART_MAX_DEFAULT`; **v4** `requireFeatureBits4`, `denyExecLineBuiltins``BARE_OS_BOOT_POLICY_DENY_EXEC_LINE_BUILTINS`, `allowedCtxMethods``BARE_OS_BOOT_POLICY_ALLOWED_CTX_METHODS`; **v5** `requireFeatureBits5`, `requireInitJsSha256`; **v6** `requireFeatureBits6`, `requireBooterSemver`, `requireCtxApiMin`, `denyKernelExtensionIds`, `kernelExtensionHashPins`, `offlineLkgIntegrityStrict`; **v7v8** (see schema); **v9** `requireFeatureBits9`, `requirePearRuntimeRange`, `denyBareModuleSpecifierPatterns`, `requireBareCryptoMin`, `denyKernelSyscalls`, `requirePearIpcMin`, `extensionSignerPinsV2`, `offlineLkgManifestMaxAgeSec`, `bootPhasesRequireProcIndexMinSchema`, stricter extension depth / cycle diagnostics |
| Boot policy strict | `BARE_OS_BOOT_POLICY_STRICT=1` | Abort boot when policy checks fail |
| Lazy personal drive | `BARE_OS_LAZY_PERSONAL_DRIVE=1` | Mount personal Hyperdrive at session setup instead of immediately after kernel fetch |
| System revision | `BARE_OS_SYSTEM_REVISION_ID`, `BARE_OS_SYSTEM_REVISION_PENDING`, `BARE_OS_SYSTEM_SLOT` | Exposed as `ctx.bareOsSystemRevision` (Pear OTAstyle hints) |
@@ -73,6 +75,10 @@ Seed RPC **`bare_os.capabilities`** includes **`protocolPackageVersion`**, optio
Shipped as **`bits6`** + **`STOCK_V6`**. Full bit map: [kernel-capabilities-index.md](./kernel-capabilities-index.md) (Word 6). One-row checklist: [feature-roadmap.md](./feature-roadmap.md) (Wave 6 table). CI: **`verify-kernel-roadmap-wave6.mjs`**, **`verify-pear-no-static-node-import.mjs`**.
## Wave 9 summary
Shipped as **`bits9`** + **`STOCK_V9`**. Word 9 map: [kernel-capabilities-index.md](./kernel-capabilities-index.md). Checklist: [feature-roadmap.md](./feature-roadmap.md) (Wave 9 table). Node→Bare map: [node-to-bare-modules.md](../../developer-guide/node-to-bare-modules.md). CI: **`verify-kernel-roadmap-wave9.mjs`**, **`verify-kernel-roadmap-wave3.mjs`**, **`verify-ctx-api-feature-bits.mjs`**, **`verify-ctx-dts.mjs`**, **`verify-compat-matrix.mjs`**.
## POSIX utility notes
| Utility | Notes |
+2 -2
View File
@@ -9,7 +9,7 @@ Former **DOCUMENTATION.md** §10. [Reference index →](README.md)
| Item | Detail |
| --------------------------- | -------------------------------------------------------------------------- |
| `name` | `bare-os-protocol` |
| `version` | `0.4.0` (wave 8: **`bits8`**, extended seed RPCs + `http_dht_proxy_routes`; couple boot policy **`requireProtocolPackageMin`** to this semver) |
| `version` | `0.5.0` (wave 9: **`bits9`**, Holepunch-aligned seed RPC wave + `http_dht_proxy_routes_v2`; couple boot policy **`requireProtocolPackageMin`** to this semver) |
| `main` / `exports["."]` | `./index.js` |
| `exports["./constants.js"]` | `./constants.js` (for `bare-os-protocol/constants.js` imports) |
| `exports["./messages"]` | `./lib/messages.js` |
@@ -28,7 +28,7 @@ Re-exports from `./lib/channel.js`: `setupSeedChannel`.
Re-exports from `./lib/seed-rpc-methods.js`: `BARE_OS_SEED_RPC_METHODS`, `BARE_OS_SEED_RPC_METHOD_SHORT_NAMES`, `BARE_OS_SEED_RPC_METHOD_SHORT_NAME_SET`.
Re-exports **`STOCK_V5`****`STOCK_V7`** and **`BARE_OS_FEATURE5_*`**, **`FEATURE6_*`**, **`FEATURE7_*`** from `./lib/kernel-feature-bits.js` (alongside earlier stock words). **`BARE_OS_PROTOCOL_PACKAGE_VERSION`** is published from `./lib/protocol-meta.js` for **`ctx.bareOsProtocolPackageVersion`** comparisons.
Re-exports **`STOCK_V5`****`STOCK_V9`** and **`BARE_OS_FEATURE5_*`** **`FEATURE9_*`** from `./lib/kernel-feature-bits.js` (alongside earlier stock words). **`BARE_OS_PROTOCOL_PACKAGE_VERSION`** is published from `./lib/protocol-meta.js` for **`ctx.bareOsProtocolPackageVersion`** comparisons.
### 10.3 [packages/bare-os-protocol/constants.js](../../packages/bare-os-protocol/constants.js)
+38
View File
@@ -16,6 +16,44 @@
"requireFeatureBits6": { "type": "integer", "minimum": 0 },
"requireFeatureBits7": { "type": "integer", "minimum": 0 },
"requireFeatureBits8": { "type": "integer", "minimum": 0 },
"requireFeatureBits9": { "type": "integer", "minimum": 0 },
"requirePearRuntimeRange": {
"type": "object",
"additionalProperties": false,
"properties": {
"min": { "type": "string" },
"max": { "type": "string" }
}
},
"denyBareModuleSpecifierPatterns": {
"type": "array",
"items": { "type": "string" }
},
"requireBareCryptoMin": {
"type": "string",
"description": "Minimum bare-crypto semver vs BARE_OS_BARE_CRYPTO_VERSION"
},
"denyKernelSyscalls": {
"type": "array",
"items": { "type": "string" }
},
"requirePearIpcMin": {
"type": "string",
"description": "Minimum pear-ipc package semver vs BARE_OS_PEAR_IPC_PACKAGE_VERSION"
},
"extensionSignerPinsV2": {
"type": "object",
"additionalProperties": { "type": "string" }
},
"offlineLkgManifestMaxAgeSec": {
"type": "integer",
"minimum": 0
},
"bootPhasesRequireProcIndexMinSchema": {
"type": "integer",
"minimum": 1,
"description": "Fail strict boot when /proc/bare_os/index.json schema < this value"
},
"requireBareRuntimeMin": {
"type": "string",
"description": "Minimum Bare runtime semver; compared to ctx.bareOsBareRuntimeVersion / BARE_OS_BARE_RUNTIME_VERSION"