code wiki / _hdl_build / nx_meet_store_gate.nx
nx_meet_store_gate.nx source
↩ module page · 44 lines · 3273 B
1// nx_meet_store_gate.nx -- liar-kill gate for P4 (durable member/application store over the seg-store). Proves
2// store -> read-back byte-exact, the meet:ids index tracks ids, an UPDATE (latest-value-wins) reflects the new
3// record (PENDING -> MEMBER), an absent id reads -1, and a never-stored id is not indexed (teeth). Idempotent-safe
4// on a persistent store. expect_exit: 0
5import "nx_syscalls.nx"
6import "nx_meet_lib.nx"
7import "nx_meet_store.nx"
8
9func eq_n(buf: *u8, len: i64, exp: *u8) -> i64 {
10 if len != mlen(exp) { return 0 }
11 var i: i64 = 0
12 while i < len { if buf[i] != exp[i] { return 0 } i = i + 1 }
13 return 1
14}
15
16func main() -> i64 {
17 mputs("=== nx_meet_store_gate: durable member store (seg-store, NO TSV) ===\n" as *u8)
18 let r1: *u8 = "kind: apply\nname: Jane Doe\nstatus: SCREENED" as *u8
19 let r1b: *u8 = "kind: apply\nname: Jane Doe\nstatus: MEMBER" as *u8
20 let r2: *u8 = "kind: hire\nname: Acme Inc\nstatus: SCREENED" as *u8
21 let pq: *i64 = sys_mmap(16) as *i64
22 let lq: *i64 = sys_mmap(16) as *i64
23
24 var pass: i64 = 0; var fail: i64 = 0
25 // put + read back byte-exact
26 if meet_store_put("m-gate-001" as *u8, r1) == 0 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL put-1\n" as *u8) }
27 if meet_store_get("m-gate-001" as *u8, pq, lq) == 1 { if eq_n(pq[0] as *u8, lq[0], r1) == 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL roundtrip-1\n" as *u8) } } else { fail=fail+1; mputs(" FAIL get-1-absent\n" as *u8) }
28 if meet_store_indexed("m-gate-001" as *u8) == 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL not-indexed-1\n" as *u8) }
29 // a second member
30 if meet_store_put("m-gate-002" as *u8, r2) == 0 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL put-2\n" as *u8) }
31 if meet_store_get("m-gate-002" as *u8, pq, lq) == 1 { if eq_n(pq[0] as *u8, lq[0], r2) == 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL roundtrip-2\n" as *u8) } } else { fail=fail+1; mputs(" FAIL get-2-absent\n" as *u8) }
32 // UPDATE m-001 (latest-value-wins: SCREENED -> MEMBER)
33 if meet_store_put("m-gate-001" as *u8, r1b) == 0 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL update-1\n" as *u8) }
34 if meet_store_get("m-gate-001" as *u8, pq, lq) == 1 { if eq_n(pq[0] as *u8, lq[0], r1b) == 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL update-not-latest\n" as *u8) } } else { fail=fail+1; mputs(" FAIL get-1b-absent\n" as *u8) }
35 // index stays consistent after the idempotent update
36 if meet_store_indexed("m-gate-001" as *u8) == 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL index-lost-after-update\n" as *u8) }
37 // TEETH: an absent id reads -1, and a never-stored id is not indexed
38 if meet_store_get("m-gate-nope" as *u8, pq, lq) == 0 - 1 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL absent-not--1\n" as *u8) }
39 if meet_store_indexed("m-gate-nope" as *u8) == 0 { pass=pass+1 } else { fail=fail+1; mputs(" FAIL phantom-indexed\n" as *u8) }
40
41 mputs("MEET-STORE-GATE pass=" as *u8); mnum(pass); mputs(" fail=" as *u8); mnum(fail)
42 if fail == 0 { mputs(" verdict=GREEN (durable member store: roundtrip + index + latest-wins update, sovereign seg-store no-TSV)\n" as *u8); sys_exit(0); return 0 }
43 mputs(" verdict=RED\n" as *u8); sys_exit(1); return 1
44}