code wiki / _hdl_build / nx_ws_repair_gate.nx

nx_ws_repair_gate.nx

buildroot/runtime/_hdl_build/nx_ws_repair_gate.nx

8696 B215 linesdepth 5pulls 7 transitivereach 0 importersview sourcekind gate/prooftopic ws
docsdependenciesstructsconstsfunctions

about

nx_ws_repair_gate.nx -- the REFEREE for WMS-R9 (ledger->registry crash repair). Proves the reflog-recovery trick AND that the test can detect failure (no false green): T1 rebuild-from-loss : build a reflog of known transitions for RP_NWS workstreams, then ledger_rebuild into a FRESH (= wiped/lost) registry prefix. EVERY ws's recovered state field MUST equal the reflog's final state; rebuilt==NWS; flagged==0. (the registry was reconstructed entirely from history.) T2 corruption-repair : overwrite ws:0 with a WRONG state (a stale/torn registry record), re-run ledger_rebuild -> the record is REPAIRED back to the reflog's authoritative state. (proves rebuild REPAIRS, not merely populates.) T3 no-phantom (NEG) : a ws-id that NEVER appears in the reflog MUST NOT exist in the rebuilt registry (rebuild never fabricates a ref it didn't see). T4 torn-surfaced(NEG): a reflog containing a deliberately-broken record -> ledger_rebuild FLAGS it (flagged>=1), never silently mis-applies. flagged==0 => RED. Each artifact uses a per-run unique /tmp path (disposable; no clearing). Self-log via fa_appendz (lock-framed, dogfoods R0b). Evidence -> knowledge/status/ws_repair_gate.log. GREEN(0) iff T1..T4. Sovereign: nx_ws_repair + nx_ws_ledger + nx_workstream_store + nx_framed_append + nx_syscalls. license_tier: ORIGINAL

dependencies 5 imports · 0 importers

nx_ws_repair.nx nx_ws_ledger.nx nx_workstream_store.nx nx_framed_append.nx nx_syscalls.nx nx_ws_repair_gate.nx

imports: nx_ws_repair.nxnx_ws_ledger.nxnx_workstream_store.nxnx_framed_append.nxnx_syscalls.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main sys_now_realtime_sec sys_mmap sys_clock_gettime_real sys_mmap ↻ rp_path rp_cat rp_catn sys_mmap ↻ ledger_append sys_now_realtime_sec ↻ sys_mmap ↻ wsl_build fa_cat fa_catn sys_mmap ↻ fa_append sys_mmap ↻ sys_openat_append sys_flock fa_write_all sys_write sys_close rp_expect ledger_rebuild sys_mmap ↻ ledger_replay sys_mmap ↻ sys_read_file sys_openat_rd sys_lseek sys_mmap ↻ sys_read sys_close ↻ wsl_wellformed wsl_field wsl_at sys_mmap ↻ wsl_parse_int wr_key

structs

none

consts

25const RP_NWS: i64 = 8 // test workstreams ws-id 0..7
26const RP_MAXWS: i64 = 64
27const RP_REC: i64 = 256
28const RP_LOG: *u8 = "knowledge/status/ws_repair_gate.log"

functions

31func rp_expect(w: i64) -> i64 { return (w * 2 + 1) % 5 }
called by 1: main
34func so(s: *u8) -> i64
called by 1: main calls 1: sys_write
40func son(v: i64) -> i64
called by 1: main calls 2: sys_mmapsys_write
55func rp_cat(dst: *u8, off: i64, s: *u8) -> i64
60func rp_catn(dst: *u8, off: i64, v: i64) -> i64
called by 3: rp_pathrp_get_statemain calls 1: sys_mmap
73func rp_atoi(s: *u8) -> i64
called by 1: rp_get_state
85func rp_path(out: *u8, tag: *u8, epoch: i64, suffix: *u8) -> i64
called by 1: main calls 2: rp_catrp_catn
96func rp_rawline(path: *u8, s: *u8) -> i64
107func rp_get_state(prefix: *u8, ws: i64) -> i64
121func main() -> i64