code wiki / _hdl_build / nx_build_registry.nx

nx_build_registry.nx source

↩ module page · 57 lines · 3048 B

1// nx_build_registry.nx -- R1 GATE for the build-registrar: proves the nx_build_registry_lib SSOT does 2// submit + idempotent dedup (re-submit keeps distinct stable) + latest-wins update + registered lookup, 3// with a NEGATIVE CONTROL (an organ never submitted must read back unregistered). Logic lives in the lib; 4// this file is the runnable gate. license_tier: ORIGINAL expect_exit: 0 5import "nx_build_registry_lib.nx" 6import "nx_syscalls.nx" 7 8func br_p(s: *u8) -> i64 { let n: i64 = br_len(s); sys_write(1, s, n); return 0 } 9func br_pn(v: i64) -> i64 { 10 let bb: *u8 = sys_mmap(28); var m: i64 = v 11 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 12 let t: *u8 = sys_mmap(28); var k: i64 = 0 13 if m == 0 { t[0] = 48 as u8; k = 1 } 14 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 15 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 16 sys_write(1, bb, k); return 0 17} 18 19func main() -> i64 { 20 br_p("=== nx_build_registry: R1 build-registrar (Librarian SSOT of backend organs) ===\n" as *u8) 21 let store: *u8 = "/tmp/nx_build_registry_test.log" as *u8 22 let tfd: i64 = sys_openat_wr(store, 420) // open-wr carries O_TRUNC -> hermetic fresh store 23 if tfd >= 0 { sys_close(tfd) } 24 25 br_submit(store, "nx_ws_active_board" as *u8, "LIB" as *u8, "BUILT" as *u8) 26 br_submit(store, "nx_build_gov_census" as *u8, "PM" as *u8, "BUILT" as *u8) 27 let d1: i64 = br_distinct(store) 28 br_submit(store, "nx_ws_active_board" as *u8, "LIB" as *u8, "UPDATED" as *u8) // re-register A 29 let d2: i64 = br_distinct(store) 30 31 let stbuf: *u8 = sys_mmap(128) 32 let gotA: i64 = br_get_state(store, "nx_ws_active_board" as *u8, stbuf) 33 let regA: i64 = br_registered(store, "nx_ws_active_board" as *u8) 34 let regC: i64 = br_registered(store, "nx_never_built" as *u8) 35 36 br_p(" submitted 2 organs; distinct after = " as *u8); br_pn(d1); br_p(" (expect 2)\n" as *u8) 37 br_p(" re-submitted nx_ws_active_board; distinct after = " as *u8); br_pn(d2); br_p(" (expect 2 = idempotent)\n" as *u8) 38 br_p(" latest state of nx_ws_active_board = " as *u8); br_p(stbuf); br_p(" (expect UPDATED = latest-wins)\n" as *u8) 39 br_p(" registered(nx_ws_active_board) = " as *u8); br_pn(regA); br_p(" (expect 1)\n" as *u8) 40 br_p(" registered(nx_never_built) = " as *u8); br_pn(regC); br_p(" (expect 0 = neg-control)\n" as *u8) 41 42 var pass: i64 = 0 43 var ok: i64 = 1 44 if d1 == 2 { pass = pass + 1 } else { ok = 0 } 45 if d2 == 2 { pass = pass + 1 } else { ok = 0 } 46 if br_streq(stbuf, "UPDATED" as *u8) == 1 { pass = pass + 1 } else { ok = 0 } 47 if gotA == 1 { if regA == 1 { pass = pass + 1 } else { ok = 0 } } else { ok = 0 } 48 if regC == 0 { pass = pass + 1 } else { ok = 0 } 49 50 br_p(" RESULT pass=" as *u8); br_pn(pass); br_p("/5 verdict=" as *u8) 51 if ok == 1 { 52 br_p("GREEN (submit + idempotent dedup + latest-wins update + registered lookup + neg-control)\n" as *u8) 53 sys_exit(0); return 0 54 } 55 br_p("RED\n" as *u8) 56 sys_exit(1); return 1 57}