code wiki / _hdl_build / nx_sov_ledger_gate.nx
nx_sov_ledger_gate.nx source
↩ module page · 91 lines · 5029 B
1// nx_sov_ledger_gate.nx -- proves the canonical sovereign ledger nx_sov_ledger.nx.
2// Oracle = round-trip identity on a REAL nx_seg_store (write -> read -> equal), incl the typed-binary
3// record format and the anti-fabrication neg-controls. Per-run isolated prefix (sys_now_us suffix) so the
4// gate is idempotent/deterministic across runs (rule 10) and demonstrates the segid discipline.
5// T1 KV round-trip (put str -> get_copy equal)
6// T2 latest-wins (second put overwrites; newest value returned)
7// T3 existence: sov_has present=1, absent=0 (neg control -- never a false present)
8// T4 typed int record: put_ints [3675,1093,472,45,216] -> get_ints returns exactly those (no delimiters)
9// T5 anti-fabrication: get_ints of an absent key -> -1 (never invents a record)
10// Read-only-to-the-world (writes ONLY into its own sovereign store prefix, not a flat side-car). GREEN iff
11// all pass. Sovereign nx_cc->nxasm; CWD=nxc2 root. expect_exit: 0 license_tier: ORIGINAL
12import "nx_sov_ledger.nx"
13import "nx_seg_store.nx"
14import "nx_syscalls.nx"
15
16func lg_w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
17func lg_n(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 }
18func lg_cat(dst: *u8, off: i64, s: *u8) -> i64 { var o: i64=off; var k: i64=0; while s[k]!=(0 as u8){dst[o]=s[k];o=o+1;k=k+1} return o }
19func lg_num(dst: *u8, off: i64, v: i64) -> i64 { var o: i64=off; let t: *u8=sys_mmap(28); var m: i64=v; if m<0{m=0-m}; 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{dst[o]=t[k-1-i];o=o+1;i=i+1} return o }
20func lg_streq(a: *u8, an: i64, b: *u8) -> i64 { let bn: i64=sov_slen(b); if an!=bn { return 0 } var i: i64=0; while i<an { if a[i]!=b[i] { return 0 } i=i+1 } return 1 }
21
22func main() -> i64 {
23 lg_w("=== nx_sov_ledger_gate: canonical sovereign ledger on nx_seg_store (typed binary, no TSV) ===\n" as *u8)
24 // per-run isolated prefix
25 let prefix: *u8 = sys_mmap(128)
26 var po: i64 = 0
27 po = lg_cat(prefix, po, "knowledge/store/sovl_test_" as *u8)
28 po = lg_num(prefix, po, sys_now_us())
29 prefix[po] = 45 as u8
30 prefix[po+1] = 0 as u8
31
32 var pass: i64 = 0
33 var total: i64 = 0
34 let out: *u8 = sys_mmap(4096)
35
36 // T1 KV round-trip
37 sov_put_str(prefix, "greet" as *u8, "hello-sovereign" as *u8)
38 let l1: i64 = sov_get_copy(prefix, "greet" as *u8, out, 4096)
39 total=total+1
40 var t1: i64 = 0
41 if l1 > 0 { if lg_streq(out, l1, "hello-sovereign" as *u8) == 1 { t1 = 1 } }
42 if t1==1 { pass=pass+1; lg_w(" [PASS] " as *u8) } else { lg_w(" [FAIL] " as *u8) }
43 lg_w("T1 KV round-trip (put->get equal)\n" as *u8)
44
45 // T2 latest-wins
46 sov_put_str(prefix, "greet" as *u8, "v2-newer" as *u8)
47 let l2: i64 = sov_get_copy(prefix, "greet" as *u8, out, 4096)
48 total=total+1
49 var t2: i64 = 0
50 if l2 > 0 { if lg_streq(out, l2, "v2-newer" as *u8) == 1 { t2 = 1 } }
51 if t2==1 { pass=pass+1; lg_w(" [PASS] " as *u8) } else { lg_w(" [FAIL] " as *u8) }
52 lg_w("T2 latest-wins (newest value returned)\n" as *u8)
53
54 // T3 existence + neg control
55 total=total+1
56 var t3: i64 = 1
57 if sov_has(prefix, "greet" as *u8) != 1 { t3 = 0 }
58 if sov_has(prefix, "nonexistent-zzqq" as *u8) != 0 { t3 = 0 }
59 if t3==1 { pass=pass+1; lg_w(" [PASS] " as *u8) } else { lg_w(" [FAIL] " as *u8) }
60 lg_w("T3 existence: present=1 absent=0 (no false present)\n" as *u8)
61
62 // T4 typed int record (no delimiters)
63 let vals: *i64 = sys_mmap(8*8) as *i64
64 vals[0]=3675; vals[1]=1093; vals[2]=472; vals[3]=45; vals[4]=216
65 sov_put_ints(prefix, "risk" as *u8, vals, 5)
66 let got: *i64 = sys_mmap(8*8) as *i64
67 let nn: i64 = sov_get_ints(prefix, "risk" as *u8, got, 8)
68 total=total+1
69 var t4: i64 = 0
70 if nn == 5 {
71 t4 = 1
72 if got[0]!=3675 { t4=0 }
73 if got[1]!=1093 { t4=0 }
74 if got[2]!=472 { t4=0 }
75 if got[3]!=45 { t4=0 }
76 if got[4]!=216 { t4=0 }
77 }
78 if t4==1 { pass=pass+1; lg_w(" [PASS] " as *u8) } else { lg_w(" [FAIL] " as *u8) }
79 lg_w("T4 typed int record round-trip [3675,1093,472,45,216] (raw binary, NO tab/comma)\n" as *u8)
80
81 // T5 anti-fabrication
82 total=total+1
83 var t5: i64 = 0
84 if sov_get_ints(prefix, "absent-key-zzqq" as *u8, got, 8) == (0 - 1) { t5 = 1 }
85 if t5==1 { pass=pass+1; lg_w(" [PASS] " as *u8) } else { lg_w(" [FAIL] " as *u8) }
86 lg_w("T5 anti-fabrication: absent key -> -1 (never invents a record)\n" as *u8)
87
88 lg_w("=== nx_sov_ledger_gate " as *u8); lg_n(pass); lg_w("/" as *u8); lg_n(total)
89 if pass==total { lg_w(" GREEN (sovereign KV+typed-record ledger; adopt this, never a .tsv/.log side-car)\n" as *u8); sys_exit(0); return 0 }
90 lg_w(" RED\n" as *u8); sys_exit(1); return 1
91}