code wiki / _hdl_build / nx_wflow_cli_gate.nx

nx_wflow_cli_gate.nx source

↩ module page · 66 lines · 3414 B

1// nx_wflow_cli_gate.nx -- gate for the file-driven production path (wf_lines_load + wf_fire_files): 2// definitions as DATA FILES, validated whole before anything runs. THE PM COMPOSITION PROOF: firing 3// `venue-booked` runs the REAL vizsla docgen organ (agreement .docx built + filed on the doc store) 4// then notify -> run DONE, all through the demo data files a human can edit. ONE fork. 5// Neg-controls: missing file loud -1; a bad ruleset file (unknown action) refuses whole; durable dedup 6// on refire. license_tier: ORIGINAL expect_exit: 0 7import "nx_wflow_engine.nx" 8 9func cgl_n(led: *u8, ridtok: *u8, st: *u8) -> i64 { 10 let szp: *i64 = sys_mmap(8) as *i64 11 let b: *u8 = wf_readall(led, szp) 12 if (b as i64) == 0 { return 0 - 1 } 13 return wf_lines_with2(b, szp[0], ridtok, st) 14} 15 16func main() -> i64 { 17 p("=== NX-WFLOW-CLI GATE (definitions as data files; PM composition: venue-booked -> real docgen -> notify) ===\n" as *u8) 18 var ok: i64 = 1 19 let now: i64 = wf_now() 20 let led: *u8 = sys_mmap(128) 21 var lo: i64 = 0 22 lo = wf_cat(led, lo, "/tmp/wfcli_" as *u8) 23 lo = wf_catn(led, lo, now) 24 lo = wf_cat(led, lo, ".log" as *u8) 25 led[lo] = 0 as u8 26 27 // T1 file loaders: demo files parse (comments skipped), missing file refuses loud 28 let arr: *i64 = sys_mmap(8 * 64) as *i64 29 let nf: i64 = wf_lines_load("knowledge/wflow/demo.flows" as *u8, arr, 64) 30 let nst: i64 = wf_lines_load("knowledge/wflow/demo.steps" as *u8, arr, 64) 31 let miss: i64 = wf_lines_load("/tmp/wflow_no_such_defs_file" as *u8, arr, 64) 32 p(" T1 flows=" as *u8); pn(nf); p(" steps=" as *u8); pn(nst); p(" missing=" as *u8); pn(miss); p("\n" as *u8) 33 if nf != 1 { ok = 0 } 34 if nst != 2 { ok = 0 } 35 if miss != (0 - 1) { ok = 0 } 36 37 // T2 bad definitions file refuses WHOLE (unknown action row) 38 let badp: *u8 = sys_mmap(128) 39 var bo: i64 = 0 40 bo = wf_cat(badp, bo, "/tmp/wfcli_bad_" as *u8) 41 bo = wf_catn(badp, bo, now) 42 badp[bo] = 0 as u8 43 wf_append(badp, "z1|1|explode|-|boom|1\n" as *u8) 44 let rb: i64 = wf_fire_files("knowledge/wflow/demo.flows" as *u8, badp, led, "-" as *u8, "venue-booked~id=B1" as *u8) 45 p(" T2 badDefs rc=" as *u8); pn(rb); p("\n" as *u8) 46 if rb != (0 - 1) { ok = 0 } 47 48 // T3 THE PM COMPOSITION: fire venue-booked through the DATA FILES -> real docgen organ -> notify -> DONE 49 let rc: i64 = wf_fire_files("knowledge/wflow/demo.flows" as *u8, "knowledge/wflow/demo.steps" as *u8, led, "knowledge/wflow/connectors.conf" as *u8, "venue-booked~venue=pavilion~id=D1" as *u8) 50 let d1: i64 = cgl_n(led, " rid=D1.pm1 " as *u8, "status=DONE" as *u8) 51 let o1: i64 = cgl_n(led, " rid=D1.pm1 " as *u8, "status=OK" as *u8) 52 p(" T3 fire started=" as *u8); pn(rc); p(" done=" as *u8); pn(d1); p(" okSteps=" as *u8); pn(o1); p("\n" as *u8) 53 if rc != 1 { ok = 0 } 54 if d1 != 1 { ok = 0 } 55 if o1 != 2 { ok = 0 } 56 57 // T4 durable dedup through the file path 58 let r2: i64 = wf_fire_files("knowledge/wflow/demo.flows" as *u8, "knowledge/wflow/demo.steps" as *u8, led, "knowledge/wflow/connectors.conf" as *u8, "venue-booked~venue=pavilion~id=D1" as *u8) 59 p(" T4 refire rc=" as *u8); pn(r2); p("\n" as *u8) 60 if r2 != (0 - 100) { ok = 0 } 61 62 p("NX-WFLOW-CLI-GATE ledger=" as *u8); p(led); p(" forks=1 " as *u8) 63 if ok == 1 { p("verdict=GREEN\n" as *u8); return 0 } 64 p("verdict=RED\n" as *u8) 65 return 1 66}