code wiki / _hdl_build / nx_stackaudit_targets_gate.nx
nx_stackaudit_targets_gate.nx source
↩ module page · 73 lines · 3056 B
1// nx_stackaudit_targets_gate.nx -- gate for the loop-closer. Proves the EXACT production code path
2// (sax_should_emit + sax_emit_targets_core) against a /tmp queue it writes itself. NEGATIVE CONTROLS
3// are load-bearing: idempotency (an id already in the queue is NOT re-emitted -- the invariant that
4// makes per-beat emission safe), a healthy rung is NEVER targeted, and a re-run against the just-
5// written queue emits ZERO. verdict GREEN iff 6/6. license_tier: ORIGINAL
6import "nx_stackaudit_lib.nx"
7
8func stg_row(name: *u8, ok: i64) -> i64 {
9 _p("STGATE row=" as *u8); _p(name)
10 if ok == 1 { _p(" verdict=PASS\n" as *u8) } else { _p(" verdict=FAIL\n" as *u8) }
11 if ok == 1 { return 1 }
12 return 0
13}
14
15func main(argc: i64, argv: *i64) -> i64 {
16 var pass: i64 = 0
17 let buf: *u8 = sys_mmap(4096)
18
19 // T1 id shape
20 let idp: *u8 = sys_mmap(96)
21 sax_mkid("intelligence" as *u8, idp)
22 var ok: i64 = 0
23 if el_streq(idp, "STACK-intelligence" as *u8) == 1 { ok = 1 }
24 pass = pass + stg_row("T1-id-shape" as *u8, ok)
25
26 // T2 unhealthy + not-in-queue -> emit
27 let emptyq: *u8 = "\n"
28 ok = 0
29 if sax_should_emit("intelligence" as *u8, 1, emptyq, 1) == 1 { ok = 1 }
30 pass = pass + stg_row("T2-unhealthy-emit" as *u8, ok)
31
32 // T3 NEG (load-bearing): id ALREADY in queue -> NOT re-emitted (idempotency)
33 let seededq: *u8 = "STACK-intelligence\tSTK\t9\tM\n"
34 ok = 0
35 if sax_should_emit("intelligence" as *u8, 1, seededq, 27) == 0 { ok = 1 }
36 pass = pass + stg_row("T3-neg-idempotent" as *u8, ok)
37
38 // T4 NEG: a HEALTHY rung is never targeted regardless of the queue
39 ok = 0
40 if sax_should_emit("data" as *u8, 0, emptyq, 1) == 0 { ok = 1 }
41 pass = pass + stg_row("T4-neg-healthy-never" as *u8, ok)
42
43 // T5 end-to-end: emit against a FRESH /tmp queue -> emitted>=0, done_marks>0 (some rungs healthy)
44 ss_writefile("/tmp/sa_tq.tsv" as *u8, "# fresh stack target queue\n" as *u8, 26)
45 let szp: *i64 = sys_mmap(16) as *i64
46 let qb1: *u8 = ss_readall("/tmp/sa_tq.tsv" as *u8, szp)
47 var qn1: i64 = szp[0]
48 if qn1 < 0 { qn1 = 0 }
49 let qf1: i64 = sys_openat_append("/tmp/sa_tq.tsv" as *u8, 0x1a4)
50 let out1: *i64 = sys_mmap(32) as *i64
51 sax_emit_targets_core(qb1, qn1, qf1, 0 - 1, out1)
52 if qf1 >= 0 { sys_close(qf1) }
53 ok = 0
54 if out1[0] >= 0 { if out1[1] > 0 { ok = 1 } }
55 pass = pass + stg_row("T5-e2e-emit" as *u8, ok)
56
57 // T6 NEG (the idempotency invariant end-to-end): re-run against the NOW-written queue -> 0 emitted
58 let qb2: *u8 = ss_readall("/tmp/sa_tq.tsv" as *u8, szp)
59 var qn2: i64 = szp[0]
60 if qn2 < 0 { qn2 = 0 }
61 let out2: *i64 = sys_mmap(32) as *i64
62 sax_emit_targets_core(qb2, qn2, 0 - 1, 0 - 1, out2)
63 ok = 0
64 if out2[0] == 0 { ok = 1 }
65 pass = pass + stg_row("T6-neg-rerun-zero" as *u8, ok)
66
67 _p("STGATE pass=" as *u8); _fn(1, pass); _p("/6 verdict=" as *u8)
68 var rc: i64 = 1
69 if pass == 6 { rc = 0 }
70 if rc == 0 { _p("GREEN\n" as *u8) } else { _p("RED\n" as *u8) }
71 sys_exit(rc)
72 return rc
73}