code wiki / _hdl_build / nx_k3_arch_census_gate.nx
nx_k3_arch_census_gate.nx source
↩ module page · 101 lines · 4616 B
1// nx_k3_arch_census_gate.nx -- gate for the K3-class arch census (authored ON nx_gate_verdict).
2// Load-bearing tooth T2: a HAVE/PARTIAL claim with evidence "none" is LIAR-KILLED to GAP -- our K3
3// coverage can never be inflated past what a shipped gate proves.
4// T1 coverage computed from the store (points/total/permille from HAVE=2/PARTIAL=1/GAP=0)
5// T2 LIAR-KILL: HAVE-claim + evidence none -> effective GAP + liar_killed count (anti-fake)
6// T3 effective-GAP rows surface under research_opps with their fetch guidance
7// T4 fail-closed on an unseeded store
8// T5 deterministic (two runs byte-identical)
9// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
10import "nx_store_seed_lib.nx"
11import "nx_seg_store.nx"
12import "nx_deploy_lib.nx"
13import "nx_gate_verdict.nx"
14import "nx_syscalls.nx"
15
16const KG_CAP: i64 = 262144
17const KG_PFX: i64 = 128
18
19func kg_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
20func kg_has(q: *u8, n: i64, s: *u8) -> i64 {
21 let sn: i64 = kg_slen(s)
22 if sn == 0 { return 1 }
23 var i: i64 = 0
24 while i + sn <= n {
25 var hit: i64 = 1
26 var j: i64 = 0
27 while j < sn { if q[i+j] != s[j] { hit = 0; j = sn } else { j = j + 1 } }
28 if hit == 1 { return 1 }
29 i = i + 1
30 }
31 return 0
32}
33func kg_mkpfx(dst: *u8, stem: *u8, epoch: i64) -> i64 {
34 var o: i64 = ss_cat(dst, 0, stem)
35 o = ss_catn(dst, o, epoch)
36 o = ss_cat(dst, o, "-" as *u8)
37 dst[o] = 0 as u8
38 return o
39}
40
41func main() -> i64 {
42 let ctr: *i64 = gv_ctr()
43 gv_head("nx_k3_arch_census gate -- honest K3 coverage, liar-killed (no inflation past shipped evidence)" as *u8)
44 let elf: *u8 = "/tmp/nx_k3_arch_census.sov.elf" as *u8
45 let outf: *u8 = "/tmp/kg_run.out" as *u8
46 let epoch: i64 = sys_now_realtime_sec()
47 let px: *u8 = sys_mmap(KG_PFX)
48 kg_mkpfx(px, "/tmp/kgf" as *u8, epoch)
49 // fixture: k1 strong(HAVE/HAVE, evid) ; k2 HAVE/PARTIAL but evidence=none -> LIAR-KILL ; k3 PARTIAL/GAP evid
50 let b: *u8 = sys_mmap(KG_CAP)
51 var o: i64 = 0
52 o = ss_cat(b, o, "k1\tstrong feature\tHAVE\tHAVE\tgate5of5\tmech1\tfetch-a\n" as *u8)
53 o = ss_cat(b, o, "k2\tinflated feature\tHAVE\tPARTIAL\tnone\tmech2\tFETCHKILL-target\n" as *u8)
54 o = ss_cat(b, o, "k3\tpartial feature\tPARTIAL\tGAP\tprims-exist\tmech3\tfetch-c\n" as *u8)
55 sts_seed(px, b, o)
56
57 let av: *i64 = sys_mmap(8*8) as *i64
58 av[0] = px as i64
59 let rc: i64 = dep_run_capture(elf, av, 1, outf)
60 let d: *u8 = sys_mmap(KG_CAP)
61 let dn: i64 = dp_read(outf, d, KG_CAP - 4)
62
63 // T1: coverage = k1(4) + k2(0 killed) + k3(1) = 5 / 12 = 416 permille
64 var t1: i64 = 0
65 if rc == 0 { if kg_has(d, dn, "\x22points\x22:5" as *u8) == 1 { if kg_has(d, dn, "\x22total\x22:12" as *u8) == 1 { if kg_has(d, dn, "\x22permille\x22:416" as *u8) == 1 { t1 = 1 } } } }
66 gv_check("T1 coverage computed from store (5/12 = 416 permille)" as *u8, t1, ctr)
67
68 // T2 LIAR-KILL: k2 claimed HAVE but evidence none -> effective GAP + liar_killed 1
69 var t2: i64 = 0
70 if kg_has(d, dn, "\x22liar_killed\x22:1}" as *u8) == 1 { if kg_has(d, dn, "\x22id\x22:\x22k2\x22,\x22feature\x22:\x22inflated feature\x22,\x22serve_pts\x22:0,\x22train_pts\x22:0,\x22effective\x22:\x22GAP\x22,\x22liar_killed\x22:1" as *u8) == 1 { t2 = 1 } }
71 gv_check("T2 LIAR-KILL: HAVE-claim + no evidence -> effective GAP + counted (no inflation)" as *u8, t2, ctr)
72
73 // T3: k2 gap surfaces in research_opps with its fetch text
74 var t3: i64 = 0
75 if kg_has(d, dn, "\x22research_opps\x22:[\x22k2: FETCHKILL-target\x22]" as *u8) == 1 { t3 = 1 }
76 gv_check("T3 effective-GAP rows -> research_opps with fetch guidance" as *u8, t3, ctr)
77
78 // T4: fail-closed unseeded
79 av[0] = "/tmp/kg_nope-" as *u8 as i64
80 let rc4: i64 = dep_run_capture(elf, av, 1, outf)
81 var t4: i64 = 0
82 if rc4 != 0 { t4 = 1 }
83 gv_check("T4 unseeded store -> fail-closed (no census over missing data)" as *u8, t4, ctr)
84
85 // T5: deterministic
86 av[0] = px as i64
87 let rc5: i64 = dep_run_capture(elf, av, 1, outf)
88 let d2: *u8 = sys_mmap(KG_CAP)
89 let dn2: i64 = dp_read(outf, d2, KG_CAP - 4)
90 var t5: i64 = 0
91 if rc5 == 0 { if dn2 == dn {
92 t5 = 1
93 var k: i64 = 0
94 while k < dn2 { if d2[k] != d[k] { t5 = 0; k = dn2 } else { k = k + 1 } }
95 } }
96 gv_check("T5 deterministic (two runs byte-identical)" as *u8, t5, ctr)
97
98 let rcv: i64 = gv_verdict("K3-ARCH-CENSUS-GATE" as *u8, ctr, "honest K3 coverage: computed from store, liar-killed, GAPs->research; fail-closed" as *u8)
99 sys_exit(rcv)
100 return rcv
101}