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}