Files
bare-operating-system/packages/bare-os-booter/lib/bare-os-proc-replication-operator-surface.js
T
Raven Scott 0d732bd41b feat(booter): POSIX/P2P roadmap — ctx 1.41.0, hrpc audit, warm-cache, Pear proc
- Bump BARE_OS_CTX_API_VERSION to 1.41.0; align syscalls.example, compat matrix,
  POSIX dashboard, and doc-contract verifier
- Stock hrpc: BARE_OS_HRPC_AUDIT chain rows; BARE_OS_HRPC_EMIT_UNLISTED for
  bare-os:hrpc-request; document seed/hrpc boundaries in KERNEL_CONTRACT +
  protocol CHANGELOG
- VFS: bareOsEvictWarmReadPrefixes; BARE_OS_VFS_WARM_CACHE_PREFIX_INVALIDATE +
  replicationLive schema 2; warm cache stats schema 2; hyperblobs gate metrics +
  failed-write counter
- maybeMergeBareFromDrive: BARE_OS_BARE_STDLIB_RESOLVE_CONCURRENCY (parallel reads,
  manifest order preserved)
- Word-7 proc: pear_runtime_channel.json + vfs maps/tests; host env passthrough
- Coreutils: export bareAwkRun for tests; build strips export in shipped awk;
  nextfile smoke test; getconf _SC_PAGESIZE test; man/hawk handbook tweaks
- Security/docs: vault AEAD tamper test in test.identity.js; vault threat model +
  users-manual; scripts/verify-doc-contracts.mjs in pretest
- Fix /proc readdir golden list order for new proc node; sync seeder kernel
2026-04-05 00:32:40 -04:00

194 lines
6.4 KiB
JavaScript

