code wiki / _hdl_build / nx_ws_ingest_run.nx

nx_ws_ingest_run.nx source

↩ module page · 55 lines · 2244 B

1// nx_ws_ingest_run.nx -- runnable driver for the integration keystone nx_ws_ingest. 2// nx_ws_ingest_run -> DRY-RUN into a SCRATCH prefix (safe; never touches the live registry) 3// nx_ws_ingest_run LIVE -> ingest every project-*.md into the LIVE registry (WS_PREFIX) 4// Scans the live Claude memory dir by default (overridable arg 2 = config hierarchy #17). Sovereign. 5// license_tier: ORIGINAL 6import "nx_ws_ingest.nx" 7import "nx_workstream_store.nx" 8import "nx_seg_store.nx" 9import "nx_syscalls.nx" 10 11const WSI_DEF_MEMDIR: *u8 = "/mnt/c/Users/elder/.claude/projects/C--Users-elder/memory" 12const WSI_SCRATCH: *u8 = "knowledge/store/wsi_scratch-" 13 14func rp(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 15func rn(v: i64) -> i64 { 16 let bb: *u8 = sys_mmap(28); var m: i64 = v 17 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 18 let t: *u8 = sys_mmap(28); var k: i64 = 0 19 if m == 0 { t[0] = 48 as u8; k = 1 } 20 while m > 0 { t[k] = ((48 + (m % 10)) as u8); m = m / 10; k = k + 1 } 21 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } 22 sys_write(1, bb, k); return 0 23} 24 25// 1 iff NUL-term `a` byte-equals NUL-term `b`. 26func r_eq(a: *u8, b: *u8) -> i64 { 27 var k: i64 = 0 28 while a[k] != (0 as u8) { if a[k] != b[k] { return 0 } k = k + 1 } 29 if b[k] != (0 as u8) { return 0 } 30 return 1 31} 32 33func main(argc: i64, argv: *i64) -> i64 { 34 var prefix: *u8 = WSI_SCRATCH 35 var mode: *u8 = "DRYRUN-scratch" as *u8 36 var memdir: *u8 = WSI_DEF_MEMDIR 37 if argc >= 2 { 38 if r_eq(argv[1] as *u8, "LIVE" as *u8) == 1 { prefix = WS_PREFIX; mode = "LIVE" as *u8 } 39 } 40 if argc >= 3 { memdir = argv[2] as *u8 } 41 42 let out4: *i64 = sys_mmap(64) as *i64 43 let rc: i64 = wsi_ingest_omit_p(prefix, memdir, 0 as *u8, out4) 44 45 rp("WS-INGEST mode=" as *u8); rp(mode) 46 rp(" prefix=" as *u8); rp(prefix) 47 rp(" scanned=" as *u8); rn(out4[0]) 48 rp(" registered_new=" as *u8); rn(out4[1]) 49 rp(" skipped=" as *u8); rn(out4[2]) 50 rp(" errors=" as *u8); rn(out4[3]) 51 rp(" rc=" as *u8); rn(rc) 52 if rc < 0 { rp(" verdict=FAIL\n" as *u8); sys_exit(1); return 1 } 53 rp(" verdict=OK\n" as *u8) 54 sys_exit(0); return 0 55}