code wiki / (root) / nx_adversarial_sov.nx

nx_adversarial_sov.nx source

↩ module page · 113 lines · 5077 B

1// nx_adversarial_sov.nx -- get the ADVERSARIAL GATE SUITE off the flat .conf into the SOVEREIGN seg_store 2// (operator 2026-07-17: "we arent supposed to be using .tsv" -- store-law [[feedback-sovereign-store-not-flat-files]]). 3// nx_adversarial_ci ran the deploy-gating suite from knowledge/adversarial_gates.conf (a flat file, one gate 4// module-name per line) -- the policy that fail-closes EVERY selfswap. This migrates those rows into 5// knowledge/store/adversarial (sovereign seg_store) via the PROVEN nx_raci_sov migrate pattern (read -> seed -> 6// byte-verify every row), and serves the suite FROM THE STORE (ag_read_all is byte-compatible with the .conf 7// data lines, so the consumer flips with a one-line swap). The .conf survives only as migrate-source. 8// Sovereign. license_tier: ORIGINAL module: nishi-core.architect.adversarial_sov 9import "nx_seg_store.nx" 10import "nx_syscalls.nx" 11 12const AG_CONF: *u8 = "knowledge/adversarial_gates.conf" 13const AG_STORE: *u8 = "knowledge/store/adversarial" 14 15// key "adv:gate:K" -> out (mirror rsv_key) 16func ag_key(k: i64, out: *u8) -> i64 { 17 var o: i64=0; let p: *u8="adv:gate:" as *u8; var i: i64=0 18 while p[i]!=(0 as u8){ out[o]=p[i]; o=o+1; i=i+1 } 19 if k==0 { out[o]=48 as u8; o=o+1 } else { let t: *u8=sys_mmap(24); var m: i64=k; var n: i64=0; while m>0 { t[n]=(48+(m%10)) as u8; m=m/10; n=n+1 } var j: i64=0; while j<n { out[o]=t[n-1-j]; o=o+1; j=j+1 } } 20 out[o]=0 as u8; return 0 21} 22 23// MIGRATE the gate rows into the store (skip '#' comments + empty, CRLF-safe), then byte-verify each reads back. 24// Re-migrates each call (the .conf is the static migrate-source until retired). Returns verified-row-count via 25// verp[0]; total source rows via totp[0]. GREEN when verp==totp. 26func ag_migrate(totp: *i64, verp: *i64) -> i64 { 27 let szp: *i64 = sys_mmap(16) as *i64 28 let buf: *u8 = ss_readall(AG_CONF, szp) 29 let sz: i64 = szp[0] 30 if sz <= 0 { totp[0]=0; verp[0]=0; return 0 } 31 let lp: *i64 = sys_mmap(8*512) as *i64; let ll: *i64 = sys_mmap(8*512) as *i64 32 var k: i64 = 0; var i: i64 = 0; var ls: i64 = 0 33 while i <= sz { 34 var nl: i64 = 0; if i>=sz { nl=1 } else { if buf[i]==(10 as u8) { nl=1 } } 35 if nl==1 { 36 var len: i64 = i - ls 37 if len>0 { if buf[ls+len-1]==(13 as u8) { len=len-1 } } // CRLF-safe (strip trailing \r) 38 if len>0 { if (buf[ls] as i64) != 35 { if k<512 { lp[k]=(buf as i64)+ls; ll[k]=len; k=k+1 } } } // skip '#' 39 ls = i+1 40 } 41 i=i+1 42 } 43 totp[0]=k 44 // seed every gate row keyed by index, in one commit 45 let w: *i64 = ss_begin() 46 var j: i64 = 0 47 while j<k { let rk: *u8=sys_mmap(64); ag_key(j, rk); ss_add(w, 1, rk, lp[j] as *u8, ll[j]); j=j+1 } 48 ss_commit(AG_STORE, w, sys_now_realtime_sec()) 49 // verify each row reads back byte-exact from the store 50 let h: *i64 = ss_open(AG_STORE) 51 let pq: *i64=sys_mmap(16) as *i64; let lq: *i64=sys_mmap(16) as *i64 52 var ver: i64 = 0; var j2: i64 = 0 53 while j2<k { 54 let rk: *u8=sys_mmap(64); ag_key(j2, rk) 55 if ss_hget(h, rk, pq, lq)==1 { if lq[0]==ll[j2] { let a: *u8=pq[0] as *u8; let b: *u8=lp[j2] as *u8; var eq: i64=1; var x: i64=0; while x<lq[0] { if a[x]!=b[x] { eq=0 } x=x+1 } if eq==1 { ver=ver+1 } } } 56 j2=j2+1 57 } 58 verp[0]=ver 59 return ver 60} 61 62// PUBLIC gate accessor: gate k's bytes into out (NUL-terminated, capped), FROM THE STORE. Returns len, or -1 63// when k is past the last row (the iteration sentinel). Mirror raci_row. 64func ag_gate(k: i64, out: *u8, cap: i64) -> i64 { 65 let h: *i64 = ss_open(AG_STORE) 66 if (h as i64)==0 { return 0 - 1 } 67 let pq: *i64=sys_mmap(16) as *i64 68 let lq: *i64=sys_mmap(16) as *i64 69 let rk: *u8=sys_mmap(64) 70 ag_key(k, rk) 71 if ss_hget(h, rk, pq, lq)!=1 { return 0 - 1 } 72 var n: i64 = lq[0] 73 if n > cap - 1 { n = cap - 1 } 74 let src: *u8 = pq[0] as *u8 75 var i: i64=0 76 while i<n { out[i]=src[i]; i=i+1 } 77 out[n]=0 as u8 78 return n 79} 80 81// number of gates in the store (iterate raci-style until a gap) 82func ag_count() -> i64 { 83 let h: *i64 = ss_open(AG_STORE) 84 if (h as i64)==0 { return 0 } 85 let pq: *i64=sys_mmap(16) as *i64; let lq: *i64=sys_mmap(16) as *i64 86 var k: i64=0; var go: i64=1 87 while go==1 { 88 let rk: *u8=sys_mmap(64); ag_key(k, rk) 89 if ss_hget(h, rk, pq, lq)==1 { k=k+1 } else { go=0 } 90 } 91 return k 92} 93 94// FULL-SUITE reader: every gate from the STORE, newline-joined, byte-compatible with the old .conf DATA lines 95// -- so nx_adversarial_ci flips with a ONE-LINE swap of its file-read call. Returns total bytes (0 if empty). 96// Mirror raci_read_all. 97func ag_read_all(out: *u8, cap: i64) -> i64 { 98 var o: i64 = 0 99 var k: i64 = 0 100 var go: i64 = 1 101 while go == 1 { 102 let n: i64 = ag_gate(k, ((out as i64) + o) as *u8, cap - o - 1) 103 if n < 0 { go = 0 } else { 104 o = o + n 105 out[o] = 10 as u8 106 o = o + 1 107 k = k + 1 108 if o >= cap - 2 { go = 0 } 109 } 110 } 111 out[o] = 0 as u8 112 return o 113}