code wiki / _hdl_build / nx_dedupe_source.nx

nx_dedupe_source.nx source

↩ module page · 73 lines · 4064 B

1// nx_dedupe_source.nx -- CLI: resolve a seq207/seq169 dual-copy source divergence the sovereign way. 2// The RESOLUTION half of the mgmt build guard's DETECTION (ma_build_dup_divergent). Reusable ecosystem-wide. 3// usage: nx_dedupe_source --kat (self-test: reconcile/no-op/refuse/idempotent oracle) 4// nx_dedupe_source <target> [canonical_dir] [shadow_dir] 5// nx_dedupe_source check <target> [canonical_dir] [shadow_dir] 6// The directory pair is OPTIONAL and defaults to the historical _hdl_build <- runtime pair, so every 7// existing caller is unchanged. It exists because the DETECTOR (nx_dup_source_check) discovers ~13 8// source trees while this reconciler knew only two -- hazards in bin/, _retired/ or a nested 9// runtime/runtime/ reported dual_copy:0 and could never be cleared, leaving the board permanently RED. 10// license_tier: ORIGINAL expect_exit: 0 genealogy: seq207 dual-copy class 11import "nx_dedupe_source_lib.nx" 12 13func main(argc: i64, argv: *i64) -> i64 { 14 if argc>=2 { 15 let a1: *u8 = argv[1] as *u8 16 if a1[0]==(45 as u8) { 17 ds_w("=== nx_dedupe_source --kat (dual-copy reconcile: soft-delete the stale twin) ===\ 18" as *u8) 19 let f: i64 = ds_selftest() 20 ds_w("checks failed=" as *u8); ds_w_num(f); ds_w(" (reconcile+gone+backup, no-op benign, refuse-no-canonical, idempotent)\ 21" as *u8) 22 if f==0 { ds_w("VERDICT=GREEN\ 23" as *u8); sys_exit(0); return 0 } 24 ds_w("VERDICT=RED\ 25" as *u8); sys_exit(1); return 1 26 } 27 // `check <target>` = report only (no mutation) 28 var vl: i64=0; while a1[vl]!=(0 as u8){vl=vl+1} 29 if vl==5 { if a1[0]==(99 as u8) { if a1[1]==(104 as u8) { 30 if argc<3 { ds_w("usage: nx_dedupe_source check <target>\ 31" as *u8); sys_exit(2); return 2 } 32 let nm2: *u8 = sys_mmap(128) 33 if ds_sanitize(argv[2] as *u8, nm2, 120)<0 { ds_w("{\"error\":\"bad target name\"}\ 34" as *u8); sys_exit(2); return 2 } 35 // optional explicit tree pair: check <target> [canonical_dir] [shadow_dir] 36 let canon: *u8 = sys_mmap(512) 37 var c: i64 = 0 38 if argc >= 4 { c = ds_cat(canon, 0, argv[3] as *u8) } else { c = ds_cat(canon, 0, "buildroot/runtime/_hdl_build/" as *u8) } 39 c = ds_cat(canon, c, nm2); c = ds_cat(canon, c, ".nx" as *u8) 40 let shadow: *u8 = sys_mmap(512) 41 var s: i64 = 0 42 if argc >= 5 { s = ds_cat(shadow, 0, argv[4] as *u8) } else { s = ds_cat(shadow, 0, "buildroot/runtime/" as *u8) } 43 s = ds_cat(shadow, s, nm2); s = ds_cat(shadow, s, ".nx" as *u8) 44 let both: i64 = ds_exists(canon)*ds_exists(shadow) 45 let o: *u8 = sys_mmap(512) 46 var p: i64 = ds_cat(o, 0, "{\"organ\":\"nx_dedupe_source\",\"verb\":\"check\",\"target\":\"" as *u8) 47 p = ds_cat(o, p, nm2); p = ds_cat(o, p, "\",\"dual_copy\":" as *u8); p = ds_catn(o, p, both) 48 p = ds_cat(o, p, ",\"canonical_bytes\":" as *u8); p = ds_catn(o, p, ds_filesize(canon)) 49 p = ds_cat(o, p, ",\"shadow_bytes\":" as *u8); p = ds_catn(o, p, ds_filesize(shadow)) 50 p = ds_cat(o, p, "}\ 51" as *u8) 52 sys_write(1, o, p) 53 sys_exit(0); return 0 54 } } } 55 // default: resolve the named target 56 let nm: *u8 = sys_mmap(128) 57 if ds_sanitize(a1, nm, 120)<0 { ds_w("{\"error\":\"bad target name (only [a-zA-Z0-9_])\"}\ 58" as *u8); sys_exit(2); return 2 } 59 // optional explicit tree pair: <target> [canonical_dir] [shadow_dir] 60 var cdir: *u8 = 0 as *u8 61 var sdir: *u8 = 0 as *u8 62 if argc >= 3 { cdir = argv[2] as *u8 } 63 if argc >= 4 { sdir = argv[3] as *u8 } 64 let code: i64 = ds_resolve_pair(nm, cdir, sdir, 1) 65 if code==2 { sys_exit(2); return 2 } 66 if code==3 { sys_exit(3); return 3 } 67 if code==4 { sys_exit(4); return 4 } 68 sys_exit(0); return 0 69 } 70 ds_w("usage: nx_dedupe_source --kat | <target> | check <target>\ 71" as *u8) 72 sys_exit(2); return 2 73}