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}