code wiki / _hdl_build / nx_site_requirements_gate.nx

nx_site_requirements_gate.nx source

↩ module page · 79 lines · 4986 B

1// nx_site_requirements_gate.nx -- referee for R5b (nx_site_requirements / the .req content compiler). 2// Composes the SAME corpus-derived showcase twice in one process: (1) WITHOUT a brief -> the grid placeholder 3// marker is PRESENT (N1 baseline, proves the mechanism does the work); (2) WITH the test.req brief loaded -> 4// the brief's copy LANDS verbatim, the placeholder is GONE from the req'd section, non-req'd archetypes keep 5// their defaults (fallback intact), and the ADA shell survives. GREEN iff 6/6. 6// Wrapper pre-cleans /tmp/tplcorpus_req /tmp/factory_req1 /tmp/factory_req2. 7// license_tier: ORIGINAL expect_exit: 0 8import "nx_gate.nx" 9import "nx_site_archetype.nx" 10 11func gr_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 12func gr_has(hay: *u8, hn: i64, needle: *u8) -> i64 { 13 if (hay as i64)==0 { return 0 } 14 let nl: i64 = gr_slen(needle) 15 if nl==0 { return 1 } 16 var i: i64=0 17 while i+nl<=hn { var j: i64=0; var ok: i64=1; while j<nl { if (hay[i+j] as i64)!=(needle[j] as i64) { ok=0; j=nl } else { j=j+1 } } if ok==1 { return 1 } i=i+1 } 18 return 0 19} 20func gr_row(name: *u8, ok: i64) -> i64 { gw(" " as *u8); gw(name); if ok==1 { gw(" PASS\n" as *u8) } else { gw(" FAIL\n" as *u8) } return 0 } 21 22func main() -> i64 { 23 // corpus from the seed templates 24 let counts: *i64 = sys_mmap(64) as *i64 25 ti_run("web_assets/_tpl_seed" as *u8, "/tmp/tplcorpus_req/" as *u8, 5000, 67108864, counts) 26 // (1) baseline compose, NO brief 27 sa_run("web_assets/_tpl_seed" as *u8, "/tmp/tplcorpus_req/" as *u8, "/tmp/factory_req1" as *u8, "nishifamily.com" as *u8) 28 let szp: *i64 = sys_mmap(16) as *i64 29 let e1: *u8 = sys_read_file("/tmp/factory_req1/ecommerce.html" as *u8, szp); let e1n: i64 = szp[0] 30 // (2) load the brief, compose again 31 let rl: i64 = sa_req_load("web_assets/_tpl_seed/test.req" as *u8) 32 sa_run("web_assets/_tpl_seed" as *u8, "/tmp/tplcorpus_req/" as *u8, "/tmp/factory_req2" as *u8, "nishifamily.com" as *u8) 33 let e2: *u8 = sys_read_file("/tmp/factory_req2/ecommerce.html" as *u8, szp); let e2n: i64 = szp[0] 34 let r2: *u8 = sys_read_file("/tmp/factory_req2/resume.html" as *u8, szp); let r2n: i64 = szp[0] 35 36 let PH: *u8 = "swap in real content" as *u8 37 // N1 (baseline NEG CONTROL): without a brief the placeholder IS present -- the compiler does the work 38 var n1: i64=0; if gr_has(e1, e1n, PH)==1 { n1=1 } 39 // T2: brief copy LANDS verbatim (item title + body + lede override) 40 var t2: i64=0 41 if gr_has(e2, e2n, "Hand-thrown stoneware mug" as *u8)==1 { 42 if gr_has(e2, e2n, "waxed duck canvas and copper rivets" as *u8)==1 { 43 if gr_has(e2, e2n, "requirements-driven copy landed here" as *u8)==1 { t2=1 } } } 44 // T3: the req'd grid has NO leftover placeholder in its first two cards region... (whole-page check is too 45 // strong: items 3-6 have no brief rows and default honestly). So: page still HAS defaults for 3..6 AND the 46 // brief items replaced 1..2 -- checked by T2 + T4 below; here assert the SPECIFIC replaced default is gone: 47 var t3: i64=0; if gr_has(e2, e2n, "Product 1" as *u8)==0 { if gr_has(e2, e2n, "Product 2" as *u8)==0 { if gr_has(e2, e2n, "Product 3" as *u8)==1 { t3=1 } } } 48 // T4: non-req'd archetype (resume) keeps its defaults (fallback intact) 49 var t4: i64=0; if gr_has(r2, r2n, "Selected work" as *u8)==1 { if gr_has(r2, r2n, PH)==1 { t4=1 } } 50 // T5: ADA shell by construction survives the req path 51 var t5: i64=0 52 if gr_has(e2, e2n, "class=\"skip-link\"" as *u8)==1 { if gr_has(e2, e2n, "<main id=\"main\"" as *u8)==1 { if gr_has(e2, e2n, "--nx-color" as *u8)==1 { t5=1 } } } 53 // T6: loader reported real lines 54 var t6: i64=0; if rl >= 5 { t6=1 } 55 56 var passes: i64=0 57 if n1==1 { passes=passes+1 } if t2==1 { passes=passes+1 } if t3==1 { passes=passes+1 } 58 if t4==1 { passes=passes+1 } if t5==1 { passes=passes+1 } if t6==1 { passes=passes+1 } 59 var green: i64=0; if passes==6 { green=1 } 60 61 gw("=== nx_site_requirements_gate -- R5b requirements -> content compiler ===\n" as *u8) 62 gr_row("N1-baseline-placeholder(neg) " as *u8, n1) 63 gr_row("T2-brief-copy-lands-verbatim " as *u8, t2) 64 gr_row("T3-replaced-defaults-gone " as *u8, t3) 65 gr_row("T4-fallback-defaults-intact " as *u8, t4) 66 gr_row("T5-ada-shell-survives " as *u8, t5) 67 gr_row("T6-loader-line-count " as *u8, t6) 68 gw("verdict=" as *u8); if green==1 { gw("GREEN" as *u8) } else { gw("RED" as *u8) } 69 gw(" passes=" as *u8); gn(passes); gw("/6 req_lines=" as *u8); gn(rl); gw("\n" as *u8) 70 71 let lg: i64 = sys_openat_append("knowledge/status/site_requirements.log" as *u8, 0x1a4) 72 if lg >= 0 { 73 if green==1 { let m: *u8 = "SITE-REQ rows=6 pass=6 verdict=GREEN\n" as *u8; sys_write(lg, m, 37) } 74 else { let m2: *u8 = "SITE-REQ verdict=RED\n" as *u8; sys_write(lg, m2, 21) } 75 sys_close(lg) 76 } 77 if green==1 { return 0 } 78 return 1 79}