code wiki / _hdl_build / nx_pub_pd_exceed_gate.nx

nx_pub_pd_exceed_gate.nx source

↩ module page · 77 lines · 6567 B

1// nx_pub_pd_exceed_gate.nx -- MEASURED head-to-head: progressive delivery LIMITS BLAST RADIUS vs naive. 2// 3// A corrupt artifact (bytes != approved sha) is pushed three ways. Each pub_* organ verifies-before-promote, so the 4// corrupt bytes reach ZERO targets; the naive baselines (no verify) splatter corruption: 5// PROMOTE-CHAIN : naive deploys straight to prod -> prod corrupt (blast 1) vs chain stops at dev -> prod clean (0) 6// FAN-OUT : naive writes each target -> all 3 corrupt (blast 3) vs all-or-nothing -> 0 corrupt 7// ROLLING : naive all-at-once -> all 3 corrupt (blast 3) vs halt at instance 0 -> 0 corrupt 8// EXCEEDS iff naive blast > 0 (gap real -> liar-kill) AND pub blast == 0. File-based. license_tier: ORIGINAL expect_exit: 0 9import "nx_syscalls.nx" 10import "nx_publisher.nx" 11import "nx_runpath.nx" 12 13func g_w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 14func g_n(v: i64) -> i64 { var m: i64=v; if m<0{g_w("-" as *u8);m=0-m} let t:*u8=sys_mmap(24); 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; let o:*u8=sys_mmap(24); while i<k{o[i]=t[k-1-i];i=i+1} sys_write(1,o,k); return 0 } 15func g_row(id: *u8, ok: i64, pass: *i64) -> i64 { g_w(" " as *u8); g_w(id); g_w(": " as *u8); if ok==1 { g_w("OK\n" as *u8); pass[0]=pass[0]+1 } else { g_w("FAIL\n" as *u8) } return 0 } 16func sv_write(path: *u8, content: *u8) -> i64 { let fd: i64 = sys_openat_wr(path, 0x1a4); if fd<0 { return 0 } var n: i64=0; while content[n]!=(0 as u8){n=n+1} sys_write(fd, content, n); sys_close(fd); return 1 } 17func g_mkdir(D: *u8, name: *u8) -> *u8 { let p: *u8 = sys_mmap(700); pub_join(D, name, p); __syscall(83, p as i64, 493, 0, 0, 0, 0); return p } 18func dest_in(root: *u8) -> *u8 { let p: *u8 = sys_mmap(700); pub_join(root, "d.html" as *u8, p); return p } 19 20func main() -> i64 { 21 let pass: *i64 = sys_mmap(8) as *i64; pass[0]=0 22 g_w("=== NX-PUB-PD-EXCEED GATE (progressive delivery limits blast radius vs naive; measured) ===\n" as *u8) 23 let wsid: *u8 = sys_mmap(64); rp_wsid(wsid); rp_ensure(wsid) 24 let D: *u8 = sys_mmap(512); rp_path(wsid, "ppde" as *u8, D); __syscall(83, D as i64, 493, 0, 0, 0, 0) 25 let stg: *u8 = g_mkdir(D, "stg" as *u8) 26 let good: *u8 = sys_mmap(700); pub_join(D, "good.src" as *u8, good); sv_write(good, "GOOD-BYTES\n" as *u8) 27 let corrupt: *u8 = sys_mmap(700); pub_join(D, "corrupt.src" as *u8, corrupt); sv_write(corrupt, "CORRUPT-XYZ\n" as *u8) 28 let sha_good: *u8 = sys_mmap(72); pub_sha_file(good, sha_good) // approve GOOD; we will push CORRUPT claiming this sha 29 30 // ---- PROMOTE-CHAIN: prod blast ---- 31 let dev: *u8 = g_mkdir(D, "dev" as *u8); let stage: *u8 = g_mkdir(D, "stage" as *u8); let prod: *u8 = g_mkdir(D, "prod" as *u8) 32 let prod_d: *u8 = dest_in(prod) 33 __syscall(87, prod_d as i64, 0,0,0,0,0) 34 pub_copy(corrupt, prod_d) // NAIVE: straight to prod, no verify 35 let naive_chain: i64 = pub_exists(prod_d) // prod now corrupt = blast 1 36 __syscall(87, prod_d as i64, 0,0,0,0,0) // reset 37 let roots: *i64 = sys_mmap(64) as *i64; roots[0]=dev as i64; roots[1]=stage as i64; roots[2]=prod as i64 38 pub_promote_chain(sha_good, corrupt, "d.html" as *u8, roots, 3, stg) // verify fails at dev -> prod untouched 39 let pub_chain: i64 = pub_exists(prod_d) // expect 0 40 41 // ---- FAN-OUT: corrupt-target count ---- 42 let f1: *u8 = g_mkdir(D, "f1" as *u8); let f2: *u8 = g_mkdir(D, "f2" as *u8); let f3: *u8 = g_mkdir(D, "f3" as *u8) 43 let f1d: *u8 = dest_in(f1); let f2d: *u8 = dest_in(f2); let f3d: *u8 = dest_in(f3) 44 __syscall(87, f1d as i64,0,0,0,0,0); __syscall(87, f2d as i64,0,0,0,0,0); __syscall(87, f3d as i64,0,0,0,0,0) 45 pub_copy(corrupt, f1d); pub_copy(corrupt, f2d); pub_copy(corrupt, f3d) // NAIVE: write each, no verify 46 let naive_fan: i64 = pub_exists(f1d) + pub_exists(f2d) + pub_exists(f3d) // 3 corrupt 47 __syscall(87, f1d as i64,0,0,0,0,0); __syscall(87, f2d as i64,0,0,0,0,0); __syscall(87, f3d as i64,0,0,0,0,0) 48 let tg: *i64 = sys_mmap(64) as *i64; tg[0]=f1 as i64; tg[1]=f2 as i64; tg[2]=f3 as i64 49 pub_fanout(sha_good, corrupt, "d.html" as *u8, tg, 3, stg) // verify fails once -> 0 promoted 50 let pub_fan: i64 = pub_exists(f1d) + pub_exists(f2d) + pub_exists(f3d) // expect 0 51 52 // ---- ROLLING: corrupt-instance count ---- 53 let r1: *u8 = g_mkdir(D, "r1" as *u8); let r2: *u8 = g_mkdir(D, "r2" as *u8); let r3: *u8 = g_mkdir(D, "r3" as *u8) 54 let r1d: *u8 = dest_in(r1); let r2d: *u8 = dest_in(r2); let r3d: *u8 = dest_in(r3) 55 __syscall(87, r1d as i64,0,0,0,0,0); __syscall(87, r2d as i64,0,0,0,0,0); __syscall(87, r3d as i64,0,0,0,0,0) 56 pub_copy(corrupt, r1d); pub_copy(corrupt, r2d); pub_copy(corrupt, r3d) // NAIVE: all-at-once, no verify 57 let naive_roll: i64 = pub_exists(r1d) + pub_exists(r2d) + pub_exists(r3d) // 3 corrupt 58 __syscall(87, r1d as i64,0,0,0,0,0); __syscall(87, r2d as i64,0,0,0,0,0); __syscall(87, r3d as i64,0,0,0,0,0) 59 let rg: *i64 = sys_mmap(64) as *i64; rg[0]=r1 as i64; rg[1]=r2 as i64; rg[2]=r3 as i64 60 pub_rolling(sha_good, corrupt, "d.html" as *u8, rg, 3, stg) // verify fails at instance 0 -> halt 61 let pub_roll: i64 = pub_exists(r1d) + pub_exists(r2d) + pub_exists(r3d) // expect 0 62 63 g_w(" PROMOTE-CHAIN prod-blast: naive=" as *u8); g_n(naive_chain); g_w(" pub=" as *u8); g_n(pub_chain); g_w("\n" as *u8) 64 g_w(" FAN-OUT corrupt-targets: naive=" as *u8); g_n(naive_fan); g_w(" pub=" as *u8); g_n(pub_fan); g_w("\n" as *u8) 65 g_w(" ROLLING corrupt-instances: naive=" as *u8); g_n(naive_roll); g_w(" pub=" as *u8); g_n(pub_roll); g_w("\n" as *u8) 66 67 let ex_chain: i64 = ((naive_chain>0) as i64) & ((pub_chain==0) as i64) 68 let ex_fan: i64 = ((naive_fan>0) as i64) & ((pub_fan==0) as i64) 69 let ex_roll: i64 = ((naive_roll>0) as i64) & ((pub_roll==0) as i64) 70 g_row("EXCEEDS promote-chain: corrupt reaches prod naive>0 vs chain 0 (fail-closed before prod)" as *u8, ex_chain, pass) 71 g_row("EXCEEDS fan-out: corrupt reaches targets naive=3 vs all-or-nothing 0" as *u8, ex_fan, pass) 72 g_row("EXCEEDS rolling: corrupt reaches instances naive=3 vs halt-at-0 -> 0" as *u8, ex_roll, pass) 73 74 g_w("NX-PUB-PD-EXCEED rows=3 pass=" as *u8); g_n(pass[0]) 75 if pass[0]==3 { g_w(" verdict=GREEN\n" as *u8); sys_exit(0); return 0 } 76 g_w(" verdict=RED\n" as *u8); sys_exit(1); return 1 77}