/**
* Capability word 6 optional `/proc/bare_os/*.json` payloads (env-injected or derived; bounded, non-secret).
* @param {string} id
* @param {Record<string, string>} env
* @param {{
* ipcStats?: Record<string, unknown> | null,
* delegateInflight?: unknown,
* delegateRateBuckets?: unknown
* }} [extras]
*/
export function buildBareOsReplicationOperatorSurfaceProcJson(id, env, extras = {}) {
const now = Date.now()
const esc = (k) => String(env[k] ?? '').trim()
function parseJsonEnv(key) {
const raw = esc(key)
if (!raw) return null
try {
const o = JSON.parse(raw)
return o && typeof o === 'object' ? o : null
} catch {
return { schema: 1, error: 'invalid_json', key, atMs: now }
}
}
switch (id) {
case 'udx_extended':
return {
schema: 1,
extended: parseJsonEnv('BARE_OS_UDX_EXTENDED_STATS_JSON'),
note: 'UDX / transport extended counters from host via env.',
atMs: now
}
case 'dht_status':
return {
schema: 1,
dht: parseJsonEnv('BARE_OS_DHT_STATUS_JSON'),
note: 'Bounded DHT reachability sketch; guest does not verify routing.',
atMs: now
}
case 'replication_backpressure':
return {
schema: 1,
backpressure: parseJsonEnv('BARE_OS_REPLICATION_BACKPRESSURE_JSON'),
atMs: now
}
case 'ipc_backpressure': {
const st = extras.ipcStats
return {
schema: 1,
ipc: st && typeof st === 'object' ? st : null,
note: 'FIFO / channel depth snapshot from bareOsIpc.stats when available.',
atMs: now
}
}
case 'delegate_red':
return {
schema: 1,
template: 'rate-errors-duration',
delegateInflight: extras.delegateInflight ?? null,
delegateRateBuckets: extras.delegateRateBuckets ?? null,
overlay: parseJsonEnv('BARE_OS_DELEGATE_RED_JSON'),
atMs: now
}
case 'build_attestation_pointer':
return {
schema: 1,
pointer: parseJsonEnv('BARE_OS_BUILD_ATTESTATION_POINTER_JSON'),
note: 'Opaque pointer only; no attestation verification in-guest.',
atMs: now
}
case 'pear_ipc_health':
return {
schema: 1,
health: parseJsonEnv('BARE_OS_PEAR_IPC_HEALTH_JSON'),
atMs: now
}
case 'hypercore_lengths':
return {
schema: 1,
lengths: parseJsonEnv('BARE_OS_HYPERCORE_LENGTHS_JSON'),
atMs: now
}
case 'slo_hints':
return {
schema: 1,
slo: parseJsonEnv('BARE_OS_SLO_HINTS_JSON'),
note: 'Documentation-first SLO targets for replication.',
atMs: now
}
case 'locale':
return {
schema: 1,
locale: esc('BARE_OS_LOCALE') || null,
charset: esc('BARE_OS_CHARSET') || 'utf-8',
atMs: now
}
case 'worker_budget':
return {
schema: 2,
wallMsMax: esc('BARE_OS_BIN_WORKER_WALL_MS_MAX') || null,
cpuMsMax: esc('BARE_OS_BIN_WORKER_CPU_MS_MAX') || null,
kernelRunnerClassCpuMsMax: (() => {
const r = esc('BARE_OS_KERNEL_RUNNER_CLASS_CPU_MS_MAX_JSON')
if (!r) return null
try {
const o = JSON.parse(r)
return o && typeof o === 'object' ? o : null
} catch {
return { error: 'invalid_json' }
}
})(),
offloadAllowHint:
'BARE_OS_BIN_WORKER_ALLOW may include metaproc:* for getfacl,setfacl,xattr.',
note: 'Optional wall/CPU caps for bin-worker offload; class map is host-supplied JSON.',
atMs: now
}
case 'sandbox_profile':
return {
schema: 1,
profile: esc('BARE_OS_SANDBOX_PROFILE_NAME') || null,
capabilities: parseJsonEnv('BARE_OS_SANDBOX_CAPABILITIES_JSON'),
extensionUntrustedPathPrefix:
esc('BARE_OS_EXTENSION_PATH_PREFIX') || null,
seccompLikeProfileName: esc('BARE_OS_SECCOMP_LIKE_PROFILE') || null,
note: 'Host-interpreted capability JSON; guest makes no seccomp claims. Path prefix constrains untrusted extension VFS roots when set.',
atMs: now
}
case 'dns_map_active':
return {
schema: 1,
summary: summarizeDnsMap(esc('BARE_OS_DNS_MAP_JSON')),
atMs: now
}
case 'git_delegate_stats':
return {
schema: 1,
stats: parseJsonEnv('BARE_OS_GIT_DELEGATE_STATS_JSON'),
atMs: now
}
case 'corestore_snapshot':
return {
schema: 2,
snapshotTag: esc('BARE_OS_SEED_CORESTORE_SNAPSHOT_TAG') || null,
snapshotHintsJson: parseJsonEnv('BARE_OS_SEED_SNAPSHOT_HINTS_JSON'),
operatorSnapshotState: parseJsonEnv(
'BARE_OS_CORESTORE_SNAPSHOT_STATE_JSON'
),
paused:
esc('BARE_OS_CORESTORE_SNAPSHOT_PAUSED') === '1' ||
esc('BARE_OS_CORESTORE_SNAPSHOT_PAUSED') === 'true',
replicationPausedEnv: Boolean(esc('BARE_OS_REPLICATION_PAUSED')),
note:
'Operator surface for Corestore snapshot tags, seeder snapshot_hints JSON, and optional host **`BARE_OS_CORESTORE_SNAPSHOT_STATE_JSON`** (non-secret lengths / paused flags from corestore-snapshot-style tooling). Replication runs on the host/seeder.',
atMs: now
}
case 'replication_operator_panel':
return {
schema: 1,
panel: parseJsonEnv('BARE_OS_REPLICATION_OPERATOR_PANEL_JSON'),
hypercoreLengths: parseJsonEnv('BARE_OS_HYPERCORE_LENGTHS_JSON'),
replicationBackpressure: parseJsonEnv(
'BARE_OS_REPLICATION_BACKPRESSURE_JSON'
),
peerAllowlistHexConfigured: Boolean(esc('BARE_OS_PEER_ALLOWLIST_HEX')),
dhtStatus: parseJsonEnv('BARE_OS_DHT_STATUS_JSON'),
note:
'Merged P2P replication operator view; host sets BARE_OS_REPLICATION_OPERATOR_PANEL_JSON for authoritative tree length / fork / backlog fields.',
atMs: now
}
default:
return { schema: 1, error: 'unknown_wave6_proc', id, atMs: now }
}
}
/**
* @param {string} raw
*/
function summarizeDnsMap(raw) {
if (!raw) return { active: false, entryCount: 0 }
try {
const o = JSON.parse(raw)
if (!o || typeof o !== 'object') return { active: false, entryCount: 0 }
const keys = Object.keys(o)
return {
active: true,
entryCount: Math.min(keys.length, 256),
sampleKeys: keys.slice(0, 8)
}
} catch {
return { active: false, error: 'invalid_BARE_OS_DNS_MAP_JSON' }
}
}