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}