code wiki / _hdl_build / nx_favela_census_gate.nx

nx_favela_census_gate.nx source

↩ module page · 89 lines · 4991 B

1// nx_favela_census_gate.nx -- gates the favela census organ against a KNOWN-ANSWER arena: formula correctness 2// (sev8 open + sev4 rooted -> favela 666 / rooted 333), measured dup parsing (seeded log = 3), the colocated 3// VERDICT line, and fail-closed RED on a missing manifest. Runs the REAL /tmp/nx_favela_census.sov.elf child. 4// The arena seeds a NATIVE SEG-STORE PLANE (not a .tsv) because that is what the shipped organ now reads. 5// license_tier: ORIGINAL expect_exit: 0 6import "nx_store_seed_lib.nx" 7import "nx_seg_store.nx" 8import "nx_syscalls.nx" 9 10func fg_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 11func fg_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 } 12func fg_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 13func fg_wfile(path: *u8, content: *u8) -> i64 { 14 let fd: i64=sys_openat_wr(path, 0x1a4) 15 if fd<0 { return 0-1 } 16 sys_write(fd, content, fg_slen(content)) 17 sys_close(fd) 18 return 0 19} 20func fg_contains(buf: *u8, n: i64, needle: *u8) -> i64 { 21 let nl: i64=fg_slen(needle) 22 if nl==0 { return 0 } 23 var i: i64=0 24 while i+nl<=n { 25 var j: i64=0 26 var ok: i64=1 27 while j<nl { if buf[i+j]!=needle[j] { ok=0; j=nl } else { j=j+1 } } 28 if ok==1 { return 1 } 29 i=i+1 30 } 31 return 0 32} 33func fg_run_in(dir: *u8) -> i64 { 34 let pid: i64=sys_fork() 35 if pid<0 { return 201 } 36 if pid==0 { 37 sys_chdir(dir) 38 let av: *i64=sys_mmap(32) as *i64 39 av[0]="/tmp/nx_favela_census.sov.elf\x00" as *u8 as i64 40 av[1]=0 41 sys_execve("/tmp/nx_favela_census.sov.elf\x00" as *u8, av, 0 as *i64) 42 sys_exit(127) 43 return 127 44 } 45 let stp: *i64=sys_mmap(16) as *i64 46 sys_wait4(pid, stp, 0) 47 return (stp[0]>>8)&255 48} 49 50func main() -> i64 { 51 fg_puts("=== nx_favela_census_gate -- known-answer formula + measured parse + fail-closed ===\n" as *u8) 52 var fails: i64=0 53 sys_mkdir("/tmp/favtest\x00" as *u8, 0x1ed) 54 sys_mkdir("/tmp/favtest/knowledge\x00" as *u8, 0x1ed) 55 sys_mkdir("/tmp/favtest/knowledge/registry\x00" as *u8, 0x1ed) 56 sys_mkdir("/tmp/favtest/knowledge/status\x00" as *u8, 0x1ed) 57 sys_mkdir("/tmp/favtest_empty\x00" as *u8, 0x1ed) 58 sys_mkdir("/tmp/favtest/knowledge/store\x00" as *u8, 0x1ed) 59 let sF: *u8="classA\tworkaround\t8\topen\tseqX\tevA\tfixA\nclassB\tresidue\t4\trooted\tseqY\tevB\tfixB\n\x00" as *u8 60 sts_seed("/tmp/favtest/knowledge/store/favela-\x00" as *u8, sF, fg_slen(sF)) 61 fg_wfile("/tmp/favtest/knowledge/status/dup_source.log\x00" as *u8, 62 "scan\nDUP basename: a.nx\nDUP basename: b.nx\nDUP basename: c.nx\nverdict=AMBER\n\x00" as *u8) 63 fg_wfile("/tmp/favtest/knowledge/registry/deploy_checks.tsv\x00" as *u8, 64 "# hdr\nrow1\ta\tb\tc\td\nrow2\ta\tb\tc\td\n\x00" as *u8) 65 // T1+T2+T3: run in the seeded arena, then judge the colocated log 66 let rc: i64=fg_run_in("/tmp/favtest\x00" as *u8) 67 let szp: *i64=sys_mmap(16) as *i64 68 let lg: *u8=sys_read_file("/tmp/favtest/knowledge/status/favela_census.log\x00" as *u8, szp) 69 var t1: i64=0 70 if rc==0 { if (lg as i64)!=0 { 71 if fg_contains(lg, szp[0], "\x22favela_permil\x22:666\x00" as *u8)==1 { if fg_contains(lg, szp[0], "\x22rooted_permil\x22:333\x00" as *u8)==1 { t1=1 } } 72 } } 73 if t1==1 { fg_puts("T1 PASS formula: sev8-open + sev4-rooted -> favela 666 / rooted 333\n" as *u8) } else { fails=fails+1; fg_puts("T1 FAIL formula rc="); fg_pn(rc); fg_puts("\n" as *u8) } 74 var t2: i64=0 75 if (lg as i64)!=0 { if fg_contains(lg, szp[0], "\x22dup_basenames\x22:3\x00" as *u8)==1 { if fg_contains(lg, szp[0], "\x22deploy_guards_wired\x22:2\x00" as *u8)==1 { t2=1 } } } 76 if t2==1 { fg_puts("T2 PASS measured: dup=3 parsed from seeded log, guards=2 from seeded tsv\n" as *u8) } else { fails=fails+1; fg_puts("T2 FAIL measured parse\n" as *u8) } 77 var t3: i64=0 78 if (lg as i64)!=0 { if fg_contains(lg, szp[0], "VERDICT=GREEN classes=2\x00" as *u8)==1 { t3=1 } } 79 if t3==1 { fg_puts("T3 PASS colocated evidence log carries the VERDICT line\n" as *u8) } else { fails=fails+1; fg_puts("T3 FAIL verdict line\n" as *u8) } 80 // T4 fail-closed: no manifest -> RED exit 1 81 let rc4: i64=fg_run_in("/tmp/favtest_empty\x00" as *u8) 82 var t4: i64=0 83 if rc4==1 { t4=1 } 84 if t4==1 { fg_puts("T4 PASS fail-closed: missing manifest = RED exit 1 (no index without data)\n" as *u8) } else { fails=fails+1; fg_puts("T4 FAIL rc4="); fg_pn(rc4); fg_puts("\n" as *u8) } 85 if fails==0 { fg_puts("FAVELA-CENSUS GREEN -- formula, measurement, evidence colocation, fail-closed all proven\n" as *u8); sys_exit(0); return 0 } 86 fg_puts("FAVELA-CENSUS RED fails="); fg_pn(fails); fg_puts("\n" as *u8) 87 sys_exit(1) 88 return 1 89}