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}