code wiki / (root) / nx_tmplstale.nx

nx_tmplstale.nx source

↩ module page · 90 lines · 4717 B

1// nx_tmplstale.nx -- THE CLERK DESK CLI/MCP organ: self-verifying demo over nx_tmplstale_lib. 2// Seeds a clause library and two templates (each put snapshots its clause CIDs), assembles two client 3// documents with LINEAGE, proves the desk reads CURRENT (0 stale), then revises ONE clause and prints 4// the worklist: the template that carries it and the document built from it are named; the template 5// and document that do not carry it stay silent (the fresh control). license_tier: ORIGINAL 6 7import "nx_tmplstale_lib.nx" 8const TSD_DOCBUF: i64 = 4096 9const TSD_WORKBUF: i64 = 8192 10const TSD_OUTBUF: i64 = 2048 11const TSD_EPOCH: i64 = 1787100000 12const TSD_TINYCAP: i64 = 8 13 14func tsd_has(hay: *u8, needle: *u8) -> i64 { 15 var i: i64 = 0 16 while hay[i] != (0 as u8) { 17 var j: i64 = 0 18 var m: i64 = 1 19 while m == 1 { 20 if needle[j] == (0 as u8) { return 1 } 21 if hay[i + j] != needle[j] { m = 0 } 22 if m == 1 { j = j + 1 } 23 } 24 i = i + 1 25 } 26 return 0 27} 28 29func main() -> i64 { 30 let p: *u8 = "/tmp/nx_tmplstale_demo-" as *u8 31 dg_clause_put(p, "scope" as *u8, "1. SCOPE. Attorney represents {client} in the matter {matter}." as *u8) 32 dg_clause_put(p, "fee" as *u8, "2. FEES. Client shall pay {fee} for services rendered." as *u8) 33 dg_clause_put(p, "term" as *u8, "3. TERMINATION. Either party may terminate upon written notice." as *u8) 34 dg_clause_put(p, "conf" as *u8, "4. CONFIDENTIALITY. Communications are privileged. Dated {date}." as *u8) 35 if ts_tmpl_put(p, "engagement" as *u8, "scope,fee,term,conf" as *u8, TSD_EPOCH) < 0 { return __syscall(93, 61, 0, 0, 0, 0, 0) } 36 if ts_tmpl_put(p, "nda" as *u8, "scope,conf" as *u8, TSD_EPOCH) < 0 { return __syscall(93, 62, 0, 0, 0, 0, 0) } 37 let k: *i64 = sys_mmap(8 * 4) as *i64 38 let v: *i64 = sys_mmap(8 * 4) as *i64 39 k[0] = ("client" as *u8) as i64; v[0] = ("Acme Corp" as *u8) as i64 40 k[1] = ("matter" as *u8) as i64; v[1] = ("Acme v. Baker" as *u8) as i64 41 k[2] = ("fee" as *u8) as i64; v[2] = ("$300/hr" as *u8) as i64 42 k[3] = ("date" as *u8) as i64; v[3] = ("2026-08-18" as *u8) as i64 43 let mrec: *u8 = sys_mmap(TSD_OUTBUF) 44 let mlen: i64 = canon_encode(k, v, 4, mrec) 45 let doc: *u8 = sys_mmap(TSD_DOCBUF) 46 let n1: i64 = dg_assemble_lineage(p, "engagement" as *u8, "M-001" as *u8, mrec, mlen, doc) 47 if n1 < 0 { return __syscall(93, 63, 0, 0, 0, 0, 0) } 48 let doc2: *u8 = sys_mmap(TSD_DOCBUF) 49 let n2: i64 = dg_assemble_lineage(p, "nda" as *u8, "M-002" as *u8, mrec, mlen, doc2) 50 if n2 < 0 { return __syscall(93, 64, 0, 0, 0, 0, 0) } 51 let work: *u8 = sys_mmap(TSD_WORKBUF) 52 let before: i64 = dg_tmpl_stale(p, work, TSD_WORKBUF) 53 // the clerk revises ONE clause -- the fee schedule 54 dg_clause_put(p, "fee" as *u8, "2. FEES. Client shall pay {fee} for services rendered, billed monthly in six-minute increments." as *u8) 55 let after: i64 = dg_tmpl_stale(p, work, TSD_WORKBUF) 56 let listing: *u8 = sys_mmap(TSD_WORKBUF) 57 let ntmpl: i64 = dg_tmpl_list(p, listing, TSD_WORKBUF) 58 let h1: *u8 = "--- template registry (id, version cid, effective epoch) ---\n" as *u8 59 sys_write(1, h1, dg_strlen(h1)) 60 sys_write(1, listing, dg_strlen(listing)) 61 let h2: *u8 = "--- clerk worklist after revising clause fee ---\n" as *u8 62 sys_write(1, h2, dg_strlen(h2)) 63 sys_write(1, work, dg_strlen(work)) 64 let out: *u8 = sys_mmap(TSD_OUTBUF) 65 var o: i64 = 0 66 o = mt_catcopy(out, o, "NISHI-TMPLSTALE " as *u8) 67 var ok: i64 = 1 68 if before != 0 { ok = 0 } 69 if after != 2 { ok = 0 } 70 if ntmpl != 2 { ok = 0 } 71 if tsd_has(work, "TEMPLATE-STALE engagement clause=fee" as *u8) != 1 { ok = 0 } 72 if tsd_has(work, "DOC-STALE M-001 clause=fee" as *u8) != 1 { ok = 0 } 73 if tsd_has(work, "nda" as *u8) == 1 { ok = 0 } 74 if tsd_has(work, "M-002" as *u8) == 1 { ok = 0 } 75 if ok == 1 { o = mt_catcopy(out, o, "OK" as *u8) } else { o = mt_catcopy(out, o, "FAIL" as *u8) } 76 o = mt_catcopy(out, o, " templates=" as *u8) 77 o = mt_catn(out, o, ntmpl) 78 o = mt_catcopy(out, o, " docs=2 stale-before=" as *u8) 79 o = mt_catn(out, o, before) 80 o = mt_catcopy(out, o, " stale-after=" as *u8) 81 o = mt_catn(out, o, after) 82 o = mt_catcopy(out, o, " named=engagement,M-001 fresh-control=nda,M-002 worklist-not-count refuse-on-overflow=" as *u8) 83 let tiny: *u8 = sys_mmap(TSD_OUTBUF) 84 if dg_tmpl_stale(p, tiny, TSD_TINYCAP) < 0 { o = mt_catcopy(out, o, "PROVEN" as *u8) } else { o = mt_catcopy(out, o, "NO" as *u8); ok = 0 } 85 out[o] = 10 as u8 86 o = o + 1 87 sys_write(1, out, o) 88 if ok != 1 { return __syscall(93, 65, 0, 0, 0, 0, 0) } 89 return __syscall(93, 0, 0, 0, 0, 0, 0) 90}