code wiki / _hdl_build / nx_genesis_live_gate.nx
nx_genesis_live_gate.nx source
↩ module page · 101 lines · 4483 B
1// nx_genesis_live_gate.nx -- proves the per-host live driver-sovereignty ingest.
2//
3// T1 real-host-consistent : on the real hwmap.tsv, present>=1 AND the tally sums to present
4// N1 uncovered-seen : a device whose PCI class is unmapped -> uncovered >= 1 (a real gap)
5// N2 gpu-locked-seen : a class-0x03 device -> third_party >= 1 (the GPU lock)
6// N3 storage-sovereign-seen: a class-0x01 device -> sovereign >= 1 (virtio-blk driver)
7//
8// GREEN only if all four hold. Evidence -> knowledge/status/genesis_live_gate.log.
9// Sovereign: imports nx_genesis_live + nx_framed_append + nx_syscalls (no gcc). license_tier: ORIGINAL
10import "nx_genesis_live.nx"
11import "nx_framed_append.nx"
12import "nx_syscalls.nx"
13
14const GLG_LOG: *u8 = "knowledge/status/genesis_live_gate.log"
15
16func gv_cat(dst: *u8, off: i64, s: *u8) -> i64 { var i: i64 = 0; while s[i] != 0 as u8 { dst[off + i] = s[i]; i = i + 1 } return off + i }
17func gv_catn(dst: *u8, off: i64, v: i64) -> i64 {
18 var m: i64 = v; var o: i64 = off
19 if m < 0 { m = 0 - m }
20 let t: *u8 = sys_mmap(28); var k: i64 = 0
21 if m == 0 { t[0] = 48 as u8; k = 1 }
22 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 }
23 var i: i64 = 0
24 while i < k { dst[o + i] = t[k - 1 - i]; i = i + 1 }
25 return o + k
26}
27func gv_write_file(path: *u8, content: *u8) -> i64 {
28 let fd: i64 = sys_openat_wr(path, 0x1a4)
29 if fd < 0 { return 0 - 1 }
30 var n: i64 = 0; while content[n] != 0 as u8 { n = n + 1 }
31 sys_write(fd, content, n); sys_close(fd); return 0
32}
33func gv_tmppath(out: *u8, stem: *u8, epoch: i64, pid: i64) -> i64 {
34 var o: i64 = gv_cat(out, 0, stem); o = gv_catn(out, o, epoch); o = gv_cat(out, o, "." as *u8); o = gv_catn(out, o, pid); o = gv_cat(out, o, ".tsv\x00" as *u8)
35 out[o] = 0 as u8; return o
36}
37func gv_row(name: *u8, pass: i64) -> i64 {
38 let buf: *u8 = sys_mmap(528)
39 var o: i64 = 0
40 o = gv_cat(buf, o, "GLIVE row=\x00" as *u8)
41 o = gv_cat(buf, o, name)
42 if pass == 1 { o = gv_cat(buf, o, " verdict=PASS\x00" as *u8) } else { o = gv_cat(buf, o, " verdict=FAIL\x00" as *u8) }
43 buf[o] = 0 as u8
44 fa_appendz(GLG_LOG, buf, 512)
45 gl_puts(" "); gl_puts(name)
46 if pass == 1 { gl_puts(" PASS\n") } else { gl_puts(" FAIL\n") }
47 return 0
48}
49
50func main() -> i64 {
51 gl_puts("genesis-live gate (per-host driver-sovereignty ingest)\n")
52 let epoch: i64 = sys_now_realtime_sec()
53 let pid: i64 = __syscall(39, 0, 0, 0, 0, 0, 0)
54 let outs: *i64 = sys_mmap(128) as *i64
55
56 // T1 real host
57 var t1: i64 = 0
58 if gl_analyze(GL_HWMAP, outs) == 0 {
59 let acc: i64 = outs[1] + outs[2] + outs[3] + outs[4] + outs[5]
60 if outs[0] >= 1 { if acc == outs[0] { t1 = 1 } }
61 }
62
63 let p1: *u8 = sys_mmap(256); gv_tmppath(p1, "/tmp/glive_unc." as *u8, epoch, pid)
64 let p2: *u8 = sys_mmap(256); gv_tmppath(p2, "/tmp/glive_gpu." as *u8, epoch, pid)
65 let p3: *u8 = sys_mmap(256); gv_tmppath(p3, "/tmp/glive_stg." as *u8, epoch, pid)
66 gv_write_file(p1, "00:00.0\t0x1234\t0x5678\t0x110000\n" as *u8) // class 0x11 -> unmapped -> uncovered
67 gv_write_file(p2, "00:00.0\t0x10de\t0x2204\t0x030000\n" as *u8) // class 0x03 -> gpu -> third-party
68 gv_write_file(p3, "00:00.0\t0x1af4\t0x1001\t0x010000\n" as *u8) // class 0x01 -> storage -> sovereign
69
70 var n1: i64 = 0
71 if gl_analyze(p1, outs) == 0 { if outs[4] >= 1 { n1 = 1 } }
72 var n2: i64 = 0
73 if gl_analyze(p2, outs) == 0 { if outs[2] >= 1 { n2 = 1 } }
74 var n3: i64 = 0
75 if gl_analyze(p3, outs) == 0 { if outs[1] >= 1 { n3 = 1 } }
76
77 var passes: i64 = 0
78 if t1 == 1 { passes = passes + 1 }
79 if n1 == 1 { passes = passes + 1 }
80 if n2 == 1 { passes = passes + 1 }
81 if n3 == 1 { passes = passes + 1 }
82 var green: i64 = 0
83 if passes == 4 { green = 1 }
84
85 gv_row("T1-real-host-consistent \x00" as *u8, t1)
86 gv_row("N1-uncovered-class-seen \x00" as *u8, n1)
87 gv_row("N2-gpu-locked-seen \x00" as *u8, n2)
88 gv_row("N3-storage-sovereign-seen\x00" as *u8, n3)
89
90 let vb: *u8 = sys_mmap(528)
91 var o: i64 = 0
92 o = gv_cat(vb, o, "GENESIS-LIVE verdict=\x00" as *u8)
93 if green == 1 { o = gv_cat(vb, o, "GREEN\x00" as *u8) } else { o = gv_cat(vb, o, "RED\x00" as *u8) }
94 o = gv_cat(vb, o, " passes=\x00" as *u8); o = gv_catn(vb, o, passes); o = gv_cat(vb, o, "/4 END\x00" as *u8)
95 vb[o] = 0 as u8
96 fa_appendz(GLG_LOG, vb, 512)
97 gl_puts(vb); gl_puts("\n")
98
99 if green == 1 { return 0 }
100 return 1
101}