code wiki / _hdl_build / nx_sovereign_format_census.nx

nx_sovereign_format_census.nx source

↩ module page · 221 lines · 11415 B

1// nx_sovereign_format_census.nx -- the ENFORCEMENT SENSOR for the sovereign-information-management law 2// ([[feedback-no-tsv-sovereign-seg-store]] / [[feedback-pure-nishi-infomgmt-no-sql]]): why do organs keep 3// writing .tsv/.log/.txt internal state instead of nx_seg_store? Because NOTHING MEASURES IT. This closes 4// that gap the same way the sensor-gap program closes gate blindness: walk runtime/_hdl_build, classify each 5// organ's DATA PERSISTENCE, print the live debt, and GATE on no-backslide (a NEW flat-file writer = RED). 6// 7// CLASSIFY (per organ, from source): 8// writes-flat-internal = (openat_wr | openat_append) AND (.tsv | .csv | .log | .txt) [almost never interop] 9// sovereign = ss_commit | ss_add( | nx_seg_store | sov_put | nx_sov_ledger [the store] 10// interop-boundary = writes .html | .json [served output = LEGIT] 11// => VIOLATION = writes-flat-internal AND NOT sovereign (the pure debt: flat state, no sovereign path) 12// PARTIAL = writes-flat-internal AND sovereign (mid-migration) 13// SOVEREIGN = sovereign AND NOT writes-flat-internal 14// CONSERVATIVE by design: .html/.json are NOT counted as violations (that is the legitimate interop boundary 15// Nishi OS keeps for reading/serving the world's data) -- so the printed debt is a FLOOR, real debt is >=. 16// 17// SELF-LIAR-KILLED: a .tsv-writer fixture must classify VIOLATION; an ss_commit fixture SOVEREIGN; a served 18// .html fixture must NOT be a violation (interop, not debt); determinism; unreadable file = counted, never 19// fabricated. REGRESSION GATE stores its baseline SOVEREIGNLY via nx_sov_ledger (dogfoods the fix, NO .tsv): 20// violations may not exceed baseline -> a new flat-file writer trips RED. Prints the debt regardless. 21// Sovereign nx_cc->nxasm; CWD=nxc2 root. expect_exit: 0 license_tier: ORIGINAL 22import "nx_syscalls.nx" 23import "nx_dirent.nx" 24import "nx_fcntl.nx" 25import "nx_sov_ledger.nx" 26const K_MAGIC_16384: i64 = 16384 27const K_MAGIC_1024: i64 = 1024 28const K_MAGIC_1048576: i64 = 1048576 29 30func w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 31func wn(v: i64) -> i64 { let b: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m;sys_write(1,"-" as *u8,1)}; let t: *u8=sys_mmap(28); 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; while i<k{b[i]=t[k-1-i];i=i+1}; sys_write(1,b,k); return 0 } 32func fc_slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} return n } 33func fc_lc(c: i64) -> i64 { if c>=65 { if c<=90 { return c+32 } } return c } 34func fc_pct(a: i64, b: i64) -> i64 { if b<=0 { return 0 } return (100*a)/b } 35 36func byte_copy(dst: *u8, src: *u8, n: i64) -> i64 { var i: i64=0; while i<n { dst[i]=src[i]; i=i+1 } return 0 } 37 38// case-insensitive substring 39func has_ci(buf: *u8, len: i64, ndl: *u8) -> i64 { 40 let nl: i64 = fc_slen(ndl) 41 if nl == 0 { return 1 } 42 var i: i64 = 0 43 while i + nl <= len { 44 var j: i64 = 0; var ok: i64 = 1 45 while j < nl { if fc_lc(buf[i+j] as i64) != (ndl[j] as i64) { ok=0; j=nl } else { j=j+1 } } 46 if ok == 1 { return 1 } 47 i = i + 1 48 } 49 return 0 50} 51 52func has_write(buf: *u8, len: i64) -> i64 { 53 if has_ci(buf, len, "openat_wr" as *u8) == 1 { return 1 } 54 if has_ci(buf, len, "openat_append" as *u8) == 1 { return 1 } 55 return 0 56} 57func has_flat(buf: *u8, len: i64) -> i64 { 58 if has_ci(buf, len, ".tsv" as *u8) == 1 { return 1 } 59 if has_ci(buf, len, ".csv" as *u8) == 1 { return 1 } 60 if has_ci(buf, len, ".log" as *u8) == 1 { return 1 } 61 if has_ci(buf, len, ".txt" as *u8) == 1 { return 1 } 62 return 0 63} 64func has_sov(buf: *u8, len: i64) -> i64 { 65 if has_ci(buf, len, "ss_commit" as *u8) == 1 { return 1 } 66 if has_ci(buf, len, "ss_add(" as *u8) == 1 { return 1 } 67 if has_ci(buf, len, "nx_seg_store" as *u8) == 1 { return 1 } 68 if has_ci(buf, len, "sov_put" as *u8) == 1 { return 1 } 69 if has_ci(buf, len, "nx_sov_ledger" as *u8) == 1 { return 1 } 70 return 0 71} 72func has_interop(buf: *u8, len: i64) -> i64 { 73 if has_ci(buf, len, ".html" as *u8) == 1 { return 1 } 74 if has_ci(buf, len, ".json" as *u8) == 1 { return 1 } 75 return 0 76} 77// VIOLATION = writes a flat internal sink AND has no sovereign path 78func is_violation(buf: *u8, len: i64) -> i64 { 79 if has_write(buf, len) == 0 { return 0 } 80 if has_flat(buf, len) == 0 { return 0 } 81 if has_sov(buf, len) == 1 { return 0 } 82 return 1 83} 84 85func read_gate(path: *u8, buf: *u8, cap: i64) -> i64 { 86 let fd: i64 = sys_openat_rd(path) 87 if fd < 0 { return 0 - 1 } 88 var total: i64 = 0; var go: i64 = 1 89 while go == 1 { 90 go = 0 91 let tail: *u8 = ((buf as i64) + total) as *u8 92 let n: i64 = sys_read(fd, tail, cap - total) 93 if n > 0 { total = total + n; if total < cap { go = 1 } } 94 } 95 sys_close(fd) 96 return total 97} 98func ends_nx(name: *u8, len: i64) -> i64 { 99 if len < 3 { return 0 } 100 if name[len-3] != (0x2E as u8) { return 0 } 101 if name[len-2] != (0x6E as u8) { return 0 } 102 if name[len-1] != (0x78 as u8) { return 0 } 103 return 1 104} 105 106func main() -> i64 { 107 w("=== nx_sovereign_format_census: sovereign-vs-flat DATA persistence across runtime/_hdl_build ===\n" as *u8) 108 109 // ---------- SELF-TESTS (liar-killers on the classifier) ---------- 110 let vio: *u8 = "let fd = sys_openat_wr(\"knowledge/status/x.tsv\", 420)\x00" as *u8 111 let sov: *u8 = "let ww = ss_begin(); ss_commit(prefix, ww, sys_now_us())\x00" as *u8 112 let intp: *u8 = "sys_openat_wr(\"knowledge/publish/page.html\", 420); // serve HTTP/1\x00" as *u8 113 let neg: *u8 = "the quick brown fox has no persistence at all\x00" as *u8 114 var self_ok: i64 = 1 115 if is_violation(vio, fc_slen(vio)) != 1 { self_ok = 0 } // a .tsv writer IS a violation 116 if has_sov(sov, fc_slen(sov)) != 1 { self_ok = 0 } // ss_commit IS sovereign 117 if is_violation(sov, fc_slen(sov)) != 0 { self_ok = 0 } // sovereign is NOT a violation 118 if is_violation(intp, fc_slen(intp)) != 0 { self_ok = 0 } // a served .html is interop, NOT a violation 119 if is_violation(neg, fc_slen(neg)) != 0 { self_ok = 0 } // neg control 120 let d1: i64 = is_violation(vio, fc_slen(vio)) 121 let d2: i64 = is_violation(vio, fc_slen(vio)) 122 if d1 != d2 { self_ok = 0 } // determinism 123 let evid: i64 = read_gate("runtime/_hdl_build/__fmt_nonexistent_zzqq.nx" as *u8, sys_mmap(64), 32) 124 if evid >= 0 { self_ok = 0 } // unreadable -> -1 125 w("[self-tests] tsv-writer=VIOLATION ss_commit=SOVEREIGN served-html=NOT-violation neg/det/evidence -> " as *u8) 126 if self_ok == 1 { w("classifier TRUSTWORTHY\n" as *u8) } else { w("classifier BROKEN\n" as *u8) } 127 128 // ---------- WALK + tally ---------- 129 let dirp: *u8 = "runtime/_hdl_build" as *u8 130 let dlen: i64 = fc_slen(dirp) 131 let dfd: i64 = nx_openat(NX_AT_FDCWD, dirp, NX_O_RDONLY | NX_O_DIRECTORY, 0) 132 if dfd < 0 { w(" [RED] cannot open runtime/_hdl_build\n" as *u8); sys_exit(1); return 1 } 133 let dbuf: *u8 = sys_mmap(K_MAGIC_16384) 134 let dr_raw: *u8 = sys_mmap(NX_DIRENT_BYTES) 135 let dr: *NxDirent = dr_raw as *NxDirent 136 let path: *u8 = sys_mmap(K_MAGIC_1024) 137 let fbuf: *u8 = sys_mmap(K_MAGIC_1048576 + 16) 138 139 var nfiles: i64 = 0 140 var n_persist: i64 = 0 141 var n_sov: i64 = 0 142 var n_violation: i64 = 0 143 var n_partial: i64 = 0 144 var n_interop: i64 = 0 145 146 var batch: i64 = nx_dirent_read(dfd, dbuf, K_MAGIC_16384) 147 while batch > 0 { 148 var off: i64 = 0 149 while off < batch { 150 let next_off: i64 = nx_dirent_iter(dbuf, off, batch, dr) 151 if next_off <= 0 { off = batch + 1 } 152 if off <= batch { 153 let nmlen: i64 = nx_dirent_name_len(dr) 154 if ends_nx(dr.name, nmlen) == 1 { 155 byte_copy(path, dirp, dlen) 156 path[dlen] = 47 as u8 157 byte_copy(((path as i64)+dlen+1) as *u8, dr.name, nmlen) 158 path[dlen+1+nmlen] = 0 as u8 159 nfiles = nfiles + 1 160 let flen: i64 = read_gate(path, fbuf, K_MAGIC_1048576) 161 if flen >= 0 { 162 let wflat: i64 = has_write(fbuf, flen) * has_flat(fbuf, flen) 163 let sv: i64 = has_sov(fbuf, flen) 164 let itp: i64 = has_write(fbuf, flen) * has_interop(fbuf, flen) 165 var persists: i64 = 0 166 if wflat == 1 { persists = 1 } 167 if sv == 1 { persists = 1 } 168 if persists == 1 { n_persist = n_persist + 1 } 169 if wflat == 1 { if sv == 1 { n_partial = n_partial + 1 } } 170 if wflat == 1 { if sv == 0 { n_violation = n_violation + 1 } } 171 if sv == 1 { if wflat == 0 { n_sov = n_sov + 1 } } 172 if itp == 1 { n_interop = n_interop + 1 } 173 } 174 } 175 off = next_off 176 } 177 } 178 batch = nx_dirent_read(dfd, dbuf, K_MAGIC_16384) 179 } 180 sys_close(dfd) 181 182 w("scanned " as *u8); wn(nfiles); w(" .nx; data-persisting = " as *u8); wn(n_persist); w("\n" as *u8) 183 w(" SOVEREIGN (seg_store, no flat) = " as *u8); wn(n_sov); w("\n" as *u8) 184 w(" PARTIAL (flat + seg_store) = " as *u8); wn(n_partial); w("\n" as *u8) 185 w(" VIOLATION (flat internal, NO sov)= " as *u8); wn(n_violation) 186 w(" <== THE DEBT (floor; .json/.html interop excluded)\n" as *u8) 187 w(" interop-boundary (.html/.json) = " as *u8); wn(n_interop); w(" (legitimate: served/exported)\n" as *u8) 188 let sovpct: i64 = fc_pct(n_sov, n_sov + n_violation) 189 w(" sovereign share of internal state = " as *u8); wn(sovpct); w("% (target 1000)\n" as *u8) 190 191 // ---------- REGRESSION GATE (baseline stored SOVEREIGNLY -- dogfoods nx_sov_ledger, NO tsv) ---------- 192 let base: *i64 = sys_mmap(8*8) as *i64 193 let nb: i64 = sov_get_ints("knowledge/store/fmtcensus" as *u8, "fmt:baseline" as *u8, base, 4) 194 var regress: i64 = 0 195 var had_base: i64 = 0 196 if nb >= 3 { 197 had_base = 1 198 if n_violation > base[2] { regress = 1 } // a NEW flat-file writer since baseline 199 } 200 if had_base == 0 { 201 let cur: *i64 = sys_mmap(8*4) as *i64 202 cur[0] = n_persist; cur[1] = n_sov; cur[2] = n_violation 203 sov_put_ints("knowledge/store/fmtcensus" as *u8, "fmt:baseline" as *u8, cur, 3) 204 w(" [baseline seeded SOVEREIGNLY -> knowledge/store/fmtcensus (seg_store, no tsv)]\n" as *u8) 205 } 206 if had_base == 1 { 207 w(" baseline violation=" as *u8); wn(base[2]) 208 if regress == 1 { w(" -> [REGRESSION] new flat-file writer(s) added since baseline -> RED\n" as *u8) } 209 if regress == 0 { w(" -> [ok] no new flat-file writers (debt held or reduced)\n" as *u8) } 210 } 211 212 var green: i64 = 1 213 if self_ok != 1 { green = 0 } 214 if regress != 0 { green = 0 } 215 if green == 1 { 216 w("=== verdict: GREEN (classifier trustworthy; no new flat-file debt). The VIOLATION count IS the migration worklist. ===\n" as *u8) 217 sys_exit(0); return 0 218 } 219 w("=== verdict: RED (classifier broken OR new flat-file writer added -- migrate it to nx_sov_ledger/nx_seg_store) ===\n" as *u8) 220 sys_exit(1); return 1 221}