code wiki / _hdl_build / nx_recombine_novelty_gate.nx

nx_recombine_novelty_gate.nx source

↩ module page · 190 lines · 8663 B

1// nx_recombine_novelty_gate.nx -- THE R2 CLAIM GATE for the modeling lane (ladder head 1785858051). 2// 3// The ladder's top rung says: RECOMBINABLE = novel outputs sampled from the space, novelty PROVEN. 4// nx_variant_mesh_gate already proves the 6 presets are valid + coarsely distinct; what it cannot 5// say is that the generator RECOMBINES -- that a NEW point in the swap-slot space, one that is 6// none of the presets, comes out valid and genuinely distinct, and that a duplicate would be 7// CAUGHT. This gate proves exactly that: 8// - a 7th, NOVEL recombinant tuple (human body + elf ears + tail, build 112 -- in the space, 9// not in the preset list) is generated, closed, and distinct from all six presets 10// - the distinctness floor is DATA-DERIVED (median pairwise distance / 8 = the near-duplicate 11// band), never a magic constant: no pair may sit in the band 12// - the NEGATIVE CONTROL regenerates a preset tuple and demands distance == 0: one measurement 13// read from both sides -- generation is DETERMINISTIC (same tuple -> same descriptor) AND the 14// duplicate detector provably fires below the floor (a tooth that cannot bite is not a tooth) 15// Descriptor = shape + scale: a 4x4x4 occupancy histogram over the mesh's own bbox (per-mille, 16// scale-free shape signature) + the bbox dimensions in grid units (so build-scale differences 17// count). Integer-only throughout. 18// license_tier: ORIGINAL No hw writes (Rule 26). 19import "nx_syscalls.nx" 20import "nx_gate_verdict.nx" 21import "nx_sdfrender.nx" 22import "nx_meshgen.nx" 23import "nx_assetvariant.nx" 24 25const RN_MESHES: i64 = 8 // 6 presets + 1 novel recombinant + 1 duplicate-of-preset0 26const RN_DESC: i64 = 68 // 64 hist cells + nverts + bbox dx dy dz 27 28// build the descriptor from the surface-net vertex buffer (i64 xyz triples) 29func rn_desc(vb: *i64, nv: i64, d: *i64) -> i64 { 30 var i: i64 = 0 31 while i < RN_DESC { d[i] = 0; i = i + 1 } 32 if nv <= 0 { return 0 } 33 var minx: i64 = vb[0]; var maxx: i64 = vb[0] 34 var miny: i64 = vb[1]; var maxy: i64 = vb[1] 35 var minz: i64 = vb[2]; var maxz: i64 = vb[2] 36 i = 0 37 while i < nv { 38 let x: i64 = vb[i*3]; let y: i64 = vb[i*3+1]; let z: i64 = vb[i*3+2] 39 if x < minx { minx = x } 40 if x > maxx { maxx = x } 41 if y < miny { miny = y } 42 if y > maxy { maxy = y } 43 if z < minz { minz = z } 44 if z > maxz { maxz = z } 45 i = i + 1 46 } 47 let dx: i64 = maxx - minx + 1 48 let dy: i64 = maxy - miny + 1 49 let dz: i64 = maxz - minz + 1 50 i = 0 51 while i < nv { 52 var cx: i64 = (vb[i*3] - minx) * 4 / dx 53 var cy: i64 = (vb[i*3+1] - miny) * 4 / dy 54 var cz: i64 = (vb[i*3+2] - minz) * 4 / dz 55 if cx > 3 { cx = 3 } 56 if cy > 3 { cy = 3 } 57 if cz > 3 { cz = 3 } 58 let cell: i64 = cx * 16 + cy * 4 + cz 59 d[cell] = d[cell] + 1 60 i = i + 1 61 } 62 // per-mille normalize the histogram (shape, not size) 63 i = 0 64 while i < 64 { d[i] = d[i] * 1000 / nv; i = i + 1 } 65 d[64] = nv 66 d[65] = dx 67 d[66] = dy 68 d[67] = dz 69 return 0 70} 71 72// distance = L1 over the per-mille shape histogram + L1 over bbox dims (grid units) 73func rn_dist(a: *i64, b: *i64) -> i64 { 74 var s: i64 = 0 75 var i: i64 = 0 76 while i < 64 { 77 var dd: i64 = a[i] - b[i] 78 if dd < 0 { dd = 0 - dd } 79 s = s + dd 80 i = i + 1 81 } 82 i = 65 83 while i < 68 { 84 var d2: i64 = a[i] - b[i] 85 if d2 < 0 { d2 = 0 - d2 } 86 s = s + d2 87 i = i + 1 88 } 89 return s 90} 91 92func main(argc: i64, argv: *i64) -> i64 { 93 let ctr: *i64 = gv_ctr() 94 gv_head("nx_recombine_novelty_gate -- R2: a NEW point in the space is valid, distinct, and a duplicate is CAUGHT" as *u8) 95 96 let base: i64 = sys_mmap(sdf_bytes()) as i64 97 let F: *i64 = sys_mmap((MG_N + 1) * (MG_N + 1) * (MG_N + 1) * 8) as *i64 98 let cv: *i64 = sys_mmap(MG_N * MG_N * MG_N * 8) as *i64 99 let vb: *i64 = sys_mmap(MG_MAXV * 3 * 8) as *i64 100 let fb: *i64 = sys_mmap(MG_MAXF * 3 * 8) as *i64 101 let out: *i64 = sys_mmap(16) as *i64 102 103 // tuples: the 6 grid-safe presets (nx_variant_mesh_gate roster) + [6] the NOVEL recombinant 104 // (human body, no horns, elf ears, TAIL, build 112 -- a point in the space, NOT a preset) 105 // + [7] a DUPLICATE of preset 0 (the negative control / determinism twin) 106 let vt: *i64 = sys_mmap(RN_MESHES * 5 * 8) as *i64 107 var q: i64 = 0 108 vt[q]=0; vt[q+1]=0; vt[q+2]=0; vt[q+3]=0; vt[q+4]=100; q=q+5 // human 109 vt[q]=0; vt[q+1]=0; vt[q+2]=1; vt[q+3]=0; vt[q+4]=80; q=q+5 // elf 110 vt[q]=2; vt[q+1]=0; vt[q+2]=1; vt[q+3]=0; vt[q+4]=100; q=q+5 // goblin 111 vt[q]=2; vt[q+1]=0; vt[q+2]=1; vt[q+3]=0; vt[q+4]=125; q=q+5 // hobgoblin 112 vt[q]=1; vt[q+1]=0; vt[q+2]=1; vt[q+3]=1; vt[q+4]=100; q=q+5 // wolf 113 vt[q]=1; vt[q+1]=1; vt[q+2]=1; vt[q+3]=1; vt[q+4]=125; q=q+5 // dire wolf 114 vt[q]=0; vt[q+1]=0; vt[q+2]=1; vt[q+3]=1; vt[q+4]=112; q=q+5 // NOVEL recombinant 115 vt[q]=0; vt[q+1]=0; vt[q+2]=0; vt[q+3]=0; vt[q+4]=100; q=q+5 // duplicate of human 116 117 let descs: *i64 = sys_mmap(RN_MESHES * RN_DESC * 8) as *i64 118 var closed_all: i64 = 1 119 var m: i64 = 0 120 while m < RN_MESHES { 121 av_build(base, vt[m*5], vt[m*5+1], vt[m*5+2], vt[m*5+3], vt[m*5+4]) 122 mg_build(base, F, cv, vb, fb, out) 123 let nv: i64 = out[0] 124 let nf: i64 = out[1] 125 var closed: i64 = 1 126 if nv < 400 { closed = 0 } 127 if nf < nv * 3 / 2 { closed = 0 } 128 if nf > nv * 5 / 2 { closed = 0 } 129 if closed == 0 { closed_all = 0 } 130 rn_desc(vb, nv, ((descs as i64) + m * RN_DESC * 8) as *i64) 131 m = m + 1 132 } 133 gv_check("T1 ALL 8 GENERATIONS MESH CLOSED: 6 presets + the novel recombinant + the duplicate twin all land in the Euler genus-0 band -- a new point in the space is not a degenerate point" as *u8, closed_all, ctr) 134 135 // pairwise distances among the 7 DISTINCT-INTENDED meshes (presets + novel; the duplicate is 136 // handled by its own teeth). Floor = median pairwise / 8, derived from THIS run's data. 137 let dists: *i64 = sys_mmap(32 * 8) as *i64 138 var nd: i64 = 0 139 var i: i64 = 0 140 while i < 7 { 141 var j: i64 = i + 1 142 while j < 7 { 143 dists[nd] = rn_dist(((descs as i64) + i * RN_DESC * 8) as *i64, ((descs as i64) + j * RN_DESC * 8) as *i64) 144 nd = nd + 1 145 j = j + 1 146 } 147 i = i + 1 148 } 149 // insertion sort -> median + min 150 i = 1 151 while i < nd { 152 let v: i64 = dists[i] 153 var k: i64 = i - 1 154 var st: i64 = 0 155 while st == 0 { 156 if k < 0 { st = 1 } else { 157 if dists[k] > v { dists[k+1] = dists[k]; k = k - 1 } else { st = 1 } 158 } 159 } 160 dists[k+1] = v 161 i = i + 1 162 } 163 let dmin: i64 = dists[0] 164 let dmed: i64 = dists[nd / 2] 165 let floor: i64 = dmed / 8 166 var t2: i64 = 0 167 if dmin > floor { if floor > 0 { t2 = 1 } } 168 gv_check("T2 NO NEAR-DUPLICATES ANYWHERE: the minimum pairwise distance across all 21 pairs (6 presets + novel) clears the data-derived floor (median/8) -- every generated point is its own point" as *u8, t2, ctr) 169 170 // the novel recombinant specifically: its nearest preset must clear the floor 171 var novel_min: i64 = 0 - 1 172 i = 0 173 while i < 6 { 174 let d3: i64 = rn_dist(((descs as i64) + 6 * RN_DESC * 8) as *i64, ((descs as i64) + i * RN_DESC * 8) as *i64) 175 if novel_min < 0 { novel_min = d3 } else { if d3 < novel_min { novel_min = d3 } } 176 i = i + 1 177 } 178 var t3: i64 = 0 179 if novel_min > floor { t3 = 1 } 180 gv_check("T3 THE NOVEL RECOMBINANT IS NOVEL: a tuple that is in the swap-slot space but in NO preset list generates a mesh whose nearest preset clears the floor -- the generator SAMPLES the space, it does not replay presets" as *u8, t3, ctr) 181 182 // negative control + determinism: the duplicate of preset 0, ONE measurement, both polarities 183 let ddup: i64 = rn_dist(((descs as i64) + 7 * RN_DESC * 8) as *i64, ((descs as i64) + 0 * RN_DESC * 8) as *i64) 184 gv_check("T4 DETERMINISM: regenerating the same tuple yields distance ZERO -- same tuple, same mesh, same descriptor, no hidden entropy" as *u8, (ddup == 0) as i64, ctr) 185 gv_check("T5 THE DUPLICATE DETECTOR BITES: that zero sits BELOW the floor, so a replayed input is flagged as a duplicate -- the novelty tooth is proven able to fail" as *u8, (ddup <= floor) as i64, ctr) 186 187 let rc: i64 = gv_verdict("RECOMBINE-NOVELTY-GATE", ctr, "R2 claim for the modeling lane: data-derived floor, novel point proven, duplicate caught, deterministic" as *u8) 188 sys_exit(rc) 189 return rc 190}