Add tenth capability word (STOCK_V10), protocol 0.6.0, ctx API 1.19.0, and
strict seed coverage for bits10. Extend seed RPC, replication adjuncts, Wave 10 /proc JSON + proc index schema 6, boot.policy v10 enforcement in kernel/init.js, sysproc:* workers, NDJSON/OTel/audit schema bumps, CI (verify-kernel-roadmap-wave10.mjs) and doc updates across handbook, developer-guide, compatibility matrix, and seeder kernel parity.
This commit is contained in:
@@ -10,9 +10,9 @@ Shared **wire format and constants** for the Bare operating system monorepo: Hyp
|
||||
| `topicKey()` | 32-byte topic for `swarm.join()` |
|
||||
| `BLOCK_SIZE`, `MBR_MAGIC` | 512-byte MBR, magic `BIOS` at offset 0 |
|
||||
| `buildMbr` / `parseMbr` | Pack/unpack primary + optional failover Hyperdrive keys |
|
||||
| `setupSeedChannel` | Wire Protomux messages 0–6 for RAM block reads, gossip bitfield, manifest path **search**, **RPC** (incl. `bare_os.capabilities` with **`bits`** … **`bits9`** when non-zero, typed errors for unknown RPC methods, `bare_os.replication_status`, `bare_os.replication_queue`, wave 6–9 RPC short names in **`seed-rpc-methods.js`**, `bare_os.gossip`), and `drive.replicate` |
|
||||
| `setupSeedChannel` | Wire Protomux messages 0–6 for RAM block reads, gossip bitfield, manifest path **search**, **RPC** (incl. `bare_os.capabilities` with **`bits`** … **`bits10`** when non-zero, typed errors for unknown RPC methods, `bare_os.replication_status`, `bare_os.replication_queue`, wave 6–10 RPC short names in **`seed-rpc-methods.js`**, `bare_os.gossip`), and `drive.replicate` |
|
||||
|
||||
Subpath exports: `bare-os-protocol/constants.js`, `bare-os-protocol/messages` (compact-encoding schemas), `bare-os-protocol/kernel-feature-bits.js` (documented booter capability words **`STOCK_V1`** … **`STOCK_V9`**; **`BARE_OS_KERNEL_FEATURE_BITS_DOC=11`**; surfaced in **`/proc/bare_os_features`** and **`/proc/bare_os/`**), `bare-os-protocol/lib/seed-rpc-methods.js` (authoritative **`bare_os.*`** RPC name list for **`kernel_info`**), `bare-os-protocol/protocol-meta.js` (**`BARE_OS_PROTOCOL_PACKAGE_VERSION`** for the seed handshake).
|
||||
Subpath exports: `bare-os-protocol/constants.js`, `bare-os-protocol/messages` (compact-encoding schemas), `bare-os-protocol/kernel-feature-bits.js` (documented booter capability words **`STOCK_V1`** … **`STOCK_V10`**; **`BARE_OS_KERNEL_FEATURE_BITS_DOC=12`**; surfaced in **`/proc/bare_os_features`** and **`/proc/bare_os/`**), `bare-os-protocol/lib/seed-rpc-methods.js` (authoritative **`bare_os.*`** RPC name list for **`kernel_info`**), `bare-os-protocol/protocol-meta.js` (**`BARE_OS_PROTOCOL_PACKAGE_VERSION`** for the seed handshake).
|
||||
|
||||
## Consumers
|
||||
|
||||
|
||||
@@ -174,5 +174,19 @@ export {
|
||||
BARE_OS_FEATURE9_WORKER_NET_WAVE9,
|
||||
BARE_OS_FEATURE9_TELEMETRY_AUDIT_WAVE9,
|
||||
BARE_OS_FEATURE9_DOC_CI_WAVE9,
|
||||
BARE_OS_FEATURE9_HTTP_DHT_PROXY_ROUTES_V2
|
||||
BARE_OS_FEATURE9_HTTP_DHT_PROXY_ROUTES_V2,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V10,
|
||||
BARE_OS_FEATURE10_CAP_WORD,
|
||||
BARE_OS_FEATURE10_SEED_RPC_WAVE10,
|
||||
BARE_OS_FEATURE10_REPLICATION_JSON_WAVE10,
|
||||
BARE_OS_FEATURE10_PROC_METRICS_WAVE10,
|
||||
BARE_OS_FEATURE10_BOOT_POLICY_V10,
|
||||
BARE_OS_FEATURE10_KERNEL_EXT_REGISTRY_V7,
|
||||
BARE_OS_FEATURE10_PEAR_BARE_BRIDGE_WAVE10,
|
||||
BARE_OS_FEATURE10_VFS_POSIX_WAVE10,
|
||||
BARE_OS_FEATURE10_INITD_SUBPROC_WAVE10,
|
||||
BARE_OS_FEATURE10_WORKER_NET_WAVE10,
|
||||
BARE_OS_FEATURE10_TELEMETRY_AUDIT_WAVE10,
|
||||
BARE_OS_FEATURE10_DOC_CI_WAVE10,
|
||||
BARE_OS_FEATURE10_COMPACT_READY_RPC_V4
|
||||
} from './lib/kernel-feature-bits.js'
|
||||
|
||||
@@ -11,7 +11,8 @@ import {
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V6,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V7,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V8,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V9
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V9,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V10
|
||||
} from './kernel-feature-bits.js'
|
||||
import {
|
||||
BARE_OS_SEED_RPC_METHODS,
|
||||
@@ -121,7 +122,37 @@ import {
|
||||
* mirrorDriveCompactionV4Json?: string,
|
||||
* readyGuardV3Json?: string,
|
||||
* blindRelayCircuitV2Json?: string,
|
||||
* httpDhtProxyRoutesV2Json?: string
|
||||
* httpDhtProxyRoutesV2Json?: string,
|
||||
* pearBundleTier?: string,
|
||||
* autobaseDiscoveryHintJson?: string,
|
||||
* handshakeTokenBucketV4Json?: string,
|
||||
* peerFirewallStatsV5Json?: string,
|
||||
* stagingSlotWave10Json?: string,
|
||||
* compactPingV4Json?: string,
|
||||
* seederPearRuntimeBareFingerprint?: string,
|
||||
* pearDoctorHintJson?: string,
|
||||
* pearInfoSketchJson?: string,
|
||||
* pearInspectCapsJson?: string,
|
||||
* pearDumpBudgetJson?: string,
|
||||
* pearResetGuardJson?: string,
|
||||
* pearRestartWindowJson?: string,
|
||||
* pearRunFlagsJson?: string,
|
||||
* pearBundleManifestSliceJson?: string,
|
||||
* pearPackLayoutHintJson?: string,
|
||||
* pearSeedTopologyJson?: string,
|
||||
* pearStateSnapshotJson?: string,
|
||||
* pearStampPointerJson?: string,
|
||||
* pearShakeLatencyJson?: string,
|
||||
* pearCrasherClassJson?: string,
|
||||
* pearErrorsRateHintJson?: string,
|
||||
* pearBridgeHealthJson?: string,
|
||||
* pearLinkMatrixJson?: string,
|
||||
* pearPipeBackpressureJson?: string,
|
||||
* pearOpwaitBudgetJson?: string,
|
||||
* pearTerminalCapsJson?: string,
|
||||
* readyGuardV4Json?: string,
|
||||
* mirrorDriveCompactionV5Json?: string,
|
||||
* blindRelayCircuitV3Json?: string
|
||||
* }} [opts]
|
||||
*/
|
||||
export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
@@ -222,6 +253,14 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
const seederPearApplingId = String(opts.seederPearApplingId ?? '')
|
||||
.trim()
|
||||
.slice(0, 256)
|
||||
const seederPearRuntimeBareFingerprint = String(
|
||||
opts.seederPearRuntimeBareFingerprint ?? ''
|
||||
)
|
||||
.trim()
|
||||
.slice(0, 256)
|
||||
const pearBundleTier = String(opts.pearBundleTier ?? '')
|
||||
.trim()
|
||||
.slice(0, 64)
|
||||
const compactPingEncodingHint = String(opts.compactPingEncodingHint ?? '')
|
||||
.trim()
|
||||
.slice(0, 64)
|
||||
@@ -345,7 +384,9 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
pearRuntimeFingerprint:
|
||||
seederPearRuntimeFingerprint || undefined,
|
||||
booterPackageVersion: booterPackageVersionHint || undefined,
|
||||
pearApplingId: seederPearApplingId || undefined
|
||||
pearApplingId: seederPearApplingId || undefined,
|
||||
pearRuntimeBareFingerprint:
|
||||
seederPearRuntimeBareFingerprint || undefined
|
||||
}),
|
||||
error: ''
|
||||
})
|
||||
@@ -367,6 +408,7 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
bits7: BARE_OS_KERNEL_FEATURES_STOCK_V7 >>> 0,
|
||||
bits8: BARE_OS_KERNEL_FEATURES_STOCK_V8 >>> 0,
|
||||
bits9: BARE_OS_KERNEL_FEATURES_STOCK_V9 >>> 0,
|
||||
bits10: BARE_OS_KERNEL_FEATURES_STOCK_V10 >>> 0,
|
||||
protocolPackageVersion: BARE_OS_PROTOCOL_PACKAGE_VERSION,
|
||||
booterPackageVersion: booterPackageVersionHint || undefined,
|
||||
role: 'seeder',
|
||||
@@ -407,6 +449,11 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
rs.pearUpdaterDelegate = pearUpdaterDelegateClass
|
||||
const tb3 = parseOptJson(opts.handshakeTokenBucketV3Json)
|
||||
if (tb3) rs.handshakeTokenBucketV3 = tb3
|
||||
if (pearBundleTier) rs.pearBundleTier = pearBundleTier
|
||||
const abdisc = parseOptJson(opts.autobaseDiscoveryHintJson)
|
||||
if (abdisc) rs.autobaseDiscoveryHint = abdisc
|
||||
const tb4 = parseOptJson(opts.handshakeTokenBucketV4Json)
|
||||
if (tb4) rs.handshakeTokenBucketV4 = tb4
|
||||
chan.messages[6].send({
|
||||
id: m.id,
|
||||
success: true,
|
||||
@@ -470,7 +517,7 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
result: JSON.stringify({
|
||||
role: 'seeder',
|
||||
protocol: PROTOCOL_NAME,
|
||||
schema: 6,
|
||||
schema: 7,
|
||||
activeSlot: stagingActiveSlot,
|
||||
pendingSlot: stagingPendingSlot || null,
|
||||
previousSlot: stagingPreviousSlot || null,
|
||||
@@ -478,12 +525,15 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
drainDeadlineMs: stagingDrainDeadlineMs,
|
||||
quarantine: parseOptJson(opts.stagingQuarantineJson),
|
||||
wave9: parseOptJson(opts.stagingSlotWave9Json),
|
||||
wave10: parseOptJson(opts.stagingSlotWave10Json),
|
||||
rollbackHint:
|
||||
'pending slot is rollback candidate when switching A/B; verify image before activate',
|
||||
tripleSlotNote:
|
||||
'canarySlot is optional third slot metadata for staged rollouts (operator-defined).',
|
||||
schema6Note:
|
||||
'schema 6 adds optional wave9 operator blob; schema 5 fields remain stable.',
|
||||
schema7Note:
|
||||
'schema 7 adds optional wave10 operator blob; prior fields remain stable.',
|
||||
atMs: Date.now()
|
||||
}),
|
||||
error: ''
|
||||
@@ -636,6 +686,8 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
if (sat) stats.saturationClass = sat
|
||||
const fw4 = parseOptJson(opts.peerFirewallStatsV4Json)
|
||||
if (fw4) stats.wave9 = fw4
|
||||
const fw5 = parseOptJson(opts.peerFirewallStatsV5Json)
|
||||
if (fw5) stats.wave10 = fw5
|
||||
chan.messages[6].send({
|
||||
id: m.id,
|
||||
success: true,
|
||||
@@ -643,7 +695,7 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
role: 'seeder',
|
||||
protocol: PROTOCOL_NAME,
|
||||
firewall: stats,
|
||||
firewallSchema: 4,
|
||||
firewallSchema: 5,
|
||||
atMs: Date.now()
|
||||
}),
|
||||
error: ''
|
||||
@@ -754,6 +806,7 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
perf && typeof perf.now === 'function'
|
||||
? Math.floor(perf.now() * 1000)
|
||||
: Date.now() * 1000
|
||||
const v4 = parseOptJson(opts.compactPingV4Json)
|
||||
chan.messages[6].send({
|
||||
id: m.id,
|
||||
success: true,
|
||||
@@ -762,8 +815,9 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
pong: true,
|
||||
tUs,
|
||||
protocol: PROTOCOL_NAME,
|
||||
schema: 3,
|
||||
encodingHint: compactPingEncodingHint || undefined
|
||||
schema: 4,
|
||||
encodingHint: compactPingEncodingHint || undefined,
|
||||
wave10: v4 || undefined
|
||||
}),
|
||||
error: ''
|
||||
})
|
||||
@@ -1282,6 +1336,194 @@ export function setupSeedChannel(mux, localRAM, replicateDrive, opts = {}) {
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_doctor_hint') {
|
||||
const h = parseOptJson(opts.pearDoctorHintJson)
|
||||
sendWave9Rpc({
|
||||
doctor: h || { note: 'pear-doctor health class (non-secret)' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_info_sketch') {
|
||||
const h = parseOptJson(opts.pearInfoSketchJson)
|
||||
sendWave9Rpc({
|
||||
info: h || { note: 'pear-info build/runtime pointer' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_inspect_caps') {
|
||||
const h = parseOptJson(opts.pearInspectCapsJson)
|
||||
sendWave9Rpc({
|
||||
inspect: h || { note: 'pear-inspect capability flags' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_dump_budget') {
|
||||
const h = parseOptJson(opts.pearDumpBudgetJson)
|
||||
sendWave9Rpc({
|
||||
dumpBudget: h || { note: 'pear-dump export budget class' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_reset_guard') {
|
||||
const h = parseOptJson(opts.pearResetGuardJson)
|
||||
sendWave9Rpc({
|
||||
resetGuard: h || { note: 'pear-reset policy hint' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_restart_window') {
|
||||
const h = parseOptJson(opts.pearRestartWindowJson)
|
||||
sendWave9Rpc({
|
||||
restartWindow: h || { note: 'pear-restart backoff window' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_run_flags') {
|
||||
const h = parseOptJson(opts.pearRunFlagsJson)
|
||||
sendWave9Rpc({
|
||||
runFlags: h || { note: 'pear-run mode flags' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_bundle_manifest_slice') {
|
||||
const h = parseOptJson(opts.pearBundleManifestSliceJson)
|
||||
sendWave9Rpc({
|
||||
bundleSlice: h || { note: 'pear-bundle manifest sample' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_pack_layout_hint') {
|
||||
const h = parseOptJson(opts.pearPackLayoutHintJson)
|
||||
sendWave9Rpc({
|
||||
packLayout: h || { note: 'pear-pack layout operator hint' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_seed_topology') {
|
||||
const h = parseOptJson(opts.pearSeedTopologyJson)
|
||||
sendWave9Rpc({
|
||||
seedTopology: h || { note: 'pear-seed graph sketch' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_state_snapshot') {
|
||||
const h = parseOptJson(opts.pearStateSnapshotJson)
|
||||
sendWave9Rpc({
|
||||
stateSnapshot: h || { note: 'pear-state volatile class' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_stamp_pointer') {
|
||||
const h = parseOptJson(opts.pearStampPointerJson)
|
||||
sendWave9Rpc({
|
||||
stamp: h || { note: 'pear-stamp provenance pointer' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_shake_latency') {
|
||||
const h = parseOptJson(opts.pearShakeLatencyJson)
|
||||
sendWave9Rpc({
|
||||
shakeLatency: h || { note: 'pear-shake handshake latency sketch' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_crasher_class') {
|
||||
const h = parseOptJson(opts.pearCrasherClassJson)
|
||||
sendWave9Rpc({
|
||||
crasherClass: h || { note: 'pear-crasher reporting class (non-secret)' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_errors_rate_hint') {
|
||||
const h = parseOptJson(opts.pearErrorsRateHintJson)
|
||||
sendWave9Rpc({
|
||||
errorsRate: h || { note: 'pear-errors taxonomy rate bucket' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_bridge_health') {
|
||||
const h = parseOptJson(opts.pearBridgeHealthJson)
|
||||
sendWave9Rpc({
|
||||
bridgeHealth: h || { note: 'pear-bridge health sketch' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_link_matrix') {
|
||||
const h = parseOptJson(opts.pearLinkMatrixJson)
|
||||
sendWave9Rpc({
|
||||
linkMatrix: h || { note: 'pear-link alias matrix' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_pipe_backpressure') {
|
||||
const h = parseOptJson(opts.pearPipeBackpressureJson)
|
||||
sendWave9Rpc({
|
||||
pipeBackpressure: h || { note: 'pear-pipe backlog class' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_opwait_budget') {
|
||||
const h = parseOptJson(opts.pearOpwaitBudgetJson)
|
||||
sendWave9Rpc({
|
||||
opwaitBudget: h || { note: 'pear-opwait budget' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'pear_terminal_caps') {
|
||||
const h = parseOptJson(opts.pearTerminalCapsJson)
|
||||
sendWave9Rpc({
|
||||
terminalCaps: h || { note: 'pear-terminal capability flags' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'ready_guard_v4') {
|
||||
const h = parseOptJson(opts.readyGuardV4Json)
|
||||
sendWave9Rpc({
|
||||
readyGuardV4:
|
||||
h || { matrix: [], note: 'ready-guard v4 enum expansion' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'mirror_drive_compaction_v5') {
|
||||
const h = parseOptJson(opts.mirrorDriveCompactionV5Json)
|
||||
sendWave9Rpc({
|
||||
compactionV5:
|
||||
h || { phases: [], note: 'mirror-drive compaction enum v5' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'blind_relay_circuit_v3') {
|
||||
const h = parseOptJson(opts.blindRelayCircuitV3Json)
|
||||
sendWave9Rpc({
|
||||
circuitsV3:
|
||||
h || { note: 'blind-relay circuit v3 reason codes' }
|
||||
})
|
||||
return
|
||||
}
|
||||
if (m.module === 'bare_os' && m.method === 'compact_ping_v4') {
|
||||
const perf = globalThis.performance
|
||||
const tUs =
|
||||
perf && typeof perf.now === 'function'
|
||||
? Math.floor(perf.now() * 1000)
|
||||
: Date.now() * 1000
|
||||
const v4 = parseOptJson(opts.compactPingV4Json)
|
||||
chan.messages[6].send({
|
||||
id: m.id,
|
||||
success: true,
|
||||
result: JSON.stringify({
|
||||
role: 'seeder',
|
||||
pong: true,
|
||||
tUs,
|
||||
protocol: PROTOCOL_NAME,
|
||||
schema: 4,
|
||||
variant: 'compact_ping_v4',
|
||||
wave10: v4 || { note: 'compact ping v4 dedicated RPC' },
|
||||
atMs: Date.now()
|
||||
}),
|
||||
error: ''
|
||||
})
|
||||
return
|
||||
}
|
||||
chan.messages[6].send({
|
||||
id: m.id,
|
||||
success: false,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
/** Protocol document version for this bitmask file (bump when bit semantics or governance changes). */
|
||||
export const BARE_OS_KERNEL_FEATURE_BITS_DOC = 11
|
||||
export const BARE_OS_KERNEL_FEATURE_BITS_DOC = 12
|
||||
|
||||
/**
|
||||
* Second capability word (bits 0–31, always use `>>> 0` when masking).
|
||||
@@ -474,6 +474,52 @@ export const BARE_OS_KERNEL_FEATURES_STOCK_V9 =
|
||||
BARE_OS_FEATURE9_DOC_CI_WAVE9 |
|
||||
BARE_OS_FEATURE9_HTTP_DHT_PROXY_ROUTES_V2
|
||||
|
||||
/**
|
||||
* Tenth capability word (bits 0–31, use `>>> 0`). Wave 10 mega-phase — ADR 001 §13.
|
||||
*/
|
||||
/** Word10 bit 0: `bits10` on seed `capabilities` + `/proc/bare_os_features`. */
|
||||
export const BARE_OS_FEATURE10_CAP_WORD = 1 << 0
|
||||
/** Word10 bit 1: Extended seed RPCs (pear_doctor_hint, pear_inspect_caps, …). */
|
||||
export const BARE_OS_FEATURE10_SEED_RPC_WAVE10 = 1 << 1
|
||||
/** Word10 bit 2: Replication JSON / staging schema 7 / kernel_info wave 10 adjuncts. */
|
||||
export const BARE_OS_FEATURE10_REPLICATION_JSON_WAVE10 = 1 << 2
|
||||
/** Word10 bit 3: Wave 10 `/proc/bare_os/*.json` (bare-boot, bare-rpc, pear-doctor, …). */
|
||||
export const BARE_OS_FEATURE10_PROC_METRICS_WAVE10 = 1 << 3
|
||||
/** Word10 bit 4: Boot policy v10 (`requireFeatureBits10`, `requireBareBootMin`, …). */
|
||||
export const BARE_OS_FEATURE10_BOOT_POLICY_V10 = 1 << 4
|
||||
/** Word10 bit 5: Kernel extension registry schema 7 + extensionSignerPins v3 hints. */
|
||||
export const BARE_OS_FEATURE10_KERNEL_EXT_REGISTRY_V7 = 1 << 5
|
||||
/** Word10 bit 6: Pear/Bare bridge wave 10 (doctor hint, bare logger tap, …). */
|
||||
export const BARE_OS_FEATURE10_PEAR_BARE_BRIDGE_WAVE10 = 1 << 6
|
||||
/** Word10 bit 7: VFS/POSIX/shell wave 10 (ssh-keygen stub, xargs -P, tar xattr). */
|
||||
export const BARE_OS_FEATURE10_VFS_POSIX_WAVE10 = 1 << 7
|
||||
/** Word10 bit 8: Initd / subprocess / git worktree policy wave 10. */
|
||||
export const BARE_OS_FEATURE10_INITD_SUBPROC_WAVE10 = 1 << 8
|
||||
/** Word10 bit 9: Workers / sandbox / net wave 10 (`sysproc:*`, mTLS map, happy eyeballs v4). */
|
||||
export const BARE_OS_FEATURE10_WORKER_NET_WAVE10 = 1 << 9
|
||||
/** Word10 bit 10: Telemetry NDJSON v9 / OTel v7 / audit v7. */
|
||||
export const BARE_OS_FEATURE10_TELEMETRY_AUDIT_WAVE10 = 1 << 10
|
||||
/** Word10 bit 11: CI (`verify-kernel-roadmap-wave10`). */
|
||||
export const BARE_OS_FEATURE10_DOC_CI_WAVE10 = 1 << 11
|
||||
/** Word10 bit 12: Seed RPC `compact_ping_v4` + `ready_guard_v4` surface. */
|
||||
export const BARE_OS_FEATURE10_COMPACT_READY_RPC_V4 = 1 << 12
|
||||
|
||||
/** Stock booter tenth word (wave 10). */
|
||||
export const BARE_OS_KERNEL_FEATURES_STOCK_V10 =
|
||||
BARE_OS_FEATURE10_CAP_WORD |
|
||||
BARE_OS_FEATURE10_SEED_RPC_WAVE10 |
|
||||
BARE_OS_FEATURE10_REPLICATION_JSON_WAVE10 |
|
||||
BARE_OS_FEATURE10_PROC_METRICS_WAVE10 |
|
||||
BARE_OS_FEATURE10_BOOT_POLICY_V10 |
|
||||
BARE_OS_FEATURE10_KERNEL_EXT_REGISTRY_V7 |
|
||||
BARE_OS_FEATURE10_PEAR_BARE_BRIDGE_WAVE10 |
|
||||
BARE_OS_FEATURE10_VFS_POSIX_WAVE10 |
|
||||
BARE_OS_FEATURE10_INITD_SUBPROC_WAVE10 |
|
||||
BARE_OS_FEATURE10_WORKER_NET_WAVE10 |
|
||||
BARE_OS_FEATURE10_TELEMETRY_AUDIT_WAVE10 |
|
||||
BARE_OS_FEATURE10_DOC_CI_WAVE10 |
|
||||
BARE_OS_FEATURE10_COMPACT_READY_RPC_V4
|
||||
|
||||
/** Bit 0: IPC fan-out / pub-sub style channels (booter `bareOsIpc`). */
|
||||
export const BARE_OS_FEATURE_IPC_FANOUT = 1 << 0
|
||||
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
* Published package version string for seed-channel handshake (keep in sync with package.json).
|
||||
* @type {string}
|
||||
*/
|
||||
export const BARE_OS_PROTOCOL_PACKAGE_VERSION = '0.5.0'
|
||||
export const BARE_OS_PROTOCOL_PACKAGE_VERSION = '0.6.0'
|
||||
|
||||
@@ -65,7 +65,31 @@ export const BARE_OS_SEED_RPC_METHOD_SHORT_NAMES = [
|
||||
'mirror_drive_compaction_v4',
|
||||
'ready_guard_v3',
|
||||
'blind_relay_circuit_v2',
|
||||
'http_dht_proxy_routes_v2'
|
||||
'http_dht_proxy_routes_v2',
|
||||
'pear_doctor_hint',
|
||||
'pear_info_sketch',
|
||||
'pear_inspect_caps',
|
||||
'pear_dump_budget',
|
||||
'pear_reset_guard',
|
||||
'pear_restart_window',
|
||||
'pear_run_flags',
|
||||
'pear_bundle_manifest_slice',
|
||||
'pear_pack_layout_hint',
|
||||
'pear_seed_topology',
|
||||
'pear_state_snapshot',
|
||||
'pear_stamp_pointer',
|
||||
'pear_shake_latency',
|
||||
'pear_crasher_class',
|
||||
'pear_errors_rate_hint',
|
||||
'pear_bridge_health',
|
||||
'pear_link_matrix',
|
||||
'pear_pipe_backpressure',
|
||||
'pear_opwait_budget',
|
||||
'pear_terminal_caps',
|
||||
'ready_guard_v4',
|
||||
'mirror_drive_compaction_v5',
|
||||
'blind_relay_circuit_v3',
|
||||
'compact_ping_v4'
|
||||
]
|
||||
|
||||
/** @type {Set<string>} */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "bare-os-protocol",
|
||||
"version": "0.5.0",
|
||||
"version": "0.6.0",
|
||||
"description": "MBR layout, swarm topic, and Protomux encodings for bare-operating-system",
|
||||
"type": "module",
|
||||
"main": "./index.js",
|
||||
|
||||
@@ -17,7 +17,8 @@ import {
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V6,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V7,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V8,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V9
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V9,
|
||||
BARE_OS_KERNEL_FEATURES_STOCK_V10
|
||||
} from './lib/kernel-feature-bits.js'
|
||||
import { msgDataEncoding, msgSearchReqEncoding } from './lib/messages.js'
|
||||
test('topicKey is deterministic 32-byte hash', (t) => {
|
||||
@@ -98,3 +99,7 @@ test('STOCK_V8 is non-zero wave-8 advertisement', (t) => {
|
||||
test('STOCK_V9 is non-zero wave-9 advertisement', (t) => {
|
||||
t.ok((BARE_OS_KERNEL_FEATURES_STOCK_V9 >>> 0) > 0)
|
||||
})
|
||||
|
||||
test('STOCK_V10 is non-zero wave-10 advertisement', (t) => {
|
||||
t.ok((BARE_OS_KERNEL_FEATURES_STOCK_V10 >>> 0) > 0)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user