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}