code wiki / (root) / nx_mvault_reindex_gate.nx

nx_mvault_reindex_gate.nx source

↩ module page · 101 lines · 4199 B

1// nx_mvault_reindex_gate.nx -- proves the per-item migrate pipeline end-to-end 2// on synthetic items in a /tmp store: contextual classify -> content CID -> 3// dedup -> DSM dest path -> reclaim tally -> seg-store record. 4// (Build with a clean /tmp store; run-exit == 0 means GREEN.) 5 6import "nx_syscalls.nx" 7import "nx_mvault_ingest.nx" 8import "nx_mvault_context.nx" 9import "nx_mvault_reclaim.nx" 10import "nx_mvault_reindex.nx" 11 12func starts_with(s: *u8, p: *u8) -> i64 { 13 var i: i64 = 0 14 while p[i] != (0 as u8) { 15 if s[i] != p[i] { return 0 } 16 i = i + 1 17 } 18 return 1 19} 20 21func cid_ok(c: *u8) -> i64 { 22 if c[0] != (0x6E as u8) { return 0 } // n 23 if c[1] != (0x78 as u8) { return 0 } // x 24 if c[2] != (0x63 as u8) { return 0 } // c 25 if c[3] != (0x31 as u8) { return 0 } // 1 26 if c[4] != (0x2D as u8) { return 0 } // - 27 return 1 28} 29 30func main(argc: i64, argv: *i64) -> i64 { 31 var fails: i64 = 0 32 let rc: *i64 = mv_reclaim_new() 33 let sp: *u8 = "/tmp/mvault_reindex_gate-" as *u8 34 let root: *u8 = "/volume1/vault" as *u8 35 let thresh: i64 = 1073741824 36 37 let jb1: *u8 = sys_mmap(16) 38 jb1[0] = 0xFF as u8; jb1[1] = 0xD8 as u8; jb1[2] = 0xFF as u8; jb1[3] = 0xE0 as u8 39 let jb4: *u8 = sys_mmap(16) 40 jb4[0] = 0xFF as u8; jb4[1] = 0xD8 as u8; jb4[2] = 0xFF as u8; jb4[3] = 0xE1 as u8 41 let vb: *u8 = sys_mmap(16) 42 vb[0] = 0 as u8; vb[1] = 0 as u8; vb[2] = 0 as u8; vb[3] = 0x18 as u8 43 vb[4] = 0x66 as u8; vb[5] = 0x74 as u8; vb[6] = 0x79 as u8; vb[7] = 0x70 as u8 44 vb[8] = 0x69 as u8; vb[9] = 0x73 as u8; vb[10] = 0x6F as u8; vb[11] = 0x6D as u8 45 let pb: *u8 = sys_mmap(16) 46 pb[0] = 0x89 as u8; pb[1] = 0x50 as u8; pb[2] = 0x4E as u8; pb[3] = 0x47 as u8 47 pb[4] = 0x0D as u8; pb[5] = 0x0A as u8; pb[6] = 0x1A as u8; pb[7] = 0x0A as u8 48 49 let path: *u8 = sys_mmap(512) 50 let cid: *u8 = sys_mmap(80) 51 52 let src_t: *u8 = "tumblr" as *u8 53 let src_r: *u8 = "reddit" as *u8 54 let src_d: *u8 = "doujin" as *u8 55 let src_s: *u8 = "sovereign" as *u8 56 let ext_j: *u8 = "jpg" as *u8 57 let ext_m: *u8 = "mp4" as *u8 58 let ext_p: *u8 = "png" as *u8 59 let pre_ri: *u8 = "/volume1/vault/real/image/" as *u8 60 let pre_rv: *u8 = "/volume1/vault/real/video/" as *u8 61 let pre_rm: *u8 = "/volume1/vault/real/manga/" as *u8 62 let pre_gi: *u8 = "/volume1/vault/gen/image/" as *u8 63 64 // 1: real tumblr jpeg -> real/image, NEW 65 let d1: i64 = mv_reindex_one(rc, sp, root, jb1, 4, MV_CLASS_REAL, MV_CTX_NONE, src_t, ext_j, thresh, 1, path, cid) 66 if d1 != 0 { fails = fails + 1 } 67 if starts_with(path, pre_ri) != 1 { fails = fails + 1 } 68 if cid_ok(cid) != 1 { fails = fails + 1 } 69 70 // 2: SAME jpeg bytes -> DUPLICATE (dedup by content CID) 71 let d2: i64 = mv_reindex_one(rc, sp, root, jb1, 4, MV_CLASS_REAL, MV_CTX_NONE, src_t, ext_j, thresh, 1, path, cid) 72 if d2 != 1 { fails = fails + 1 } 73 74 // 3: real reddit mp4 -> real/video, NEW 75 let d3: i64 = mv_reindex_one(rc, sp, root, vb, 12, MV_CLASS_REAL, MV_CTX_NONE, src_r, ext_m, thresh, 1, path, cid) 76 if d3 != 0 { fails = fails + 1 } 77 if starts_with(path, pre_rv) != 1 { fails = fails + 1 } 78 79 // 4: jpeg bytes IN A NUMBERED SEQUENCE -> MANGA (contextual), NEW 80 let d4: i64 = mv_reindex_one(rc, sp, root, jb4, 4, MV_CLASS_REAL, MV_CTX_IMGSEQ, src_d, ext_j, thresh, 1, path, cid) 81 if d4 != 0 { fails = fails + 1 } 82 if starts_with(path, pre_rm) != 1 { fails = fails + 1 } 83 84 // 5: gen png -> gen/image, NEW 85 let d5: i64 = mv_reindex_one(rc, sp, root, pb, 8, MV_CLASS_GEN, MV_CTX_NONE, src_s, ext_p, thresh, 1, path, cid) 86 if d5 != 0 { fails = fails + 1 } 87 if starts_with(path, pre_gi) != 1 { fails = fails + 1 } 88 89 // reclaim tallies: 5 seen, 4 kept, 1 duplicate reclaimable (4 bytes) 90 if mv_reclaim_total(rc) != 5 { fails = fails + 1 } 91 if mv_reclaim_unique(rc) != 4 { fails = fails + 1 } 92 if mv_reclaim_dupcount(rc) != 1 { fails = fails + 1 } 93 if mv_reclaim_reclaimable(rc) != 4 { fails = fails + 1 } 94 95 if fails == 0 { 96 sys_write(1, "MVAULT-REINDEX-GATE GREEN pipeline\n" as *u8, 35) 97 return 0 98 } 99 sys_write(1, "MVAULT-REINDEX-GATE RED\n" as *u8, 24) 100 return 1 101}