code wiki / _hdl_build / nx_uiq_sentinel_gate.nx

nx_uiq_sentinel_gate.nx source

↩ module page · 78 lines · 4317 B

1// nx_uiq_sentinel_gate.nx -- D001 gate for the F106c sentinel (gv-verdict anchored). 2// Proves each classification DISCRIMINATELY on kat fixtures: baseline rows exact, clean run all-zero, 3// a console regression with ZERO structural change (dup id) flags regressed-not-drift, a structural 4// change with ZERO console change flags drift, and a ghost manifest row flags missing. 5// license_tier: ORIGINAL expect_exit: 0 6import "nx_uiq_sentinel_lib.nx" 7import "nx_gate_verdict.nx" 8 9func main() -> i64 { 10 let ctr: *i64 = gv_ctr() 11 gv_head("nx_uiq_sentinel_gate -- zero-Claude console+atree sentinel (F106c): classification oracle" as *u8) 12 let a0: *u8 = "<nav><a href=\"/x\">X</a></nav><main><h1 id=\"m\">T</h1></main>" as *u8 13 let b0: *u8 = "<main id=\"q\"><h1>B</h1></main>" as *u8 14 let a0l: i64 = cs_len(a0) 15 let b0l: i64 = cs_len(b0) 16 us_write("uiqsentkat_a.html" as *u8, a0, a0l) 17 us_write("uiqsentkat_b.html" as *u8, b0, b0l) 18 let lst: *u8 = "uiqsentkat_a.html\nuiqsentkat_b.html\n" as *u8 19 let lstl: i64 = cs_len(lst) 20 us_write("uiqsentkat_list.txt" as *u8, lst, lstl) 21 let bl: i64 = us_baseline("." as *u8, "uiqsentkat-" as *u8, "uiqsentkat_list.txt" as *u8, 0) 22 var t1: i64=0 23 if bl==2 { t1=1 } 24 gv_check("T1 baseline over 2-page listfile -> 2 rows + copies" as *u8, t1, ctr) 25 let out: *i64 = sys_mmap(64) as *i64 26 us_check("." as *u8, "uiqsentkat-" as *u8, out, 0, 0) 27 var t2: i64=0 28 if out[0]==2 { if out[1]==0 { if out[2]==0 { if out[3]==0 { t2=1 } } } } 29 gv_check("T2 unchanged pages -> CLEAN (0 missing 0 regressed 0 drift)" as *u8, t2, ctr) 30 let b1: *u8 = "<main id=\"q\"><h1 id=\"q\">B</h1></main>" as *u8 31 let b1l: i64 = cs_len(b1) 32 us_write("uiqsentkat_b.html" as *u8, b1, b1l) 33 us_check("." as *u8, "uiqsentkat-" as *u8, out, 0, 0) 34 var t3: i64=0 35 if out[2]==1 { if out[3]==0 { t3=1 } } 36 gv_check("T3 dup-id injected -> console-regressed WITHOUT struct drift" as *u8, t3, ctr) 37 let a1: *u8 = "<nav><a href=\"/x\">X</a></nav><main><h1 id=\"m\">T</h1></main><footer></footer>" as *u8 38 let a1l: i64 = cs_len(a1) 39 us_write("uiqsentkat_a.html" as *u8, a1, a1l) 40 us_check("." as *u8, "uiqsentkat-" as *u8, out, 0, 0) 41 var t4: i64=0 42 if out[3]==1 { if out[2]==1 { t4=1 } } 43 gv_check("T4 footer appended -> struct-drift (ted=1), console unchanged on that page" as *u8, t4, ctr) 44 let mf2: *u8 = sys_mmap(65536) 45 let mn2: i64 = cs_slurp("uiqsentkat-manifest.txt" as *u8, mf2, 65536) 46 var t5: i64=0 47 if mn2>0 { 48 let gh: *u8 = "uiqsentkat_ghost.html\t0\t0\t1\n" as *u8 49 var go: i64 = mn2 50 var gk: i64 = 0 51 while gh[gk]!=(0 as u8) { mf2[go]=gh[gk]; go=go+1; gk=gk+1 } 52 us_write("uiqsentkat-manifest.txt" as *u8, mf2, go) 53 us_check("." as *u8, "uiqsentkat-" as *u8, out, 0, 0) 54 if out[1]==1 { t5=1 } 55 } 56 gv_check("T5 ghost manifest row -> missing=1 (verdict REGRESSED path)" as *u8, t5, ctr) 57 let sf: i64 = us_selftest() 58 var t6: i64=0 59 if sf==0 { t6=1 } 60 gv_check("T6 embedded selftest (the CLI --kat contract) 0 fails" as *u8, t6, ctr) 61 // T7: the JSON API endpoint emit is well-formed + carries the verdict (write to a kat path, read back) 62 let ka: *u8 = "<main id=\"q\"><h1>A</h1></main>" as *u8 63 us_write("uiqsentkat_a.html" as *u8, ka, cs_len(ka)) 64 let jlst: *u8 = "uiqsentkat_a.html\n" as *u8 65 us_write("uiqsentkat_list.txt" as *u8, jlst, cs_len(jlst)) 66 us_baseline("." as *u8, "uiqsentkat-" as *u8, "uiqsentkat_list.txt" as *u8, 0) 67 let jo: *i64 = sys_mmap(64) as *i64 68 us_check("." as *u8, "uiqsentkat-" as *u8, jo, 0, 0) 69 let wj: i64 = us_emit_json("uiqsentkat.json" as *u8, 1784857200, 0, jo) 70 let jbuf: *u8 = sys_mmap(2048) 71 let jn: i64 = cs_slurp("uiqsentkat.json" as *u8, jbuf, 2047) 72 var t7: i64=0 73 if wj==1 { if jn>0 { if cs_find_from(jbuf, jn, 0, "\"organ\":\"nx_uiq_sentinel\"" as *u8)>=0 { if cs_find_from(jbuf, jn, 0, "\"verdict\":\"CLEAN\"" as *u8)>=0 { t7=1 } } } } 74 gv_check("T7 JSON API endpoint emit well-formed + verdict present (experiential.json)" as *u8, t7, ctr) 75 let rc: i64 = gv_verdict("UIQ-SENTINEL-GATE" as *u8, ctr, "F106c sentinel: baseline+check lifecycle, regressed/drift/missing each proven discriminately" as *u8) 76 sys_exit(rc) 77 return rc 78}