code wiki / _hdl_build / nx_wpt_run.nx

nx_wpt_run.nx source

↩ module page · 130 lines · 6470 B

1// nx_wpt_run.nx -- the EXTERNAL-ORACLE VALIDATION SPINE: drive OUR sovereign engine over a vendored 2// REAL Web-Platform-Tests reftest subset (knowledge/wpt/, fetched by nx_wpt_fetch at a pinned commit) and 3// emit an HONEST pass-permille + the suite commit. A reftest renders a TEST + a spec-defined REFERENCE; 4// BOTH go through OUR renderer, so our font/metric quirks cancel -> a PASS means our engine satisfies the 5// WPT-author-defined spec-equivalence (a falsifiable, never-self-scored conformance check). Reads 6// manifest.tsv (test<TAB>ref<TAB>match|mismatch<TAB>name). NOT cherry-picked: every row in the manifest is 7// scored and the raw diff printed. 100% sovereign (no Chrome/headless/gcc). license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_render_html.nx" 10const K_MAGIC_999999: i64 = 999999 11const K_MAGIC_1024: i64 = 1024 12 13func g_w(s: *u8) -> i64 { var k: i64=0; while s[k]!=(0 as u8){k=k+1} sys_write(1,s,k); return 0 } 14func pn(v0: i64) -> i64 { var v: i64=v0; if v<0 { let m: *u8=sys_mmap(8); m[0]=45 as u8; sys_write(1,m,1); v=0-v } let b: *u8=sys_mmap(24); var k: i64=0; if v==0 {b[0]=48;k=1} while v>0 {b[k]=(48+(v%10)) as u8; v=v/10; k=k+1} let o: *u8=sys_mmap(24); var j: i64=0; while j<k {o[j]=b[k-1-j];j=j+1} sys_write(1,o,k); return 0 } 15func u32le(d: *u8, p: i64) -> i64 { return (d[p]&0xff) + ((d[p+1]&0xff)<<8) + ((d[p+2]&0xff)<<16) + ((d[p+3]&0xff)<<24) } 16 17// Count differing pixels between two BMP buffers; dim-mismatch => huge diff. (Same as nx_reftest_gate.) 18func bmp_diff(a: *u8, b: *u8) -> i64 { 19 let wa: i64=u32le(a,18); let ha: i64=u32le(a,22); let oa: i64=u32le(a,10) 20 let wb: i64=u32le(b,18); let hb: i64=u32le(b,22); let ob: i64=u32le(b,10) 21 if wa != wb { return K_MAGIC_999999 } 22 if ha != hb { return K_MAGIC_999999 } 23 let row3: i64 = wa*3 24 let pad: i64 = (4-(row3%4))%4 25 let rowstride: i64 = row3+pad 26 var diff: i64 = 0 27 var y: i64 = 0 28 while y < ha { 29 var x: i64 = 0 30 let rba: i64 = oa + y*rowstride 31 let rbb: i64 = ob + y*rowstride 32 while x < wa { 33 let pa: i64 = rba + x*3 34 let pb: i64 = rbb + x*3 35 var d: i64 = 0 36 if (a[pa]&0xff) != (b[pb]&0xff) { d=1 } 37 if (a[pa+1]&0xff) != (b[pb+1]&0xff) { d=1 } 38 if (a[pa+2]&0xff) != (b[pb+2]&0xff) { d=1 } 39 if d==1 { diff = diff + 1 } 40 x = x+1 41 } 42 y = y+1 43 } 44 return diff 45} 46 47// Render a vendored TEST + REF file pair through our engine -> differing-pixel count. 48func reftest_files(test_path: *u8, ref_path: *u8) -> i64 { 49 let lp: *i64 = sys_mmap(8) as *i64 50 let t: *u8 = sys_read_file(test_path, lp); let tl: i64 = lp[0] 51 if tl <= 0 { return K_MAGIC_999999 } 52 nx_render_html_to_bmp(t, tl, "knowledge/status/wpt_t.bmp\x00" as *u8) 53 let r: *u8 = sys_read_file(ref_path, lp); let rl: i64 = lp[0] 54 if rl <= 0 { return K_MAGIC_999999 } 55 nx_render_html_to_bmp(r, rl, "knowledge/status/wpt_r.bmp\x00" as *u8) 56 let a: *u8 = sys_read_file("knowledge/status/wpt_t.bmp\x00" as *u8, lp); let la: i64 = lp[0] 57 let b: *u8 = sys_read_file("knowledge/status/wpt_r.bmp\x00" as *u8, lp); let lb: i64 = lp[0] 58 if la < 54 { return K_MAGIC_999999 } 59 if lb < 54 { return K_MAGIC_999999 } 60 return bmp_diff(a, b) 61} 62 63func fcopy(src: *u8, start: i64, end: i64, dst: *u8) -> i64 { 64 var i: i64 = start; var o: i64 = 0 65 while i < end { dst[o] = src[i]; o = o + 1; i = i + 1 } 66 dst[o] = 0 as u8 67 return o 68} 69 70func main() -> i64 { 71 g_w("=== nx_wpt_run: REAL Web-Platform-Tests reftest subset vs OUR engine (external oracle) ===\n" as *u8) 72 let lp: *i64 = sys_mmap(8) as *i64 73 let m: *u8 = sys_read_file("knowledge/wpt/manifest.tsv\x00" as *u8, lp) 74 let mlen: i64 = lp[0] 75 if mlen <= 0 { g_w("NO MANIFEST -- run nx_wpt_fetch first\n" as *u8); sys_exit(1); return 1 } 76 77 let f_test: *u8 = sys_mmap(K_MAGIC_1024) 78 let f_ref: *u8 = sys_mmap(K_MAGIC_1024) 79 let f_type: *u8 = sys_mmap(64) 80 let f_name: *u8 = sys_mmap(256) 81 82 var total: i64 = 0 83 var passed: i64 = 0 84 var pos: i64 = 0 85 while pos < mlen { 86 // line end (\n = 10) 87 var le: i64 = pos 88 var go: i64 = 1 89 while go == 1 { if le >= mlen { go = 0 } else { if (m[le]&0xff) == 10 { go = 0 } else { le = le + 1 } } } 90 // three tabs (\t = 9) within [pos, le) 91 var t1: i64 = pos 92 var g1: i64 = 1 93 while g1 == 1 { if t1 >= le { g1 = 0 } else { if (m[t1]&0xff) == 9 { g1 = 0 } else { t1 = t1 + 1 } } } 94 var t2: i64 = t1 + 1 95 var g2: i64 = 1 96 while g2 == 1 { if t2 >= le { g2 = 0 } else { if (m[t2]&0xff) == 9 { g2 = 0 } else { t2 = t2 + 1 } } } 97 var t3: i64 = t2 + 1 98 var g3: i64 = 1 99 while g3 == 1 { if t3 >= le { g3 = 0 } else { if (m[t3]&0xff) == 9 { g3 = 0 } else { t3 = t3 + 1 } } } 100 // valid line only if all three tabs present before le 101 if t3 < le { 102 fcopy(m, pos, t1, f_test) 103 fcopy(m, t1 + 1, t2, f_ref) 104 fcopy(m, t2 + 1, t3, f_type) 105 fcopy(m, t3 + 1, le, f_name) 106 // matchtype: "match"(m-a) vs "mismatch"(m-i) -> distinguish by 2nd byte 107 var is_mismatch: i64 = 0 108 if (f_type[1]&0xff) == 105 { is_mismatch = 1 } 109 let diff: i64 = reftest_files(f_test, f_ref) 110 var pass: i64 = 0 111 if is_mismatch == 1 { if diff > 0 { pass = 1 } } else { if diff == 0 { pass = 1 } } 112 g_w(" [" as *u8); g_w(f_name); g_w("] " as *u8) 113 if is_mismatch == 1 { g_w("(mismatch) " as *u8) } else { g_w("(match) " as *u8) } 114 g_w("diff=" as *u8); pn(diff); g_w(" -> " as *u8) 115 if pass == 1 { g_w("PASS\n" as *u8); passed = passed + 1 } else { g_w("FAIL\n" as *u8) } 116 total = total + 1 117 } 118 pos = le + 1 119 } 120 121 var permil: i64 = 0 122 if total > 0 { permil = (passed * 1000) / total } 123 g_w("---\n" as *u8) 124 g_w("WPT suite commit: 8eaad6bebd61637010bb0a946b863675a3efd01d (web-platform-tests)\n" as *u8) 125 g_w("WPT reftest pass-rate: " as *u8); pn(passed); g_w("/" as *u8); pn(total); g_w(" = " as *u8); pn(permil); g_w(" permille (HONEST, every manifest row scored)\n" as *u8) 126 // This runner SUCCEEDS if it RAN the oracle (>=1 real test scored). The pass-RATE is reported, never 127 // floored -- a low number is the honest baseline, not a failure of the harness. 128 if total >= 1 { sys_exit(0); return 0 } 129 sys_exit(1); return 1 130}