code wiki / _hdl_build / nx_sheriff_gate.nx
nx_sheriff_gate.nx source
↩ module page · 191 lines · 9374 B
1// nx_sheriff_gate.nx -- gate for the UAT/acceptance sheriff (nx_sheriff). On nx_gate_verdict
2// (migrate-on-touch law: new gates import THE lib). Teeth:
3// T1 above-floor domain ACCEPTED; T2 sub-floor WITH filed rung = ACCEPTED-FILED-CLIMB (the climb
4// is the design); T3 sub-floor NO rung = REJECTED-UNFILED-GAP + proposed SHF- debt row (and NO
5// debt proposed for the accepted domain); T4 unscored row = UNSCORED (score -1, never invented);
6// T5 DONE claim over lane-scoped open debt = REJECTED-DONE-OVER-DEBT; T6 clean DONE = ACCEPTED;
7// T7 NEG-CONTROL fail-closed: absent registry -> rc!=0 + SHERIFF-FAIL (no acceptance from
8// missing evidence); T8 SCALE tooth (scale law: production-shape input, declared envelope):
9// 600-row registry -> rows_scanned=512 rows_dropped=88 DECLARED, never silent.
10// Per-run-unique /tmp fixtures; drives the staged CLI via dep_run_capture.
11// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
12import "nx_store_seed_lib.nx"
13import "nx_seg_store.nx"
14import "nx_deploy_lib.nx"
15import "nx_gate_verdict.nx"
16import "nx_syscalls.nx"
17
18const SHG_CAP: i64 = 1048576
19const SHG_PFXCAP: i64 = 128
20const SHG_AV_BYTES: i64 = 64
21const SHG_NARG: i64 = 5
22const SHG_MODE: i64 = 0x1a4
23const SHG_SCALE_ROWS: i64 = 600
24
25func shg_wfile(path: *u8, buf: *u8, n: i64) -> i64 {
26 let fd: i64 = sys_openat_wr(path, SHG_MODE)
27 if fd < 0 { return 0 - 1 }
28 sys_write(fd, buf, n)
29 sys_close(fd)
30 return 0
31}
32
33func main() -> i64 {
34 let ctr: *i64 = gv_ctr()
35 gv_head("nx_sheriff gate -- UAT/acceptance from evidence only (floor + filed-rung law, DONE-over-debt, fail-closed, declared envelope)" as *u8)
36 let elf: *u8 = "/tmp/nx_sheriff.sov.elf" as *u8
37 let outf: *u8 = "/tmp/shg_out.txt" as *u8
38 let epoch: i64 = sys_now_realtime_sec()
39
40 // per-run-unique fixture paths
41 let regf: *u8 = sys_mmap(SHG_PFXCAP)
42 var ro: i64 = ss_cat(regf, 0, "/tmp/shg" as *u8)
43 ro = ss_catn(regf, ro, epoch)
44 ro = ss_cat(regf, ro, "reg.txt" as *u8)
45 regf[ro] = 0 as u8
46 let jrf: *u8 = sys_mmap(SHG_PFXCAP)
47 var jo: i64 = ss_cat(jrf, 0, "/tmp/shg" as *u8)
48 jo = ss_catn(jrf, jo, epoch)
49 jo = ss_cat(jrf, jo, "jrnl.txt" as *u8)
50 jrf[jo] = 0 as u8
51 let dpx: *u8 = sys_mmap(SHG_PFXCAP)
52 var dxo: i64 = ss_cat(dpx, 0, "/tmp/shg" as *u8)
53 dxo = ss_catn(dpx, dxo, epoch)
54 dxo = ss_cat(dpx, dxo, "debt-" as *u8)
55 dpx[dxo] = 0 as u8
56 let upx: *u8 = sys_mmap(SHG_PFXCAP)
57 var uxo: i64 = ss_cat(upx, 0, "/tmp/shg" as *u8)
58 uxo = ss_catn(upx, uxo, epoch)
59 uxo = ss_cat(upx, uxo, "uat-" as *u8)
60 upx[uxo] = 0 as u8
61
62 // fixture registry: 4 rows, one per verdict class
63 let rb: *u8 = sys_mmap(SHG_CAP)
64 var rbo: i64 = 0
65 rbo = ss_cat(rb, rbo, "# fixture registry title|kind|href|radar|stat\n" as *u8)
66 rbo = ss_cat(rb, rbo, "Good Domain|live|/compare/gooddom|-|coverage 800/1000 all proven live\n" as *u8)
67 rbo = ss_cat(rb, rbo, "Climb Domain|live|/compare/climbdom|-|coverage 500/1000 honest gaps all on rungs F123 F124 with owners\n" as *u8)
68 rbo = ss_cat(rb, rbo, "Bad Domain|live|/compare/baddom|-|coverage 450/1000 many gaps nothing on any rung\n" as *u8)
69 rbo = ss_cat(rb, rbo, "Radar Domain|radar|/compare/radardom/frontier|-|words only no numbers of the scored shape here\n" as *u8)
70 if shg_wfile(regf, rb, rbo) != 0 { gv_check("T0 fixture write" as *u8, 0, ctr) }
71
72 // fixture journal: fxclean (clean DONE) + fxdirty (DONE over scoped open debt)
73 let jb: *u8 = sys_mmap(SHG_CAP)
74 var jbo: i64 = 0
75 jbo = ss_cat(jb, jbo, "100\tKICKOFF\tfxclean\tsess\tstarting clean lane\n" as *u8)
76 jbo = ss_cat(jb, jbo, "200\tDONE\tfxclean\tsess\tfinished with evidence\n" as *u8)
77 jbo = ss_cat(jb, jbo, "300\tKICKOFF\tfxdirty\tsess\tstarting dirty lane\n" as *u8)
78 jbo = ss_cat(jb, jbo, "400\tDONE\tfxdirty\tsess\tclaimed done anyway\n" as *u8)
79 shg_wfile(jrf, jb, jbo)
80
81 // fixture debt plane (v2 7-col): one open row scoped to fxdirty
82 let db: *u8 = sys_mmap(4096)
83 var dbo: i64 = 0
84 dbo = ss_cat(db, dbo, "D900\tleftover unfinished work\t7\topen\tgate\tfxdirty\tthe lane declared done over this\n" as *u8)
85 sts_seed(dpx, db, dbo)
86
87 // fixture uat plane: floor 700, sev 6
88 let ub: *u8 = sys_mmap(4096)
89 var ubo: i64 = 0
90 ubo = ss_cat(ub, ubo, "0\tCONFIG\taccept-floor-permille\t700\tfixture\n" as *u8)
91 ubo = ss_cat(ub, ubo, "0\tCONFIG\tuat-sev-min\t6\tfixture\n" as *u8)
92 sts_seed(upx, ub, ubo)
93
94 // drive: audit <reg> <jrnl> <debt-> <uat->
95 let av: *i64 = sys_mmap(SHG_AV_BYTES) as *i64
96 av[0] = "audit" as *u8 as i64
97 av[1] = regf as i64
98 av[2] = jrf as i64
99 av[3] = dpx as i64
100 av[4] = upx as i64
101 let r1: i64 = dep_run_capture(elf, av, SHG_NARG, outf)
102 let cap: *u8 = sys_mmap(SHG_CAP)
103 var cn: i64 = dp_read(outf, cap, SHG_CAP - 4)
104 if cn < 0 { cn = 0 }
105
106 var t1: i64 = 0
107 if r1 == 0 { if dp_contains(cap, cn, "\"domain\":\"gooddom\",\"kind\":\"live\",\"score\":800,\"filed\":0,\"verdict\":\"ACCEPTED\"}" as *u8) == 1 { t1 = 1 } }
108 gv_check("T1 above-floor domain ACCEPTED (800 vs floor 700)" as *u8, t1, ctr)
109
110 var t2: i64 = 0
111 if dp_contains(cap, cn, "\"domain\":\"climbdom\",\"kind\":\"live\",\"score\":500,\"filed\":1,\"verdict\":\"ACCEPTED-FILED-CLIMB\"}" as *u8) == 1 { t2 = 1 }
112 gv_check("T2 sub-floor WITH filed rung = ACCEPTED-FILED-CLIMB (the climb is the design)" as *u8, t2, ctr)
113
114 var t3: i64 = 0
115 if dp_contains(cap, cn, "\"domain\":\"baddom\",\"kind\":\"live\",\"score\":450,\"filed\":0,\"verdict\":\"REJECTED-UNFILED-GAP\"}" as *u8) == 1 {
116 if dp_contains(cap, cn, "\"id\":\"SHF-baddom\"" as *u8) == 1 {
117 if dp_contains(cap, cn, "SHF-gooddom" as *u8) == 0 { t3 = 1 }
118 }
119 }
120 gv_check("T3 sub-floor NO rung = REJECTED + SHF- debt proposed (and none for accepted)" as *u8, t3, ctr)
121
122 var t4: i64 = 0
123 if dp_contains(cap, cn, "\"domain\":\"radardom\",\"kind\":\"radar\",\"score\":-1,\"filed\":0,\"verdict\":\"UNSCORED\"}" as *u8) == 1 { t4 = 1 }
124 gv_check("T4 unscored row = UNSCORED score -1 (never invented)" as *u8, t4, ctr)
125
126 var t5: i64 = 0
127 if dp_contains(cap, cn, "\"ws\":\"fxdirty\",\"scoped_open_debts\":1,\"verdict\":\"REJECTED-DONE-OVER-DEBT\"}" as *u8) == 1 { t5 = 1 }
128 gv_check("T5 DONE over lane-scoped open debt = REJECTED-DONE-OVER-DEBT" as *u8, t5, ctr)
129
130 var t6: i64 = 0
131 if dp_contains(cap, cn, "\"ws\":\"fxclean\",\"scoped_open_debts\":0,\"verdict\":\"ACCEPTED-DONE\"}" as *u8) == 1 { t6 = 1 }
132 gv_check("T6 clean DONE claim = ACCEPTED-DONE" as *u8, t6, ctr)
133
134 // T7 neg-control: absent registry -> fail-closed
135 let absf: *u8 = sys_mmap(SHG_PFXCAP)
136 var abo: i64 = ss_cat(absf, 0, "/tmp/shg" as *u8)
137 abo = ss_catn(absf, abo, epoch)
138 abo = ss_cat(absf, abo, "absent.txt" as *u8)
139 absf[abo] = 0 as u8
140 av[1] = absf as i64
141 let r7: i64 = dep_run_capture(elf, av, SHG_NARG, outf)
142 var cn7: i64 = dp_read(outf, cap, SHG_CAP - 4)
143 if cn7 < 0 { cn7 = 0 }
144 var t7: i64 = 0
145 if r7 != 0 { if dp_contains(cap, cn7, "SHERIFF-FAIL" as *u8) == 1 { t7 = 1 } }
146 gv_check("T7 NEG-CONTROL absent registry = rc!=0 SHERIFF-FAIL (fail-closed)" as *u8, t7, ctr)
147
148 // T8 scale tooth: 600 rows -> scanned 512, dropped 88, DECLARED
149 let sb: *u8 = sys_mmap(SHG_CAP)
150 var sbo: i64 = ss_cat(sb, 0, "# scale fixture\n" as *u8)
151 var si: i64 = 0
152 while si < SHG_SCALE_ROWS {
153 sbo = ss_cat(sb, sbo, "Dom|live|/compare/d" as *u8)
154 sbo = ss_catn(sb, sbo, si)
155 sbo = ss_cat(sb, sbo, "|-|coverage 800/1000 ok\n" as *u8)
156 si = si + 1
157 }
158 let sclf: *u8 = sys_mmap(SHG_PFXCAP)
159 var sco: i64 = ss_cat(sclf, 0, "/tmp/shg" as *u8)
160 sco = ss_catn(sclf, sco, epoch)
161 sco = ss_cat(sclf, sco, "scale.txt" as *u8)
162 sclf[sco] = 0 as u8
163 shg_wfile(sclf, sb, sbo)
164 av[1] = sclf as i64
165 let r8: i64 = dep_run_capture(elf, av, SHG_NARG, outf)
166 var cn8: i64 = dp_read(outf, cap, SHG_CAP - 4)
167 if cn8 < 0 { cn8 = 0 }
168 var t8: i64 = 0
169 if r8 == 0 { if dp_contains(cap, cn8, "\"rows_scanned\":512" as *u8) == 1 { if dp_contains(cap, cn8, "\"rows_dropped\":88" as *u8) == 1 { t8 = 1 } } }
170 gv_check("T8 SCALE 600-row registry: cap DECLARED (scanned 512, dropped 88), never silent" as *u8, t8, ctr)
171
172 // T9 @-file flat debt snapshot: same verdicts as the seg-store path
173 let flatf: *u8 = sys_mmap(SHG_PFXCAP)
174 var ffo: i64 = ss_cat(flatf, 0, "@/tmp/shg" as *u8)
175 ffo = ss_catn(flatf, ffo, epoch)
176 ffo = ss_cat(flatf, ffo, "flat.tsv" as *u8)
177 flatf[ffo] = 0 as u8
178 shg_wfile(((flatf as i64) + 1) as *u8, db, dbo)
179 av[1] = regf as i64
180 av[3] = flatf as i64
181 let r9: i64 = dep_run_capture(elf, av, SHG_NARG, outf)
182 var cn9: i64 = dp_read(outf, cap, SHG_CAP - 4)
183 if cn9 < 0 { cn9 = 0 }
184 var t9: i64 = 0
185 if r9 == 0 { if dp_contains(cap, cn9, "\"ws\":\"fxdirty\",\"scoped_open_debts\":1,\"verdict\":\"REJECTED-DONE-OVER-DEBT\"}" as *u8) == 1 { if dp_contains(cap, cn9, "\"ws\":\"fxclean\",\"scoped_open_debts\":0,\"verdict\":\"ACCEPTED-DONE\"}" as *u8) == 1 { t9 = 1 } } }
186 gv_check("T9 @-file flat debt snapshot gives the same verdicts as the seg store" as *u8, t9, ctr)
187
188 let rc: i64 = gv_verdict("SHERIFF-GATE", ctr, "acceptance derived from evidence only; fail-closed; declared envelope" as *u8)
189 sys_exit(rc)
190 return rc
191}