code wiki / (root) / nx_trust_gate.nx

nx_trust_gate.nx source

↩ module page · 54 lines · 2708 B

1// nx_trust_gate.nx -- INDEPENDENT gate for trust accounting (imports the SAME shipped 2// nx_trust_lib = atlas validation edge). Tests: balance math, no-commingling, no-overdraw 3// refused, disburse-ok when sufficient, reconciliation grows with a new client, dollar 4// formatting, append-only (prior entry unchanged). SELF-PUBLISHES office_trust_gate.log. 5// license_tier: ORIGINAL 6 7import "nx_trust_lib.nx" 8 9func main() -> i64 { 10 var pass: i64 = 0 11 let p: *u8 = "/tmp/nx_trust_gate-" as *u8 12 trust_put(p, "A" as *u8, 0, "M1" as *u8, "deposit" as *u8, 100000) 13 trust_put(p, "B" as *u8, 0, "M2" as *u8, "deposit" as *u8, 50000) 14 trust_put(p, "A" as *u8, 1, "M1" as *u8, "disburse" as *u8, 30000) 15 // T1 balance = deposit - disburse 16 if trust_balance(p, "A" as *u8) == 70000 { pass = pass + 1 } 17 // T2 no-commingling: B unaffected by A activity 18 if trust_balance(p, "B" as *u8) == 50000 { pass = pass + 1 } 19 // T3 no-overdraw REFUSED (200000 > 70000) 20 if trust_disburse_ok(p, "A" as *u8, 200000) == 0 { pass = pass + 1 } 21 // T4 disburse OK when sufficient 22 if trust_disburse_ok(p, "A" as *u8, 50000) == 1 { pass = pass + 1 } 23 // T5 reconciliation: total = sum of client ledgers; grows by a new deposit 24 let t1: i64 = trust_balance(p, "A" as *u8) + trust_balance(p, "B" as *u8) 25 trust_put(p, "C" as *u8, 0, "M3" as *u8, "deposit" as *u8, 25000) 26 let t2: i64 = trust_balance(p, "A" as *u8) + trust_balance(p, "B" as *u8) + trust_balance(p, "C" as *u8) 27 if t2 == t1 + 25000 { pass = pass + 1 } 28 // T6 dollar formatting 29 let d: *u8 = sys_mmap(32) 30 tr_dollars(70000, d) 31 if mt_streq(d, "$700.00" as *u8) == 1 { pass = pass + 1 } 32 // T7 append-only: the original deposit entry is UNCHANGED after the disburse 33 let po: *i64 = sys_mmap(16) as *i64 34 let lo: *i64 = sys_mmap(16) as *i64 35 let af: *u8 = sys_mmap(32) 36 if reg_get(p, "trust:" as *u8, "A:0" as *u8, po, lo) == 1 { 37 mt_field(po[0] as *u8, lo[0], "amount" as *u8, 6, af) 38 if tr_atoi(af) == 100000 { pass = pass + 1 } 39 } 40 41 let out: *u8 = sys_mmap(512) 42 var o: i64 = 0 43 o = mt_catcopy(out, o, "OFFICE-TRUST-GATE tests=7 pass=" as *u8) 44 o = mt_catn(out, o, pass) 45 o = mt_catcopy(out, o, " balance+no-commingling+no-overdraw+disburse-ok+reconcile+dollars+append-only VERDICT=" as *u8) 46 if pass == 7 { o = mt_catcopy(out, o, "GREEN" as *u8) } 47 if pass != 7 { o = mt_catcopy(out, o, "RED" as *u8) } 48 out[o] = 10 as u8 49 o = o + 1 50 ss_writefile("knowledge/status/office_trust_gate.log" as *u8, out, o) 51 sys_write(1, out, o) 52 if pass == 7 { return __syscall(93, 0, 0, 0, 0, 0, 0) } 53 return __syscall(93, 90 + pass, 0, 0, 0, 0, 0) 54}