code wiki / _hdl_build / nx_site_command_test.nx
nx_site_command_test.nx source
↩ module page · 49 lines · 3279 B
1// nx_site_command_test.nx -- prove editing the site VIA COMMAND PROMPT with versioned ROLLBACK (the modern
2// AI-site-builder loop, sovereign). Exit 0 on 9/9. license_tier: ORIGINAL
3
4import "nx_site_command.nx"
5import "nx_syscalls.nx"
6
7func mt_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
8func mt_num(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;k=1}; while m>0{t[k]=48+(m%10);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 }
9
10func main() -> i64 {
11 mt_puts("=== EDIT VIA COMMAND PROMPT + ROLLBACK ===\n" as *u8)
12 let c_add: i64 = cmd_parse("add an immigration law practice area" as *u8)
13 let c_hero: i64 = cmd_parse("change the hero headline to something punchier" as *u8)
14 let c_cta: i64 = cmd_parse("make the button say Call Now" as *u8)
15 let c_rm: i64 = cmd_parse("remove the criminal defense section" as *u8)
16 let c_rb: i64 = cmd_parse("rollback to the previous version" as *u8)
17 let c_unk: i64 = cmd_parse("please paint it teal-ish maybe" as *u8)
18 mt_puts(" parse: add->" as *u8); mt_puts(cmd_op_label(c_add)); mt_puts(" hero->" as *u8); mt_puts(cmd_op_label(c_hero)); mt_puts(" button->" as *u8); mt_puts(cmd_op_label(c_cta)); mt_puts(" rollback->" as *u8); mt_puts(cmd_op_label(c_rb)); mt_puts("\n" as *u8)
19
20 // versioned editing: v0 -> add -> v1 -> hero -> v2 -> cta -> v3 ; unknown = no-op
21 var v: i64 = 0
22 v = cmd_apply_version(v, c_add) // 1
23 v = cmd_apply_version(v, c_hero) // 2
24 v = cmd_apply_version(v, c_cta) // 3
25 let v_after_unknown: i64 = cmd_apply_version(v, c_unk) // stays 3 (safe no-op)
26 // rollback to v1
27 let restored: i64 = cmd_rollback(v, 1)
28 mt_puts(" versions: after 3 edits v=" as *u8); mt_num(v); mt_puts(" unknown-cmd keeps v=" as *u8); mt_num(v_after_unknown); mt_puts(" rollback->v" as *u8); mt_num(restored); mt_puts("\n" as *u8)
29
30 let r: *i64 = sys_mmap(8*8) as *i64
31 r[0]=0; if c_add == CMD_ADD_SECTION { r[0]=1 }
32 r[1]=0; if c_hero == CMD_SET_HERO { r[1]=1 }
33 r[2]=0; if c_cta == CMD_SET_CTA { r[2]=1 } // "button" -> set CTA
34 r[3]=0; if c_rm == CMD_REMOVE_SECTION { r[3]=1 }
35 r[4]=0; if c_rb == CMD_ROLLBACK { r[4]=1 }
36 r[5]=0; if c_unk == CMD_UNKNOWN { r[5]=1 } // ambiguous -> no-op (safe)
37 r[6]=0; if v == 3 { if v_after_unknown == 3 { r[6]=1 } } // 3 real edits; unknown didn't bump
38 r[7]=0; if restored == 1 { r[7]=1 } // rollback restored v1
39 r[8]=0; if cmd_can_rollback(3, 1) == 1 { if cmd_can_rollback(3, 5) == 0 { r[8]=1 } } // back yes, forward no
40 var pass: i64 = 0; var j: i64 = 0
41 while j < 9 { pass = pass + r[j]; j = j + 1 }
42 mt_puts("---- passed " as *u8); mt_num(pass); mt_puts("/9 ----\n" as *u8)
43 if pass == 9 {
44 mt_puts(" The person edits via prompt; the team parses the intent, regenerates, versions every change,\n" as *u8)
45 mt_puts(" and can ROLL BACK -- the modern AI-site-builder loop, sovereign (Researcher->Generator->Command->Deploy).\n" as *u8)
46 sys_exit(0); return 0
47 }
48 mt_puts(" FAIL\n" as *u8); sys_exit(1); return 1
49}