code wiki / _hdl_build / nx_uigen_l1_gate.nx

nx_uigen_l1_gate.nx source

↩ module page · 87 lines · 4939 B

1import "nx_gate_gn.nx" 2// nx_uigen_l1_gate.nx -- MEASURES roadmap rung L1 (parameterized generation). Generates 6 pages from 6 specs 3// (seed hue + layout variant) and proves, mechanically: (1) DIVERSITY -- 6 distinct generated palettes; 4// (2) ACCESSIBLE BY CONSTRUCTION -- in BOTH themes the ink/bg lightness gap is huge (light: ink dark+bg light; 5// dark: ink light+bg dark); (3) CRAFT -- every generated page carries the S-class markers (tokens, skip-link, 6// @media, clamp, focus-visible, reduced-motion) because it composes the kit. Writes one sample to web_assets 7// for the INDEPENDENT nx_ui_judge to confirm >=800. GREEN only if all three hold. expect_exit: 0 license_tier: ORIGINAL 8import "nx_syscalls.nx" 9import "nx_uigen_l1.nx" 10 11func gp(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 12// substring search in buf[0..len). 13func contains(buf: *u8, len: i64, lit: *u8) -> i64 { 14 var ll: i64=0; while lit[ll]!=(0 as u8){ll=ll+1} 15 if ll==0 { return 1 } 16 var i: i64=0 17 while i+ll<=len { 18 var j: i64=0; var ok: i64=1 19 while j<ll { if buf[i+j]!=lit[j] { ok=0; j=ll } else { j=j+1 } } 20 if ok==1 { return 1 } 21 i=i+1 22 } 23 return 0 24} 25func csum(p: i64) -> i64 { return (p/65536) + ((p/256)%256) + (p%256) } 26 27func main() -> i64 { 28 let cap: i64 = 262144; let buf: *u8 = sys_mmap(cap) 29 let hues: *i64 = sys_mmap(64) as *i64 30 hues[0]=18; hues[1]=82; hues[2]=148; hues[3]=208; hues[4]=272; hues[5]=334 31 let prims: *i64 = sys_mmap(64) as *i64 32 var allmark: i64=1 33 var allaccess: i64=1 34 35 gp("=== NX-UIGEN-L1 GATE -- parameterized generation: 6 specs -> 6 pages (the SYSTEM makes the design choices) ===\n" as *u8) 36 var i: i64=0 37 while i<6 { 38 let hue: i64=hues[i] 39 let variant: i64=i%3 40 let off: i64 = l1_page(buf, 0, hue, variant, "Generated UI" as *u8, "Nishi" as *u8, "A UI generated from a spec" as *u8, "seed" as *u8) 41 let prim: i64 = l1_hsl_pack(hue,62,46); prims[i]=prim 42 // accessibility by construction, BOTH themes 43 let li: i64 = csum(l1_hsl_pack(hue,25,12)) // light ink -> dark (small) 44 let lb: i64 = csum(l1_hsl_pack(hue,22,97)) // light bg -> light (large) 45 let di: i64 = csum(l1_hsl_pack(hue,15,92)) // dark ink -> light (large) 46 let db: i64 = csum(l1_hsl_pack(hue,24,9)) // dark bg -> dark (small) 47 var acc: i64=0 48 if li<230 { if lb>660 { if di>640 { if db<190 { acc=1 } } } } 49 if acc==0 { allaccess=0 } 50 // craft markers (present because it composes the kit) 51 var mk: i64=1 52 if contains(buf,off,"var(--nx-" as *u8)==0 { mk=0 } 53 if contains(buf,off,"skip-link" as *u8)==0 { mk=0 } 54 if contains(buf,off,"@media" as *u8)==0 { mk=0 } 55 if contains(buf,off,"clamp(" as *u8)==0 { mk=0 } 56 if contains(buf,off,"focus-visible" as *u8)==0 { mk=0 } 57 if contains(buf,off,"prefers-reduced-motion" as *u8)==0 { mk=0 } 58 if mk==0 { allmark=0 } 59 gp(" spec hue=" as *u8); gn(hue); gp(" layout=" as *u8); gn(variant); gp(" primary=rgb(" as *u8); gn(prim/65536); gp("," as *u8); gn((prim/256)%256); gp("," as *u8); gn(prim%256); gp(")" as *u8) 60 gp(" light[ink=" as *u8); gn(li); gp(",bg=" as *u8); gn(lb); gp("] dark[ink=" as *u8); gn(di); gp(",bg=" as *u8); gn(db); gp("]" as *u8) 61 gp(" bytes=" as *u8); gn(off); gp(" craft=" as *u8); gn(mk); gp(" a11y=" as *u8); gn(acc); gp("\n" as *u8) 62 i=i+1 63 } 64 // diversity: count distinct primaries 65 var distinct: i64=0; var a: i64=0 66 while a<6 { var seen: i64=0; var b: i64=0; while b<a { if prims[b]==prims[a] { seen=1 } b=b+1 } if seen==0 { distinct=distinct+1 } a=a+1 } 67 // write one sample for the INDEPENDENT judge 68 let soff: i64 = l1_page(buf, 0, 208, 1, "Generated UI sample" as *u8, "Nishi" as *u8, "Generated from one seed hue" as *u8, "seed" as *u8) 69 let fd: i64 = sys_openat_wr("web_assets/uigen_l1_sample.html" as *u8, 420) 70 if fd>=0 { sys_write(fd, buf, soff); sys_close(fd) } 71 72 gp("\n-- L1 MEASUREMENT: specs=6 distinct_palettes=" as *u8); gn(distinct); gp("/6 craft_all=" as *u8); gn(allmark); gp(" accessible_all=" as *u8); gn(allaccess); gp("\n" as *u8) 73 gp("-- sample written: web_assets/uigen_l1_sample.html (" as *u8); gn(soff); gp(" bytes) -> nx_ui_judge confirms >=800 independently\n" as *u8) 74 75 var ok: i64=1 76 if distinct<6 { ok=0 } 77 if allmark==0 { ok=0 } 78 if allaccess==0 { ok=0 } 79 if ok==1 { 80 gp("=== UIGEN-L1 verdict=GREEN: the SYSTEM generated 6 distinct, both-theme-accessible, S-class pages from 6\n" as *u8) 81 gp("compact specs. palette-generation + design-diversity + layout-generation move GAP->HAVE. This is L1, measured.\n" as *u8) 82 sys_exit(0); return 0 83 } 84 gp("=== UIGEN-L1 verdict=RED (diversity/craft/a11y unmet -- see per-spec rows above)\n" as *u8) 85 sys_exit(1) 86 return 1 87}