code wiki / (root) / nx_h264_diag_gate.nx

nx_h264_diag_gate.nx source

↩ module page · 72 lines · 3391 B

1// nx_h264_diag_gate.nx -- gate the Teacher diagnostic engine: feed crafted logs with known symptoms and 2// verify the issue taxonomy classifies them (COMPILE-FAIL->1, multi-symptom->3, clean->0), then run it on a 3// REAL gate log to show it parses our own output. Exit 0/1. license_tier: ORIGINAL 4import "nx_syscalls.nx" 5import "nx_h264_diag.nx" 6import "nx_gate_verdict.nx" 7 8func gp(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 9func gn(v: i64) -> i64 { 10 let bb: *u8 = sys_mmap(28); var m: i64 = v 11 if m < 0 { sys_write(1, "-\x00" as *u8, 1); m = 0 - m } 12 let t: *u8 = sys_mmap(28); var k: i64 = 0 13 if m == 0 { t[0] = 48 as u8; k = 1 } 14 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 15 var i: i64 = 0 16 while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 17 sys_write(1, bb, k); return 0 18} 19func dappend(buf: *u8, off: i64, s: *u8) -> i64 { 20 var i: i64 = 0 21 while s[i] != (0 as u8) { buf[off + i] = s[i]; i = i + 1 } 22 return off + i 23} 24 25func main() -> i64 { 26 gp("TEACHER-DIAG-GATE\n\x00" as *u8) 27 let rzp: *i64 = sys_mmap(16) as *i64 28 let reg: *u8 = sys_read_file("knowledge/registry/nishi_issues.tsv\x00" as *u8, rzp) 29 if (reg as i64) == 0 { gp("no issues.tsv\n\x00" as *u8); sys_exit(1); return 1 } 30 let reglen: i64 = rzp[0] 31 var ok: i64 = 1 32 33 gp(" [T1] build log with COMPILE-FAIL:\n\x00" as *u8) 34 let b1: *u8 = sys_mmap(512) 35 let o1: i64 = dappend(b1, 0, "nx_sov_build_run: COMPILE-FAIL (empty .s after retries)\x00" as *u8) 36 let m1: i64 = nx_diag_run(reg, reglen, b1, o1, 0) 37 gp(" matched=\x00" as *u8); gn(m1); gp(" (expect 1)\n\x00" as *u8) 38 if m1 != 1 { ok = 0 } 39 40 gp(" [T2] multi-symptom log:\n\x00" as *u8) 41 let b2: *u8 = sys_mmap(512) 42 var o2: i64 = dappend(b2, 0, " result=FAIL verdict=RED\n reader byte=1804 NOT at rbsp end\n \x00" as *u8) 43 o2 = dappend(b2, o2, "DESYNC bad intra mb_type at 696\x00" as *u8) 44 let m2: i64 = nx_diag_run(reg, reglen, b2, o2, 0) 45 gp(" matched=\x00" as *u8); gn(m2); gp(" (expect 3)\n\x00" as *u8) 46 if m2 != 3 { ok = 0 } 47 48 gp(" [T3] clean GREEN log:\n\x00" as *u8) 49 let b3: *u8 = sys_mmap(512) 50 let o3: i64 = dappend(b3, 0, "all gates GREEN, 589824/589824 luma bit-exact, reader at rbsp end\x00" as *u8) 51 let m3: i64 = nx_diag_run(reg, reglen, b3, o3, 0) 52 gp(" matched=\x00" as *u8); gn(m3); gp(" (expect 0)\n\x00" as *u8) 53 if m3 != 0 { ok = 0 } 54 55 gp(" [T4] REAL gate log (h264_brecon.log):\n\x00" as *u8) 56 let lzp: *i64 = sys_mmap(16) as *i64 57 let log: *u8 = sys_read_file("knowledge/status/h264_brecon.log\x00" as *u8, lzp) 58 var m4: i64 = 0 59 if (log as i64) != 0 { m4 = nx_diag_run(reg, reglen, log, lzp[0], 0) } 60 gp(" matched=\x00" as *u8); gn(m4); gp(" (expect >=1)\n\x00" as *u8) 61 if m4 < 1 { ok = 0 } 62 63 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 64 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 65 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 66 let ctr__dry: *i64 = gv_ctr() 67 ctr__dry[0] = ok 68 ctr__dry[1] = 1 69 let rc__dry: i64 = gv_verdict("H264-DIAG-GATE" as *u8, ctr__dry, "logs->issue-types for dr/engineer/builder)00" as *u8) 70 sys_exit(rc__dry) 71 return rc__dry 72}