code wiki / _hdl_build / nx_sitegen_freeform_gate.nx
nx_sitegen_freeform_gate.nx source
↩ module page · 82 lines · 6349 B
1// nx_sitegen_freeform_gate.nx -- gate for the FREE-FORM CANVAS profile (nx_sitegen_freeform). Proves the
2// power-user tier: elements are PLACED FREELY (x/y/width honored), every element type renders (heading/text/
3// button/image), text AND href are injection-ESCAPED (no attribute breakout), the doc is portable (rebuilds
4// byte-identical), and a 2nd canvas is genuinely different (data-driven, not one-off). Positive + negative
5// controls. Appends a CMSGATE row to knowledge/status/cms_gate.log on all-pass. license_tier: ORIGINAL
6import "nx_sitegen_freeform.nx"
7import "nx_syscalls.nx"
8
9func fgw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
10func fgn(v: i64) -> i64 { let bb: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m}; let t: *u8=sys_mmap(28); var k: i64=0; if m==0{t[0]=48 as u8;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{bb[i]=t[k-1-i];i=i+1}; sys_write(1,bb,k); return 0 }
11func fgcat(dst: *u8, off: i64, s: *u8) -> i64 { var o: i64=off; var k: i64=0; while s[k]!=(0 as u8){dst[o]=s[k];o=o+1;k=k+1} return o }
12func fgcatn(dst: *u8, off: i64, v: i64) -> i64 { var o: i64=off; let t: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m}; var k: i64=0; if m==0{t[0]=48 as u8;k=1}; while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1}; var i: i64=0; while i<k{dst[o]=t[k-1-i];o=o+1;i=i+1} return o }
13func fgrow(id: i64, ok: i64, what: *u8) -> i64 { fgw("FFROW " as *u8); fgn(id); fgw(" " as *u8); if ok==1 { fgw("PASS " as *u8) } else { fgw("FAIL " as *u8) } fgw(what); fgw("\n" as *u8); return ok }
14func fglen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n }
15func fghas(hay: *u8, hn: i64, needle: *u8) -> i64 {
16 var nl: i64=0; while needle[nl]!=(0 as u8){nl=nl+1}
17 if nl==0 { return 1 } if nl>hn { return 0 }
18 let last: i64=hn-nl; var i: i64=0
19 while i<=last { var j: i64=0; var hit: i64=1; while j<nl { if (hay[i+j] as i64)!=(needle[j] as i64){hit=0;j=nl} if hit==1{j=j+1} } if hit==1 { return 1 } i=i+1 }
20 return 0
21}
22func fgeq(a: *u8, an: i64, b: *u8, bn: i64) -> i64 { if an!=bn { return 0 } var i: i64=0; while i<an { if (a[i] as i64)!=(b[i] as i64){return 0} i=i+1 } return 1 }
23
24func main() -> i64 {
25 let doc: *u8 = "title|My Free Canvas\nel|heading|50|40|400|Welcome to my page|\nel|text|50|120|500|This is placed freely on the canvas.|\nel|button|50|300|200|Contact us|#contact\nel|image|600|40|300|A photo|/img/photo.jpg\n" as *u8
26 let out: *u8 = sys_mmap(262144)
27 let out2: *u8 = sys_mmap(262144)
28 let ln: i64 = se_build_freeform(doc, fglen(doc), out, 262143)
29
30 var rows: i64 = 0
31 var pass: i64 = 0
32 var ok: i64 = 0
33
34 // R0: builds + title + heading content
35 ok = 0; if ln>0 { if fghas(out,ln,"My Free Canvas" as *u8)==1 { if fghas(out,ln,"Welcome to my page" as *u8)==1 { ok=1 } } }
36 rows=rows+1; pass=pass+fgrow(0, ok, "free-form canvas builds from data (title + heading)" as *u8)
37
38 // R1: every element type rendered
39 ok = 0; if fghas(out,ln,"This is placed freely on the canvas." as *u8)==1 { if fghas(out,ln,"<a class=\"btn\" href=\"#contact\"" as *u8)==1 { if fghas(out,ln,"<img src=\"/img/photo.jpg\"" as *u8)==1 { if fghas(out,ln,"<h2>Welcome to my page</h2>" as *u8)==1 { ok=1 } } } }
40 rows=rows+1; pass=pass+fgrow(1, ok, "all element types render (heading/text/button/image)" as *u8)
41
42 // R2: placement honored (absolute positioning at the given x/y/width)
43 ok = 0; if fghas(out,ln,"position:absolute" as *u8)==1 { if fghas(out,ln,"left:50px;top:40px;width:400px" as *u8)==1 { if fghas(out,ln,"left:600px;top:40px;width:300px" as *u8)==1 { ok=1 } } }
44 rows=rows+1; pass=pass+fgrow(2, ok, "placement honored: elements positioned freely at x/y/width" as *u8)
45
46 // R3 (NEG): hostile heading text escaped
47 let dmal: *u8 = "title|X\nel|heading|0|0|100|<script>alert(1)</script>|\n" as *u8
48 let lm: i64 = se_build_freeform(dmal, fglen(dmal), out2, 262143)
49 ok = 0; if lm>0 { if fghas(out2,lm,"<script>alert(1)" as *u8)==0 { if fghas(out2,lm,"<script>alert(1)" as *u8)==1 { ok=1 } } }
50 rows=rows+1; pass=pass+fgrow(3, ok, "NEG: hostile heading text escaped (no raw <script>)" as *u8)
51
52 // R4 (NEG): hostile href escaped -- no attribute breakout
53 let dh: *u8 = "title|X\nel|button|0|0|100|Click|x\"><script>alert(2)</script>\n" as *u8
54 let lh: i64 = se_build_freeform(dh, fglen(dh), out2, 262143)
55 ok = 0; if lh>0 { if fghas(out2,lh,"\"><script>alert(2)" as *u8)==0 { if fghas(out2,lh,"<script>alert(2)" as *u8)==1 { ok=1 } } }
56 rows=rows+1; pass=pass+fgrow(4, ok, "NEG: hostile href escaped (no attribute breakout)" as *u8)
57
58 // R5: deterministic / portable -- same doc rebuilds byte-identical
59 let l2: i64 = se_build_freeform(doc, fglen(doc), out2, 262143)
60 ok = fgeq(out, ln, out2, l2)
61 rows=rows+1; pass=pass+fgrow(5, ok, "portable+deterministic: same doc rebuilds byte-identical" as *u8)
62
63 // R6: a 2nd different canvas is genuinely different (data-driven, no bleed)
64 let d2: *u8 = "title|Other\nel|heading|10|10|200|A Totally Different Page|\n" as *u8
65 let l3: i64 = se_build_freeform(d2, fglen(d2), out2, 262143)
66 ok = 0; if fghas(out2,l3,"A Totally Different Page" as *u8)==1 { if fghas(out2,l3,"Welcome to my page" as *u8)==0 { ok=1 } }
67 rows=rows+1; pass=pass+fgrow(6, ok, "2nd different canvas, no bleed from the 1st (data-driven)" as *u8)
68
69 fgw("NX-SITEGEN-FREEFORM-GATE rows=" as *u8); fgn(rows); fgw(" pass=" as *u8); fgn(pass); fgw("\n" as *u8)
70 if pass == rows {
71 let line: *u8 = sys_mmap(256)
72 var off: i64 = fgcat(line, 0, "CMSGATE row=nx_sitegen_freeform site-builder-freeform-canvas rows=" as *u8)
73 off = fgcatn(line, off, rows); off = fgcat(line, off, " pass=" as *u8); off = fgcatn(line, off, pass)
74 off = fgcat(line, off, " verdict=PASS (free placement + escaped + portable; structural gate relaxed by design)\n" as *u8)
75 let gf: i64 = sys_openat_append("knowledge/status/cms_gate.log" as *u8, 0x1a4)
76 if gf >= 0 { sys_write(gf, line, off); sys_close(gf) }
77 fgw("NX-SITEGEN-FREEFORM-GATE verdict=PASS -- free-form canvas profile: governed + portable free placement\n" as *u8)
78 sys_exit(0); return 0
79 }
80 fgw("NX-SITEGEN-FREEFORM-GATE verdict=FAIL -- NOT recorded (no fake-green)\n" as *u8)
81 sys_exit(1); return 1
82}