code wiki / (root) / nx_nxa_morf_draw_ingress_gate.nx

nx_nxa_morf_draw_ingress_gate.nx source

↩ module page · 265 lines · 16318 B

1// ORIGINAL. Read-only real NXA witness. Usage: gate.elf <banked-asset.nxa> 2// Container validation stays with nx_nxa; this gate admits the documented payloads. 3// Inactive integer identity is tested here. The renderer must retain its original 4// float32 position/normal buffers when moved==0; this gate cannot prove that seam. 5import "nx_syscalls.nx" 6import "nx_gate_verdict.nx" 7import "nx_nxa.nx" 8import "nx_morf_draw_core.nx" 9import "nx_nxa_morf_admit.nx" 10import "nx_nxa_morf_draw_admit.nx" 11import "nx_wasm_craft.nx" 12 13func mdag_equal(a: *i64,b: *i64,n: i64) -> i64 { 14 var i: i64 = 0 15 while i < n { if a[i] != b[i] { return 0 }; i = i+1 } 16 return 1 17} 18func mdag_text_equal(a: *u8,b: *u8) -> i64 { 19 var i: i64 = 0 20 while a[i] != (0 as u8) { if a[i] != b[i] { return 0 }; i = i+1 } 21 if b[i] != (0 as u8) { return 0 } 22 return 1 23} 24func mdag_run(path: *u8,ctr: *i64) -> i64 { 25 let lp: *i64 = sys_mmap(8) as *i64 26 if (lp as i64) <= 0 { return 0-1 } 27 let bytes: *u8 = sys_read_file(path,lp) 28 if (bytes as i64) <= 0 { return 0-1 } 29 let original: *u8 = sys_mmap(lp[0]) 30 if (original as i64) <= 0 { return 0-4 } 31 var byte_i: i64 = 0 32 while byte_i < lp[0] { original[byte_i] = bytes[byte_i]; byte_i = byte_i+1 } 33 let h: *i64 = bytes as *i64 34 let nv: i64 = nmi_scratch_bytes(bytes,lp[0]) 35 if nv < 1 { return NMI_E_SHAPE } 36 let member: *u8 = sys_mmap(nv) as *u8 37 let admitted: *NmiAsset = sys_mmap(__size_of(NmiAsset)) as *NmiAsset 38 let av: *MvcView = sys_mmap(__size_of(MvcView)) as *MvcView 39 if (member as i64) <= 0 { return 0-4 } 40 if (admitted as i64) <= 0 { return 0-4 } 41 if (av as i64) <= 0 { return 0-4 } 42 admitted.view = av 43 av.channels = 0-999 44 gv_check_eq("undersized membership scratch refuses real asset" as *u8,nmi_admit(bytes,lp[0],member,nv-1,admitted),NMI_E_SCRATCH,ctr) 45 gv_check_eq("refused ingress leaves output view unpublished" as *u8,av.channels,0-999,ctr) 46 let admission: i64 = nmi_admit(bytes,lp[0],member,nv,admitted) 47 gv_check_eq("canonical shared admission accepts real asset" as *u8,admission,0,ctr) 48 if admission < 0 { return admission } 49 gv_check_eq("membership may not overwrite immutable input" as *u8,nmi_admit(bytes,lp[0],bytes,nv,admitted),NMI_E_SCRATCH,ctr) 50 let tw: i64 = nxa_counted_section(bytes,lp[0],nxa_tag4("TRIS" as *u8),MVC_AXES) 51 if tw < 0 { return NMI_E_SHAPE } 52 let nf: i64 = av.faces; let nc: i64 = av.channels 53 let dw: i64 = av.delta_words; let cw: i64 = dw/nc 54 let words: i64 = av.bind_words 55 let bind: *i64 = av.bind 56 let tri: *i64 = ((bytes as i64)+(tw+1)*MVC_WORD) as *i64 57 let face: *i64 = av.face 58 let delta: *i64 = av.delta 59 let seen: *i64 = sys_mmap(nv*8) as *i64 60 let bn: *i64 = sys_mmap(words*8) as *i64 61 let pos: *i64 = sys_mmap(words*8) as *i64 62 let norm: *i64 = sys_mmap(words*8) as *i64 63 let again: *i64 = sys_mmap(words*8) as *i64 64 let norm2: *i64 = sys_mmap(words*8) as *i64 65 let expected: *i64 = sys_mmap(words*8) as *i64 66 let weights: *i64 = sys_mmap(nc*8) as *i64 67 let v: *MvcView = sys_mmap(__size_of(MvcView)) as *MvcView 68 let a: *MrdAsset = sys_mmap(__size_of(MrdAsset)) as *MrdAsset 69 if (seen as i64) <= 0 { return 0-4 }; if (bn as i64) <= 0 { return 0-4 } 70 if (pos as i64) <= 0 { return 0-4 }; if (norm as i64) <= 0 { return 0-4 } 71 if (again as i64) <= 0 { return 0-4 }; if (norm2 as i64) <= 0 { return 0-4 } 72 if (expected as i64) <= 0 { return 0-4 }; if (weights as i64) <= 0 { return 0-4 } 73 if (v as i64) <= 0 { return 0-4 }; if (a as i64) <= 0 { return 0-4 } 74 var i: i64 = 0 75 while i < nv { seen[i] = 0; i = i+1 } 76 i = 0 77 while i < nf { 78 let id: i64 = face[i] 79 if id < 0 { return 0-5 }; if id >= nv { return 0-5 } 80 if seen[id] != 0 { return 0-5 }; seen[id] = 1; i = i+1 81 } 82 // Degree proof admits the actual shared area-weighted owner before baseline. 83 i = 0 84 while i < nv { seen[i] = 0; i = i+1 } 85 var degree: i64 = 0; i = 0 86 while i < h[tw]*3 { 87 let id: i64 = tri[i] 88 if id < 0 { return 0-5 }; if id >= nv { return 0-5 } 89 seen[id] = seen[id]+1 90 if seen[id] > degree { degree = seen[id] }; i = i+1 91 } 92 if mrd_normal_envelope(bind,tri,h[tw],degree) < 0 { return MRD_E_NORMAL_RANGE } 93 if vn_smooth_area(bind,tri,nv,h[tw],bn) < 0 { return 0-6 } 94 let admitted_normals: *i64 = sys_mmap(words*MVC_WORD) as *i64 95 if (admitted_normals as i64) <= 0 { return 0-4 } 96 a.triangle_words = 0-999 97 gv_check_eq("wrong normal output length refuses" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words-1,a),NMD_E_NORMAL_WORDS,ctr) 98 gv_check_eq("refusal leaves draw unpublished" as *u8,a.triangle_words,0-999,ctr) 99 let draw_admission: i64 = nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a) 100 gv_check_eq("actual draw asset admitted" as *u8,draw_admission,0,ctr) 101 if draw_admission < 0 { return draw_admission } 102 gv_check("all admitted normals exactly equal direct shared-owner baseline" as *u8,mdag_equal(admitted_normals,bn,words),ctr) 103 gv_check_eq("counted TRIS word offset becomes correct byte pointer" as *u8,a.triangles as i64,(bytes as i64)+(tw+1)*MVC_WORD,ctr) 104 gv_check_eq("all declared triangle words exposed" as *u8,a.triangle_words,h[tw]*VN_TRI_I,ctr) 105 var selected: i64 = 0-1; i = 0 106 while i < dw { if delta[i] != 0 { if selected < 0 { selected = i/cw } }; i = i+1 } 107 if selected < 0 { return 0-7 } 108 i = 0 109 while i < nc { weights[i] = 0; i = i+1 } 110 weights[selected] = av.unit 111 i = 0 112 while i < words { expected[i] = bind[i]; i = i+1 } 113 var support: i64 = 0; i = 0 114 while i < nf { 115 var axis: i64 = 0; var changed: i64 = 0 116 while axis < 3 { 117 let d: i64 = delta[selected*cw+i*3+axis] 118 let at: i64 = face[i]*3+axis 119 if mvc_sum_ok(bind[at],d) == 0 { return 0-8 } 120 expected[at] = bind[at]+d 121 if d != 0 { changed = 1 }; axis = axis+1 122 } 123 support = support+changed; i = i+1 124 } 125 v.bind = bind; v.bind_words = words; v.face = face; v.face_words = nf 126 v.delta = delta; v.delta_words = dw; v.vertices = nv; v.faces = nf; v.channels = nc; v.unit = av.unit 127 let moved: i64 = mrd_prepare(a,weights,nc,pos,words,norm,words) 128 gv_check("actual channel has nonzero support" as *u8,support > 0,ctr) 129 gv_check_eq("actual support count is exact" as *u8,moved,support,ctr) 130 if moved < 0 { return moved } 131 gv_check("every VERT coordinate matches stored full-weight delta including non-FACE identity" as *u8,mdag_equal(pos,expected,words),ctr) 132 var normals_valid: i64 = 1; i = 0 133 while i < nv { 134 var axis: i64 = 0; var nonzero: i64 = 0 135 while axis < 3 { 136 let value: i64 = norm[i*3+axis] 137 if value < 0-VN_SCALE { normals_valid = 0 } 138 if value > VN_SCALE { normals_valid = 0 } 139 if value != 0 { nonzero = 1 }; axis = axis+1 140 } 141 if nonzero == 0 { normals_valid = 0 }; i = i+1 142 } 143 gv_check("every actual vertex has bounded nonzero geometric normal" as *u8,normals_valid,ctr) 144 gv_check_eq("repeat real draw succeeds" as *u8,mrd_prepare(a,weights,nc,again,words,norm2,words),moved,ctr) 145 gv_check("repeat geometry exact" as *u8,mdag_equal(pos,again,words),ctr) 146 gv_check("repeat normals exact" as *u8,mdag_equal(norm,norm2,words),ctr) 147 weights[selected] = 0 148 gv_check_eq("inactive entity returns zero" as *u8,mrd_prepare(a,weights,nc,again,words,norm2,words),0,ctr) 149 gv_check("inactive positions exact" as *u8,mdag_equal(bind,again,words),ctr) 150 gv_check("inactive supplied normals exact" as *u8,mdag_equal(bn,norm2,words),ctr) 151 gv_check("inactive entity did not overwrite active geometry" as *u8,mdag_equal(pos,expected,words),ctr) 152 // Compose real admitted data into the actual engine's owned arena. 153 let capacity: i64 = wc_morf_storage_bytes(a,admitted.tag_words) 154 if capacity < 0 { return capacity } 155 let base: i64 = sys_mmap(CRAFT_EXT_TOTAL+capacity) as i64 156 if base <= 0 { return 0-4 } 157 let mobs: *i64 = mobp(base) 158 en_init(mobs,MOB_CAP,MOB_NCOMP) 159 en_spawn(mobs); en_spawn(mobs) 160 gv_check_eq("real admitted asset binds engine-owned storage" as *u8,wc_morf_bind(base,capacity,a,admitted.tags,admitted.tag_words),0,ctr) 161 gv_check_eq("real asset tag identity survives ingress" as *u8,wc_morf_channel_tag(base,selected),admitted.tags[selected*NMI_CHANNEL_WORDS],ctr) 162 gv_check_eq("real asset weight unit accepted by engine" as *u8,wc_cast_morf_weight(base,0,selected,av.unit),0,ctr) 163 gv_check_eq("real engine draw moves actual channel support" as *u8,wc_cast_morf(base,0),support,ctr) 164 let draw: *WcmDraw = wc_morf_descriptor(base) 165 gv_check("engine geometry agrees with independent stored-delta oracle" as *u8,mdag_equal(draw.positions,expected,words),ctr) 166 gv_check("engine normals agree with admitted direct draw" as *u8,mdag_equal(draw.normals,norm,words),ctr) 167 gv_check_eq("second real entity stays on incumbent float path" as *u8,wc_cast_morf(base,1),0,ctr) 168 // Corrupt membership with VALID checksums: fail on actual duplicate identity, 169 // not merely on integrity. Restore every changed word before returning. 170 if nf > 1 { 171 let fe: i64 = nxa_section_entry(bytes,lp[0],nxa_tag4("FACE" as *u8)) 172 let old_id: i64 = face[0]; let old_fc: i64 = h[fe+3]; let old_toc: i64 = h[3] 173 face[0] = face[1] 174 h[fe+3] = nxa_check2(1,((bytes as i64)+h[fe+1]) as *i64,h[fe+2]) 175 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 176 gv_check_eq("checksummed duplicate FACE identity refused" as *u8,nmi_admit(bytes,lp[0],member,nv,admitted),NMI_R_FACE_DUPLICATE,ctr) 177 gv_check("duplicate FACE retains exact prior diagnostic" as *u8,mdag_text_equal(nmi_diagnostic(NMI_R_FACE_DUPLICATE),"MORF-REFUSE duplicate FACE vertex ID\n" as *u8),ctr) 178 face[0] = old_id; h[fe+3] = old_fc; h[3] = old_toc 179 gv_check_eq("restored real asset admits again" as *u8,nmi_admit(bytes,lp[0],member,nv,admitted),0,ctr) 180 } 181 let me: i64 = nxa_section_entry(bytes,lp[0],nxa_tag4("MORF" as *u8)) 182 let mp: *i64 = ((bytes as i64)+h[me+1]) as *i64 183 let old_unit: i64 = mp[3]; let old_mc: i64 = h[me+3]; let old_tc: i64 = h[3] 184 mp[3] = 0 185 h[me+3] = nxa_check2(1,mp,h[me+2]) 186 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 187 gv_check_eq("checksummed invalid unit retains precise reason" as *u8,nmi_admit(bytes,lp[0],member,nv,admitted),NMI_R_UNIT,ctr) 188 gv_check("unit retains exact prior diagnostic" as *u8,mdag_text_equal(nmi_diagnostic(NMI_R_UNIT),"MORF-REFUSE declared weight unit is not positive\n" as *u8),ctr) 189 mp[3] = old_unit; h[me+3] = old_mc; h[3] = old_tc 190 let fe2: i64 = nxa_section_entry(bytes,lp[0],nxa_tag4("FACE" as *u8)) 191 let old_tag: i64 = h[fe2]; let old_tc2: i64 = h[3] 192 h[fe2] = nxa_tag4("TEST" as *u8) 193 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 194 let missing: i64 = nmi_admit(bytes,lp[0],member,nv,admitted) 195 gv_check_eq("missing FACE retains precise reason" as *u8,missing,NMI_R_NO_FACE,ctr) 196 gv_check_eq("missing FACE retains missing-section class" as *u8,nmi_missing(missing),1,ctr) 197 gv_check("missing FACE retains exact prior diagnostic" as *u8,mdag_text_equal(nmi_diagnostic(missing),"MORF-REFUSE no FACE section -- run derive first\n" as *u8),ctr) 198 h[fe2] = old_tag; h[3] = old_tc2 199 gv_check_eq("normal output cannot alias immutable file" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,bytes as *i64,words,a),NMD_E_ALIAS,ctr) 200 gv_check_eq("normal output cannot alias membership scratch" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,member as *i64,words,a),NMD_E_ALIAS,ctr) 201 gv_check_eq("draw descriptor cannot alias admitted morph view" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,av as *MrdAsset),NMD_E_ALIAS,ctr) 202 let te: i64 = nxa_section_entry(bytes,lp[0],nxa_tag4("TRIS" as *u8)) 203 if te < 0 { return NMD_E_TRIANGLES } 204 let tp: *i64 = ((bytes as i64)+h[te+1]) as *i64 205 let tris_checksum: i64 = h[te+3]; let toc_checksum: i64 = h[3] 206 let triangle_count: i64 = tp[0] 207 gv_check("actual fixture has triangles for index mutation" as *u8,triangle_count > 0,ctr) 208 if triangle_count < 1 { return NMD_E_TRIANGLES } 209 tp[0] = triangle_count+1 210 h[te+3] = nxa_check2(1,tp,h[te+2]) 211 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 212 a.triangle_words = 0-999; admitted_normals[0] = 739 213 gv_check_eq("checksummed TRIS count mismatch refuses" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a),NMD_E_TRIANGLES,ctr) 214 gv_check_eq("bad topology leaves draw unpublished" as *u8,a.triangle_words,0-999,ctr) 215 gv_check_eq("bad topology leaves normal scratch untouched" as *u8,admitted_normals[0],739,ctr) 216 tp[0] = triangle_count; h[te+3] = tris_checksum; h[3] = toc_checksum 217 let first_index: i64 = tp[1] 218 tp[1] = nv 219 h[te+3] = nxa_check2(1,tp,h[te+2]) 220 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 221 gv_check_eq("checksummed out-of-range triangle index refuses" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a),NMD_E_TRIANGLES,ctr) 222 tp[1] = first_index; h[te+3] = tris_checksum; h[3] = toc_checksum 223 // VERT's counted xyz payload is also a checksum-valid counted triple array. 224 // Redirect TRIS to it: only full-section separation can reject this alias. 225 let ve: i64 = nxa_section_entry(bytes,lp[0],nxa_tag4("VERT" as *u8)) 226 let original_offset: i64 = h[te+1]; let original_words: i64 = h[te+2] 227 h[te+1] = h[ve+1]; h[te+2] = h[ve+2]; h[te+3] = h[ve+3] 228 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 229 gv_check_eq("checksum-valid TRIS/VERT section overlap refuses" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a),NMD_E_ALIAS,ctr) 230 h[te+1] = original_offset; h[te+2] = original_words; h[te+3] = tris_checksum; h[3] = toc_checksum 231 var other_entry: i64 = 0-1; var section: i64 = 0 232 while section < h[2] { 233 let e: i64 = 4+section*4; let tag: i64 = h[e] 234 if tag != nxa_tag4("VERT" as *u8) { if tag != nxa_tag4("FACE" as *u8) { if tag != nxa_tag4("MORF" as *u8) { if tag != nxa_tag4("TRIS" as *u8) { other_entry = e } } } } 235 section = section+1 236 } 237 gv_check("actual asset contains an independent duplicate-tag mutation target" as *u8,other_entry >= 0,ctr) 238 if other_entry >= 0 { 239 let previous_tag: i64 = h[other_entry] 240 let previous_offset: i64 = h[other_entry+1] 241 let previous_words: i64 = h[other_entry+2] 242 let previous_checksum: i64 = h[other_entry+3] 243 h[other_entry] = nxa_tag4("TRIS" as *u8) 244 h[other_entry+1] = h[te+1]; h[other_entry+2] = h[te+2]; h[other_entry+3] = h[te+3] 245 h[3] = nxa_check2(1,((bytes as i64)+32) as *i64,h[2]*4) 246 gv_check_eq("checksummed duplicate TRIS identity refuses" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a),NMD_E_TRIANGLES,ctr) 247 h[other_entry] = previous_tag; h[other_entry+1] = previous_offset 248 h[other_entry+2] = previous_words; h[other_entry+3] = previous_checksum; h[3] = toc_checksum 249 } 250 gv_check_eq("restored real draw asset admits again" as *u8,nmd_admit(bytes,lp[0],member,nv,admitted,admitted_normals,words,a),0,ctr) 251 gv_check("restored normals match every direct baseline word" as *u8,mdag_equal(admitted_normals,bn,words),ctr) 252 var immutable: i64 = 1; byte_i = 0 253 while byte_i < lp[0] { if bytes[byte_i] != original[byte_i] { immutable = 0 }; byte_i = byte_i+1 } 254 gv_check("borrowed real asset remains byte-identical after admission and restored mutations" as *u8,immutable,ctr) 255 return 0 256} 257func main(argc: i64,argv: *i64) -> i64 { 258 let ctr: *i64 = gv_ctr() 259 gv_head("shared canonical MORF ingress into actual engine storage" as *u8) 260 var rc: i64 = 0-1 261 if argc == 1 { rc = mdag_run("/tmp/nxmorfgate/d1.nxa" as *u8,ctr) } 262 if argc == 2 { rc = mdag_run(argv[1] as *u8,ctr) } 263 gv_check_eq("real asset admission and preparation succeeds" as *u8,rc,0,ctr) 264 return gv_verdict("NX-NXA-MORF-DRAW-INGRESS" as *u8,ctr,"real geometry witness; renderer float32 bypass and both GPU doors remain separate acceptance" as *u8) 265}