code wiki / (root) / nx_nxa_groom_gate.nx

nx_nxa_groom_gate.nx source

↩ module page · 369 lines · 14496 B

1// nx_nxa_groom_gate.nx -- THE GROOM GATE v3: anatomical invariants on a generated groom asset. 2// 3// WHY (operator 2026-08-26, twice in one day): first a backwards groom shipped because the referee 4// plot inherited the organ's own facing assumption; then a head-covering wrap shipped because 794 5// permil of synthesized roots sat INSIDE the skull and hair grew out of the volume. Both defects are 6// now BANKED REAL ASSETS and both are teeth here. v2 replaces the v1 facing basis (an extreme-extent 7// nose test, itself refuted: the dense face mesh drags the centroid so the sparse occiput measures 8// the larger extent) with the same basis the groom organ now uses: the estate rig convention 9// ANTERIOR-NEGATIVE = FACE, cross-checked by mesh density, refusing on disagreement. 10// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0 11import "nx_syscalls.nx" 12import "nx_gate_verdict.nx" 13 14const GG_SUBJECT: *u8 = "sites/nishifamily/world/ref9d.nxa" 15const GG_FIX_HIJAB: *u8 = "knowledge/banked_ref9d_hijab.nxa" // real defect 2: face-side roots + interior fill 16const GG_FIX_BACKWARDS: *u8 = "knowledge/banked_ref9d_backwards.nxa" // real defect 1: interior fill (its facing is the correct side) 17const GG_HDR: i64 = 32 18const GG_TOCE: i64 = 32 19const GG_WORDS: i64 = 24 20const GG_PTS: i64 = 8 21const GG_HEADBAND_PERMIL: i64 = 120 22const GG_MIN_STRANDS: i64 = 4800 23const GG_LEN_LO_PERMIL: i64 = 180 24const GG_LEN_HI_PERMIL: i64 = 400 25const GG_CONF_MAX_PERMIL: i64 = 1300 26const GG_FACE_CONE_PERMIL: i64 = 350 27const GG_EYE_DROP_PERMIL: i64 = 40 28const GG_FACE_MAX_PERMIL: i64 = 80 29// ON-SURFACE BY NEAREST NEIGHBOUR. The first draft binned the shell by octant x elevation and was 30// refuted by its own control: REAL surface roots read 764 permil interior, because a bin shared by 31// chin and scalp takes the chin's radius. The exact test for this asset class: distance to the 32// NEAREST head vert. Kept roots ARE verts (NN = 0); an on-shell synthetic sits within its jitter of 33// an anchor; an interior point is far from every vert. The bound is DERIVED per asset as twice the 34// mesh's own median inter-vert spacing -- no constant survives a re-mesh. Measured on the banked 35// wide-blend defect: 290 permil far; real roots 0. 36const GG_FAR_MAX_PERMIL: i64 = 100 37const GG_FAR_FIX_MIN_PERMIL: i64 = 200 38const GG_SPACING_SAMPLES: i64 = 128 39 40func gg_rd64(b: *u8, o: i64) -> i64 { 41 var v: i64 = 0 42 var k: i64 = 7 43 while k >= 0 { v = v*256 + (b[o + k] as i64); k = k - 1 } 44 return v 45} 46func gg_tageq(b: *u8, o: i64, t: *u8) -> i64 { 47 var i: i64 = 0 48 while i < 4 { if b[o + i] != t[i] { return 0 } i = i + 1 } 49 return 1 50} 51func gg_isqrt(n: i64) -> i64 { 52 if n <= 0 { return 0 } 53 var x: i64 = n 54 var y: i64 = (x + 1) / 2 55 while y < x { x = y; y = (x + n/x) / 2 } 56 return x 57} 58 59 60// one pass over an NXA: fills out[0..11] = 61// ok, antneg, antpos, front_roots, back_roots, nstr, meanlen_permil_of_span, 62// maxrootdist_permil_of_bandr, facecone_permil, span, far_from_surface_permil, spacing 63func gg_stats(path: *u8, out: *i64) -> i64 { 64 out[0] = 0 65 let lp: *i64 = sys_mmap(16) as *i64 66 let b: *u8 = sys_read_file(path, lp) 67 if (b as i64) == 0 { return 0 } 68 let ns: i64 = gg_rd64(b, 16) 69 if ns < 1 { return 0 } 70 var vo: i64 = 0 - 1 71 var ho: i64 = 0 - 1 72 var s: i64 = 0 73 while s < ns { 74 let e: i64 = GG_HDR + s*GG_TOCE 75 if gg_tageq(b, e, "VERT" as *u8) == 1 { vo = gg_rd64(b, e + 8) } 76 if gg_tageq(b, e, "HSTR" as *u8) == 1 { ho = gg_rd64(b, e + 8) } 77 s = s + 1 78 } 79 if vo < 0 { return 0 } 80 if ho < 0 { return 0 } 81 let nv: i64 = gg_rd64(b, vo) 82 let nstr: i64 = gg_rd64(b, ho) 83 if nv < 8 { return 0 } 84 if nstr < 1 { return 0 } 85 var mn0: i64 = 0 86 var mx0: i64 = 0 87 var mn1: i64 = 0 88 var mx1: i64 = 0 89 var mn2: i64 = 0 90 var mx2: i64 = 0 91 var first: i64 = 1 92 var i: i64 = 0 93 while i < nv { 94 let c0: i64 = gg_rd64(b, vo + 8 + (i*3)*8) 95 let c1: i64 = gg_rd64(b, vo + 8 + (i*3 + 1)*8) 96 let c2: i64 = gg_rd64(b, vo + 8 + (i*3 + 2)*8) 97 if first == 1 { mn0 = c0; mx0 = c0; mn1 = c1; mx1 = c1; mn2 = c2; mx2 = c2; first = 0 } 98 if c0 < mn0 { mn0 = c0 } 99 if c0 > mx0 { mx0 = c0 } 100 if c1 < mn1 { mn1 = c1 } 101 if c1 > mx1 { mx1 = c1 } 102 if c2 < mn2 { mn2 = c2 } 103 if c2 > mx2 { mx2 = c2 } 104 i = i + 1 105 } 106 let e0: i64 = mx0 - mn0 107 let e1: i64 = mx1 - mn1 108 let e2: i64 = mx2 - mn2 109 var sa: i64 = 2 110 if e0 >= e1 { if e0 >= e2 { sa = 0 } } 111 if e1 > e0 { if e1 >= e2 { sa = 1 } } 112 var la: i64 = 0 113 var aa: i64 = 1 114 if sa == 0 { la = 1; aa = 2; if e2 > e1 { la = 2; aa = 1 } } 115 if sa == 1 { la = 0; aa = 2; if e2 > e0 { la = 2; aa = 0 } } 116 if sa == 2 { la = 0; aa = 1; if e1 > e0 { la = 1; aa = 0 } } 117 var span: i64 = e2 118 var stop: i64 = mx2 119 if sa == 0 { span = e0; stop = mx0 } 120 if sa == 1 { span = e1; stop = mx1 } 121 if span <= 0 { return 0 } 122 let bandlo: i64 = stop - span*GG_HEADBAND_PERMIL/1000 123 var hcx: i64 = 0 124 var hcy: i64 = 0 125 var hcz: i64 = 0 126 var hcn: i64 = 0 127 i = 0 128 while i < nv { 129 let pst: i64 = gg_rd64(b, vo + 8 + (i*3 + sa)*8) 130 if pst >= bandlo { 131 hcx = hcx + gg_rd64(b, vo + 8 + (i*3)*8) 132 hcy = hcy + gg_rd64(b, vo + 8 + (i*3 + 1)*8) 133 hcz = hcz + gg_rd64(b, vo + 8 + (i*3 + 2)*8) 134 hcn = hcn + 1 135 } 136 i = i + 1 137 } 138 if hcn < 8 { return 0 } 139 let cx: i64 = hcx/hcn 140 let cy: i64 = hcy/hcn 141 let cz: i64 = hcz/hcn 142 // density cross-check + band radius + HEAD-VERT TABLE for the NN surface test 143 let hv: *i64 = sys_mmap(hcn*3*8 + 64) as *i64 144 var hn: i64 = 0 145 var antpos: i64 = 0 146 var antneg: i64 = 0 147 var bandr: i64 = 0 148 i = 0 149 while i < nv { 150 let pst: i64 = gg_rd64(b, vo + 8 + (i*3 + sa)*8) 151 if pst >= bandlo { 152 let vx: i64 = gg_rd64(b, vo + 8 + (i*3)*8) 153 let vy: i64 = gg_rd64(b, vo + 8 + (i*3 + 1)*8) 154 let vz: i64 = gg_rd64(b, vo + 8 + (i*3 + 2)*8) 155 let dx: i64 = vx - cx 156 let dy: i64 = vy - cy 157 let dz: i64 = vz - cz 158 var pav: i64 = dz 159 if aa == 0 { pav = dx } 160 if aa == 1 { pav = dy } 161 if pav > 0 { antpos = antpos + 1 } else { antneg = antneg + 1 } 162 let rr: i64 = gg_isqrt(dx*dx + dy*dy + dz*dz) 163 if rr > bandr { bandr = rr } 164 hv[hn*3] = vx 165 hv[hn*3 + 1] = vy 166 hv[hn*3 + 2] = vz 167 hn = hn + 1 168 } 169 i = i + 1 170 } 171 if bandr <= 0 { return 0 } 172 if hn < 8 { return 0 } 173 // median inter-vert spacing from a strided sample: the mesh's own resolution, derived not chosen 174 let sstep: i64 = hn/GG_SPACING_SAMPLES + 1 175 let samp: *i64 = sys_mmap(GG_SPACING_SAMPLES*8 + 64) as *i64 176 var sn9: i64 = 0 177 var k9: i64 = 0 178 while k9 < hn { 179 if sn9 < GG_SPACING_SAMPLES { 180 var best: i64 = 0 181 var j9: i64 = 0 182 while j9 < hn { 183 if j9 != k9 { 184 let ddx: i64 = hv[k9*3] - hv[j9*3] 185 let ddy: i64 = hv[k9*3 + 1] - hv[j9*3 + 1] 186 let ddz: i64 = hv[k9*3 + 2] - hv[j9*3 + 2] 187 let d2: i64 = ddx*ddx + ddy*ddy + ddz*ddz 188 if d2 > 0 { if best == 0 { best = d2 } else { if d2 < best { best = d2 } } } 189 } 190 j9 = j9 + 1 191 } 192 // insertion into the sorted sample array (no break in this dialect: flag walk) 193 let dv: i64 = gg_isqrt(best) 194 var p9: i64 = sn9 195 var moving: i64 = 1 196 while moving == 1 { 197 if p9 > 0 { 198 if samp[p9 - 1] > dv { samp[p9] = samp[p9 - 1]; p9 = p9 - 1 } else { moving = 0 } 199 } else { moving = 0 } 200 } 201 samp[p9] = dv 202 sn9 = sn9 + 1 203 } 204 k9 = k9 + sstep 205 } 206 let spacing: i64 = samp[sn9/2] 207 // ORIENTATION BY CONVENTION (anterior-negative = face), the same basis as the groom organ 208 let fsign: i64 = 0 - 1 209 let eyelvl: i64 = stop - span*GG_EYE_DROP_PERMIL/1000 210 var front: i64 = 0 211 var back: i64 = 0 212 var lensum: i64 = 0 213 var maxroot: i64 = 0 214 var conepts: i64 = 0 215 var totpts: i64 = 0 216 var interior: i64 = 0 217 var binned: i64 = 0 218 var si: i64 = 0 219 while si < nstr { 220 let base: i64 = ho + 8 + si*GG_WORDS*8 221 let rx: i64 = gg_rd64(b, base) 222 let ry: i64 = gg_rd64(b, base + 8) 223 let rz: i64 = gg_rd64(b, base + 16) 224 let rdx: i64 = rx - cx 225 let rdy: i64 = ry - cy 226 let rdz: i64 = rz - cz 227 var rav: i64 = rdz 228 if aa == 0 { rav = rdx } 229 if aa == 1 { rav = rdy } 230 if rav*fsign > 0 { front = front + 1 } else { back = back + 1 } 231 let rdist: i64 = gg_isqrt(rdx*rdx + rdy*rdy + rdz*rdz) 232 if rdist > maxroot { maxroot = rdist } 233 // NN to the head mesh: far from every vert = not on the surface 234 var bd2: i64 = 0 235 var j8: i64 = 0 236 while j8 < hn { 237 let ex: i64 = rx - hv[j8*3] 238 let ey: i64 = ry - hv[j8*3 + 1] 239 let ez: i64 = rz - hv[j8*3 + 2] 240 let d28: i64 = ex*ex + ey*ey + ez*ez 241 if j8 == 0 { bd2 = d28 } else { if d28 < bd2 { bd2 = d28 } } 242 j8 = j8 + 1 243 } 244 binned = binned + 1 245 // bound = 5x median spacing, CALIBRATED ON MEASURED DATA (2026-08-27): a point on a 246 // triangle INTERIOR is legitimately ~circumradius from every corner -- barycentric surface 247 // roots measure NN p50=379 p99=860 max=941 on ref9d, while the banked interior-fill defect 248 // measures p50=1,397. 5x226=1,130 sits between with ~20% margin each way; 2x clipped 249 // genuine surface points (measured: it refused a correct barycentric groom at 391 permil). 250 if gg_isqrt(bd2) > spacing*5 { interior = interior + 1 } 251 var p: i64 = 0 252 var slen: i64 = 0 253 while p < GG_PTS { 254 let px: i64 = gg_rd64(b, base + (p*3)*8) 255 let py: i64 = gg_rd64(b, base + (p*3 + 1)*8) 256 let pz: i64 = gg_rd64(b, base + (p*3 + 2)*8) 257 if p > 0 { 258 let qx: i64 = px - gg_rd64(b, base + ((p - 1)*3)*8) 259 let qy: i64 = py - gg_rd64(b, base + ((p - 1)*3 + 1)*8) 260 let qz: i64 = pz - gg_rd64(b, base + ((p - 1)*3 + 2)*8) 261 slen = slen + gg_isqrt(qx*qx + qy*qy + qz*qz) 262 } 263 let ddx: i64 = px - cx 264 let ddy: i64 = py - cy 265 let ddz: i64 = pz - cz 266 var pant: i64 = ddz 267 if aa == 0 { pant = ddx } 268 if aa == 1 { pant = ddy } 269 let prr: i64 = gg_isqrt(ddx*ddx + ddy*ddy + ddz*ddz) 270 var pst9: i64 = pz 271 if sa == 0 { pst9 = px } 272 if sa == 1 { pst9 = py } 273 totpts = totpts + 1 274 if pst9 < eyelvl { if prr > 0 { if pant*fsign*1000 > prr*GG_FACE_CONE_PERMIL { 275 conepts = conepts + 1 276 } } } 277 p = p + 1 278 } 279 lensum = lensum + slen 280 si = si + 1 281 } 282 out[0] = 1 283 out[1] = antneg 284 out[2] = antpos 285 out[3] = front 286 out[4] = back 287 out[5] = nstr 288 out[6] = (lensum/nstr)*1000/span 289 out[7] = maxroot*1000/bandr 290 out[8] = conepts*1000/totpts 291 out[9] = span 292 var ib: i64 = binned 293 if ib < 1 { ib = 1 } 294 out[10] = interior*1000/ib 295 out[11] = spacing 296 return 1 297} 298 299func gg_dump(tag: *u8, o: *i64) -> i64 { 300 gv_puts(" " as *u8); gv_puts(tag) 301 gv_puts(": density neg=" as *u8); gv_num(o[1]) 302 gv_puts(" pos=" as *u8); gv_num(o[2]) 303 gv_puts(" roots front=" as *u8); gv_num(o[3]) 304 gv_puts(" back=" as *u8); gv_num(o[4]) 305 gv_puts(" strands=" as *u8); gv_num(o[5]) 306 gv_puts(" len_permil=" as *u8); gv_num(o[6]) 307 gv_puts(" rootmax_permil=" as *u8); gv_num(o[7]) 308 gv_puts(" facecone_permil=" as *u8); gv_num(o[8]) 309 gv_puts(" far_permil=" as *u8); gv_num(o[10]) 310 gv_puts(" spacing=" as *u8); gv_num(o[11]) 311 gv_puts("\n" as *u8) 312 return 0 313} 314 315func main(argc: i64, argv: *i64) -> i64 { 316 gv_head("NXA-GROOM-GATE v2 -- anatomical invariants incl the interior-shell (head-wrap) tooth" as *u8) 317 let ctr: *i64 = gv_ctr() 318 var subj: *u8 = GG_SUBJECT 319 if argc > 1 { subj = argv[1] as *u8 } 320 let so: *i64 = sys_mmap(128) as *i64 321 let ho: *i64 = sys_mmap(128) as *i64 322 let bo: *i64 = sys_mmap(128) as *i64 323 let sok: i64 = gg_stats(subj, so) 324 gv_need("subject-asset-readable" as *u8, sok, ctr) 325 if sok == 1 { 326 gg_dump("subject" as *u8, so) 327 var t0: i64 = 0 328 if so[1] > so[2] { t0 = 1 } 329 gv_check("orientation-density-agrees-with-convention" as *u8, t0, ctr) 330 var t1: i64 = 0 331 if so[4] > so[3] { t1 = 1 } 332 gv_check("facing-roots-behind-face" as *u8, t1, ctr) 333 var t3: i64 = 0 334 if so[5] >= GG_MIN_STRANDS { t3 = 1 } 335 gv_check("density-floor" as *u8, t3, ctr) 336 var t4: i64 = 0 337 if so[6] >= GG_LEN_LO_PERMIL { if so[6] <= GG_LEN_HI_PERMIL { t4 = 1 } } 338 gv_check("length-band-permil" as *u8, t4, ctr) 339 var t5: i64 = 0 340 if so[7] <= GG_CONF_MAX_PERMIL { t5 = 1 } 341 gv_check("scalp-conformance" as *u8, t5, ctr) 342 var t6: i64 = 0 343 if so[8] <= GG_FACE_MAX_PERMIL { t6 = 1 } 344 gv_check("face-cone-clear" as *u8, t6, ctr) 345 var t7: i64 = 0 346 if so[10] <= GG_FAR_MAX_PERMIL { t7 = 1 } 347 gv_check("roots-near-scalp-surface" as *u8, t7, ctr) 348 } 349 let hok: i64 = gg_stats(GG_FIX_HIJAB, ho) 350 gv_need("hijab-fixture-readable" as *u8, hok, ctr) 351 if hok == 1 { 352 gg_dump("fix-hijab" as *u8, ho) 353 var n1: i64 = 0 354 if ho[3] > ho[4] { n1 = 1 } 355 gv_check("neg-control-hijab-fails-facing" as *u8, n1, ctr) 356 var n2: i64 = 0 357 if ho[8] > GG_FACE_MAX_PERMIL { n2 = 1 } 358 gv_check("neg-control-hijab-floods-face-cone" as *u8, n2, ctr) 359 } 360 let bok: i64 = gg_stats(GG_FIX_BACKWARDS, bo) 361 gv_need("interior-fixture-readable" as *u8, bok, ctr) 362 if bok == 1 { 363 gg_dump("fix-interior" as *u8, bo) 364 var n3: i64 = 0 365 if bo[10] >= GG_FAR_FIX_MIN_PERMIL { n3 = 1 } 366 gv_check("neg-control-interior-fill-detected" as *u8, n3, ctr) 367 } 368 return gv_verdict("NXA-GROOM-GATE" as *u8, ctr, "groom anatomy holds and both banked real defects still fail" as *u8) 369}