code wiki / (root) / nx_docgen_gate.nx

nx_docgen_gate.nx source

↩ module page · 77 lines · 3854 B

1// nx_docgen_gate.nx -- INDEPENDENT gate for document assembly (imports the SAME shipped 2// nx_docgen_lib = atlas validation edge). Proves: clause round-trip, assembly, merge 3// substitution (no unmerged braces), CID determinism, content-addressing (diff data -> 4// diff CID), and BOTH fail-closed paths (unknown clause + unfilled field). SELF-PUBLISHES 5// knowledge/status/office_docgen_gate.log. license_tier: ORIGINAL 6 7import "nx_docgen_lib.nx" 8 9func main() -> i64 { 10 var pass: i64 = 0 11 let p: *u8 = "/tmp/nx_docgen_gate-" as *u8 12 dg_clause_put(p, "scope" as *u8, "SCOPE {client} re {matter}." as *u8) 13 dg_clause_put(p, "fee" as *u8, "FEE {fee}." as *u8) 14 dg_clause_put(p, "datecl" as *u8, "DATED {date}." as *u8) 15 dg_tmpl_put(p, "eng" as *u8, "scope,fee" as *u8) 16 dg_tmpl_put(p, "bad" as *u8, "scope,ghost" as *u8) 17 dg_tmpl_put(p, "needsdate" as *u8, "scope,datecl" as *u8) 18 // T1 clause round-trip (stored + retrievable) 19 let po: *i64 = sys_mmap(16) as *i64 20 let lo: *i64 = sys_mmap(16) as *i64 21 if reg_get(p, "clause:" as *u8, "fee" as *u8, po, lo) == 1 { if lo[0] > 0 { pass = pass + 1 } } 22 // merge record: client,matter,fee -- deliberately NO date 23 let k: *i64 = sys_mmap(8 * 3) as *i64 24 let v: *i64 = sys_mmap(8 * 3) as *i64 25 k[0] = ("client" as *u8) as i64; v[0] = ("Acme" as *u8) as i64 26 k[1] = ("matter" as *u8) as i64; v[1] = ("M1" as *u8) as i64 27 k[2] = ("fee" as *u8) as i64; v[2] = ("$300" as *u8) as i64 28 let mrec: *u8 = sys_mmap(2048) 29 let mlen: i64 = canon_encode(k, v, 3, mrec) 30 // T2 assemble -> len>0 31 let doc: *u8 = sys_mmap(4096) 32 let n: i64 = dg_assemble(p, "eng" as *u8, mrec, mlen, doc) 33 if n > 0 { pass = pass + 1 } 34 // T3 no unmerged braces (every {field} substituted) 35 if n > 0 { if dg_unmerged(doc, n) == 0 { pass = pass + 1 } } 36 // T4 determinism: same inputs -> same CID 37 let c1: *u8 = sys_mmap(128) 38 cid_of(doc, n, c1) 39 let doc2: *u8 = sys_mmap(4096) 40 let n2: i64 = dg_assemble(p, "eng" as *u8, mrec, mlen, doc2) 41 let c2: *u8 = sys_mmap(128) 42 cid_of(doc2, n2, c2) 43 if mt_streq(c1, c2) == 1 { pass = pass + 1 } 44 // T5 content-addressed: different data -> different CID 45 let k2: *i64 = sys_mmap(8 * 3) as *i64 46 let v2: *i64 = sys_mmap(8 * 3) as *i64 47 k2[0] = ("client" as *u8) as i64; v2[0] = ("Beta Inc" as *u8) as i64 48 k2[1] = ("matter" as *u8) as i64; v2[1] = ("M1" as *u8) as i64 49 k2[2] = ("fee" as *u8) as i64; v2[2] = ("$300" as *u8) as i64 50 let mrec2: *u8 = sys_mmap(2048) 51 let mlen2: i64 = canon_encode(k2, v2, 3, mrec2) 52 let docB: *u8 = sys_mmap(4096) 53 let nB: i64 = dg_assemble(p, "eng" as *u8, mrec2, mlen2, docB) 54 let cB: *u8 = sys_mmap(128) 55 cid_of(docB, nB, cB) 56 if mt_streq(c1, cB) == 0 { pass = pass + 1 } 57 // T6 FAIL-CLOSED: unknown clause in template -> -1 58 let dbad: *u8 = sys_mmap(4096) 59 if dg_assemble(p, "bad" as *u8, mrec, mlen, dbad) < 0 { pass = pass + 1 } 60 // T7 FAIL-CLOSED: unfilled merge field ({date} absent) -> -1 61 let dmiss: *u8 = sys_mmap(4096) 62 if dg_assemble(p, "needsdate" as *u8, mrec, mlen, dmiss) < 0 { pass = pass + 1 } 63 64 let out: *u8 = sys_mmap(512) 65 var o: i64 = 0 66 o = mt_catcopy(out, o, "OFFICE-DOCGEN-GATE tests=7 pass=" as *u8) 67 o = mt_catn(out, o, pass) 68 o = mt_catcopy(out, o, " clause-roundtrip+assemble+merge-nounbraces+cid-determinism+content-addressed+unknown-clause-failclosed+missing-field-failclosed VERDICT=" as *u8) 69 if pass == 7 { o = mt_catcopy(out, o, "GREEN" as *u8) } 70 if pass != 7 { o = mt_catcopy(out, o, "RED" as *u8) } 71 out[o] = 10 as u8 72 o = o + 1 73 ss_writefile("knowledge/status/office_docgen_gate.log" as *u8, out, o) 74 sys_write(1, out, o) 75 if pass == 7 { return __syscall(93, 0, 0, 0, 0, 0, 0) } 76 return __syscall(93, 100 + pass, 0, 0, 0, 0, 0) 77}