code wiki / _hdl_build / nx_worldgen_gate.nx

nx_worldgen_gate.nx source

↩ module page · 127 lines · 6478 B

1// nx_worldgen_gate.nx -- prove SOVEREIGN INFINIGEN rung 1: seeds grow whole LANDSCAPES (terrain+water+sky+weather). 2// T1 a world renders (terrain + sky + water pixels all present -- a coherent scene) 3// T2 ★VARIETY: different seeds -> measurably different worlds (pairwise render L1 large) 4// T3 weather modes retint the scene (clear vs sunset vs overcast differ) + determinism 5// T4 gallery PNG knowledge/nx_worldgen.png (4 worlds: 3 seeds clear + 1 sunset) 6// license_tier: ORIGINAL expect_exit: 0 7import "nx_syscalls.nx" 8import "nx_png.nx" 9import "nx_worldgen.nx" 10 11func hw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 12func pn(v: i64) -> i64 { let b: *u8=sys_mmap(32) as *u8; var x: i64=v; var ng: i64=0; if x<0{ng=1;x=0-x} var i: i64=31; if x==0{b[i]=48 as u8;i=i-1} while x>0{b[i]=(48+x%10) as u8;x=x/10;i=i-1} if ng==1{b[i]=45 as u8;i=i-1} sys_write(1,(b as i64+i+1) as *u8,31-i); return 0 } 13func L1(a: *i64, b: *i64, n: i64) -> i64 { var s: i64=0; var i: i64=0; while i<n { var d: i64=(a[i]&255)-(b[i]&255); if d<0{d=0-d} var e: i64=((a[i]>>8)&255)-((b[i]>>8)&255); if e<0{e=0-e} var f: i64=((a[i]>>16)&255)-((b[i]>>16)&255); if f<0{f=0-f} s=s+d+e+f; i=i+1 } return s } 14 15// SELF-RECORD THE VERDICT (2026-07-31, lib-reconcile). MEASURED: /api/gate_run cannot observe this gate -- 16// the edge closes the response at ~14.5s for BOTH the sync lane AND _async=1, regardless of deadline_ms 17// (60000 was requested; the call died at 14140ms and 14486ms respectively). So a gate that runs longer than 18// the window is UNOBSERVABLE through its response, and "no output" says NOTHING about pass or fail. 19// The verdict therefore has to outlive the request. knowledge/status/ is where the rulers already look 20// (nx_gateverify compares a gate's printed N/M against its LOGGED passed=/total=), so writing there makes 21// this gate readable after the window closes instead of merely silent. 22// This call is the LAST act before exit on BOTH paths -- a record written before the work it records is a 23// false-green generator. 24func wg_log(fails: i64) -> i64 { 25 sys_mkdir("knowledge" as *u8, 0x1ed) 26 sys_mkdir("knowledge/status" as *u8, 0x1ed) 27 let fd: i64 = sys_openat_wr("knowledge/status/worldgen_gate.log" as *u8, 0x1a4) 28 if fd < 0 { return 0 } 29 let b: *u8 = sys_mmap(128) 30 var o: i64 = 0 31 let pre: *u8 = "WORLDGEN-GATE passed=" as *u8 32 var i: i64 = 0 33 while pre[i] != (0 as u8) { b[o] = pre[i]; o = o + 1; i = i + 1 } 34 var pass: i64 = 4 - fails 35 if pass < 0 { pass = 0 } 36 b[o] = (48 + pass) as u8 37 o = o + 1 38 let mid: *u8 = " total=4 verdict=" as *u8 39 i = 0 40 while mid[i] != (0 as u8) { b[o] = mid[i]; o = o + 1; i = i + 1 } 41 if fails == 0 { 42 let g: *u8 = "GREEN" as *u8 43 i = 0 44 while g[i] != (0 as u8) { b[o] = g[i]; o = o + 1; i = i + 1 } 45 } else { 46 let rr: *u8 = "RED" as *u8 47 i = 0 48 while rr[i] != (0 as u8) { b[o] = rr[i]; o = o + 1; i = i + 1 } 49 } 50 b[o] = 10 as u8 51 o = o + 1 52 sys_write(fd, b, o) 53 sys_close(fd) 54 return 1 55} 56 57func main() -> i64 { 58 hw("=== nx_worldgen_gate -- sovereign Infinigen rung 1: procedural landscapes ===\n" as *u8) 59 var fails: i64 = 0 60 let W: i64 = wg_w(); let H: i64 = wg_h(); let npx: i64 = W*H 61 let t0: *i64 = sys_mmap(npx*8) as *i64 62 let t1b: *i64 = sys_mmap(npx*8) as *i64 63 let t2b: *i64 = sys_mmap(npx*8) as *i64 64 let t3b: *i64 = sys_mmap(npx*8) as *i64 65 66 worldgen_render(11, 0, t0) 67 worldgen_render(77, 0, t1b) 68 worldgen_render(314, 0, t2b) 69 worldgen_render(11, 1, t3b) // seed 11 at SUNSET 70 71 // classify pixels of world 0 (sky = bluish/high, terrain = greenish/darker, water) -- just check all 3 bands exist 72 var sky: i64 = 0; var land: i64 = 0; var lowmid: i64 = 0 73 var i: i64 = 0 74 while i < npx { 75 let px: i64 = t0[i]; let r: i64 = px&255; let g: i64 = (px>>8)&255; let b: i64 = (px>>16)&255 76 if b > r + 20 { if b > 120 { sky = sky + 1 } } // bluish = sky/water 77 if g > r { if g > b { land = land + 1 } } // greenish = vegetation/terrain 78 if (r+g+b) < 330 { lowmid = lowmid + 1 } 79 i = i + 1 80 } 81 hw(" world seed=11: bluish(sky/water)="); pn(sky); hw(" greenish(land)="); pn(land); hw("\n" as *u8) 82 var T1: i64 = 0 83 if sky > 30000 { if land > 30000 { T1 = 1 } } 84 if T1 == 1 { hw("T1 PASS a coherent world renders (sky + terrain both present)\n" as *u8) } 85 else { fails=fails+1; hw("T1 FAIL scene incomplete\n" as *u8) } 86 87 let d01: i64 = L1(t0, t1b, npx); let d02: i64 = L1(t0, t2b, npx); let d12: i64 = L1(t1b, t2b, npx) 88 hw(" variety L1: s11-s77="); pn(d01); hw(" s11-s314="); pn(d02); hw(" s77-s314="); pn(d12); hw("\n" as *u8) 89 var T2: i64 = 0 90 if d01 > 4000000 { if d02 > 4000000 { if d12 > 4000000 { T2 = 1 } } } 91 if T2 == 1 { hw("T2 PASS VARIETY: different seeds -> different worlds\n" as *u8) } 92 else { fails=fails+1; hw("T2 FAIL worlds too similar\n" as *u8) } 93 94 let dw: i64 = L1(t0, t3b, npx) 95 hw(" weather L1 (clear vs sunset, same seed): "); pn(dw); hw("\n" as *u8) 96 let chk: *i64 = sys_mmap(npx*8) as *i64 97 worldgen_render(11, 1, chk) 98 var ddet: i64 = 0 99 i = 0 100 while i < npx { if chk[i]!=t3b[i] { ddet=ddet+1 } i=i+1 } 101 var T3: i64 = 0 102 if dw > 6000000 { if ddet == 0 { T3 = 1 } } 103 if T3 == 1 { hw("T3 PASS weather retints the scene (clear!=sunset) + deterministic\n" as *u8) } 104 else { fails=fails+1; hw("T3 FAIL weather="); pn(dw); hw(" ddet="); pn(ddet); hw("\n" as *u8) } 105 106 // gallery 2x2 107 let GW: i64 = W*2; let GH: i64 = H*2 108 let gal: *i64 = sys_mmap(GW*GH*8) as *i64 109 var y: i64 = 0 110 while y < H { 111 var x: i64 = 0 112 while x < W { 113 gal[y*GW+x] = t0[y*W+x]; gal[y*GW+W+x] = t1b[y*W+x] 114 gal[(H+y)*GW+x] = t2b[y*W+x]; gal[(H+y)*GW+W+x] = t3b[y*W+x] 115 x = x + 1 116 } 117 y = y + 1 118 } 119 write_png(gal, GW, GH, "knowledge/nx_worldgen.png" as *u8) 120 hw("T4 gallery -> knowledge/nx_worldgen.png (seed11 | seed77 | seed314 | seed11-sunset)\n" as *u8) 121 122 if fails == 0 { hw("WORLDGEN-GATE 4/4 GREEN -- sovereign Infinigen rung 1: seeds grow whole LANDSCAPES (fBm terrain + water + sky + sun + clouds + weather), integer + deterministic, no ML, no assets\n" as *u8); wg_log(0); sys_exit(0); return 0 } 123 hw("WORLDGEN-GATE RED fails="); pn(fails); hw("\n" as *u8) 124 wg_log(fails) 125 sys_exit(1) 126 return 1 127}