code wiki / _hdl_build / nx_wflow_tpl_gate.nx

nx_wflow_tpl_gate.nx source

↩ module page · 89 lines · 3725 B

1// nx_wflow_tpl_gate.nx -- R13 TEMPLATE GALLERY gate: gallery = <dir>/index (name|description) + per-name 2// .flows/.steps pairs. LIST prints every row with file-existence + version and counts USABLE pairs; 3// INSTANTIATE is fail-closed to indexed templates, byte-copies both files, then validates the COPY whole 4// (a broken template never lands silently) and reports its version. Negatives: unknown name, indexed row 5// with missing files, missing gallery. ZERO forks. license_tier: ORIGINAL expect_exit: 0 6import "nx_wflow_engine.nx" 7 8func tg_has(path: *u8, needle: *u8) -> i64 { 9 let szp: *i64 = sys_mmap(8) as *i64 10 let b: *u8 = wf_readall(path, szp) 11 if (b as i64) == 0 { return 0 } 12 if szp[0] == 0 { return 0 } 13 return wf_lines_with2(b, szp[0], needle, needle) 14} 15 16func main() -> i64 { 17 p("=== NX-WFLOW-TPL GATE (R13: gallery index + instantiate fail-closed + validated copies) ===\n" as *u8) 18 var ok: i64 = 1 19 let now: i64 = wf_now() 20 let dir: *u8 = sys_mmap(128) 21 var dr: i64 = 0 22 dr = wf_cat(dir, dr, "/tmp/wftpl_" as *u8) 23 dr = wf_catn(dir, dr, now) 24 dir[dr] = 0 as u8 25 __syscall(83, dir as i64, 493, 0, 0, 0, 0) 26 27 let ip: *u8 = sys_mmap(512) 28 wf_tpl_index_path(dir, ip) 29 wf_append(ip, "good|A valid two-step template\n" as *u8) 30 wf_append(ip, "ghost|Indexed but its files are missing\n" as *u8) 31 let gf: *u8 = sys_mmap(512) 32 let gs: *u8 = sys_mmap(512) 33 wf_tpl_path(dir, "good" as *u8, ".flows" as *u8, gf) 34 wf_tpl_path(dir, "good" as *u8, ".steps" as *u8, gs) 35 wf_append(gf, "@version 1\n" as *u8) 36 wf_append(gf, "g1|go|-\n" as *u8) 37 wf_append(gs, "g1|1|notify|-|hi {name}|1\n" as *u8) 38 39 // T1 list: both rows printed, only the complete pair counts as usable 40 let c1: i64 = wf_tpl_list(dir) 41 p(" T1 usable=" as *u8); pn(c1); p("\n" as *u8) 42 if c1 != 1 { ok = 0 } 43 44 // T2 instantiate good -> dest copies byte-real, validated whole, version reported 45 let df: *u8 = sys_mmap(128) 46 var dfo: i64 = 0 47 dfo = wf_cat(df, dfo, "/tmp/wftpl_inst_" as *u8) 48 dfo = wf_catn(df, dfo, now) 49 dfo = wf_cat(df, dfo, ".flows" as *u8) 50 df[dfo] = 0 as u8 51 let dsp: *u8 = sys_mmap(128) 52 var dso: i64 = 0 53 dso = wf_cat(dsp, dso, "/tmp/wftpl_inst_" as *u8) 54 dso = wf_catn(dsp, dso, now) 55 dso = wf_cat(dsp, dso, ".steps" as *u8) 56 dsp[dso] = 0 as u8 57 let v: i64 = wf_tpl_instantiate(dir, "good" as *u8, df, dsp) 58 let hasFlow: i64 = tg_has(df, "g1|go|-" as *u8) 59 let hasStep: i64 = tg_has(dsp, "notify" as *u8) 60 p(" T2 instantiate ver=" as *u8); pn(v); p(" flowCopied=" as *u8); pn(hasFlow); p(" stepCopied=" as *u8); pn(hasStep); p("\n" as *u8) 61 if v != 1 { ok = 0 } 62 if hasFlow != 1 { ok = 0 } 63 if hasStep != 1 { ok = 0 } 64 65 // T3 unknown template -> fail-closed 66 let r3: i64 = wf_tpl_instantiate(dir, "nosuch" as *u8, df, dsp) 67 p(" T3 unknown rc=" as *u8); pn(r3); p("\n" as *u8) 68 if r3 != (0 - 1) { ok = 0 } 69 70 // T4 indexed but files missing -> loud refuse 71 let r4: i64 = wf_tpl_instantiate(dir, "ghost" as *u8, df, dsp) 72 p(" T4 ghost rc=" as *u8); pn(r4); p("\n" as *u8) 73 if r4 != (0 - 1) { ok = 0 } 74 75 // T5 missing gallery -> loud 76 let r5: i64 = wf_tpl_list("/tmp/wftpl_no_such_dir_ever" as *u8) 77 p(" T5 nogallery rc=" as *u8); pn(r5); p("\n" as *u8) 78 if r5 != (0 - 1) { ok = 0 } 79 80 // T6 negctl: instantiated copy carries no nonsense 81 let ban: i64 = tg_has(df, "BANANA" as *u8) 82 p(" T6 negctl nonsense=" as *u8); pn(ban); p("\n" as *u8) 83 if ban != 0 { ok = 0 } 84 85 p("NX-WFLOW-TPL-GATE dir=" as *u8); p(dir); p(" forks=0 " as *u8) 86 if ok == 1 { p("verdict=GREEN\n" as *u8); return 0 } 87 p("verdict=RED\n" as *u8) 88 return 1 89}