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}