code wiki / (root) / nx_nxa_garment_bind_gate.nx

nx_nxa_garment_bind_gate.nx source

↩ module page · 78 lines · 3968 B

1import "nx_gate_verdict.nx" 2import "nx_nxa_garment_bind_lib.nx" 3 4const BGT_VA: i64=12 5const BGT_GA: i64=28 6const BGT_WORDS: i64=38 7const BGT_QUERY_COUNT: i64=3 8const BGT_SENTINEL: i64=165 9 10func bgt_seal(h: *i64) -> i64 { 11 h[7]=nxa_check2(1,((h as i64)+BGT_VA*8) as *i64,16) 12 h[11]=nxa_check2(1,((h as i64)+BGT_GA*8) as *i64,10) 13 h[3]=nxa_check2(1,((h as i64)+32) as *i64,8) 14 return 0 15} 16func bgt_fixture(c: *i64) -> i64 { 17 let h: *i64=sys_mmap(BGT_WORDS*8) as *i64 18 let b: *u8=h as *u8 19 let out: *i64=sys_mmap((BGT_QUERY_COUNT+1)*8) as *i64 20 let need: i64=BGT_QUERY_COUNT*8 21 h[0]=nxa_magic();h[1]=NXA_VER;h[2]=2 22 h[4]=nxa_tag4("VERT" as *u8);h[5]=BGT_VA*8;h[6]=16 23 h[8]=nxa_tag4("GVRT" as *u8);h[9]=BGT_GA*8;h[10]=10 24 h[BGT_VA]=5;h[BGT_GA]=BGT_QUERY_COUNT 25 h[13]=0-2;h[15]=10;h[18]=10;h[19]=2;h[21]=10;h[27]=20 26 h[31]=9;h[37]=20 27 bgt_seal(h);out[BGT_QUERY_COUNT]=BGT_SENTINEL 28 gv_check_eq("binding byte count",ngb_map(b,BGT_WORDS*8,out as *u8,need,2,10),need,c) 29 gv_check_eq("equal-distance tie chooses first eligible",out[0],0,c) 30 gv_check_eq("below-band query excludes nearer low vertex",out[1],0,c) 31 gv_check_eq("exact high vertex",out[2],4,c) 32 gv_check_eq("destination guard",out[BGT_QUERY_COUNT],BGT_SENTINEL,c) 33 gv_check_eq("all-vertex policy accepted",ngb_map(b,BGT_WORDS*8,out as *u8,need,1,10),need,c) 34 gv_check_eq("all-vertex policy selects closer odd vertex",out[0],1,c) 35 gv_check_eq("zero-band policy accepted",ngb_map(b,BGT_WORDS*8,out as *u8,need,1,0),need,c) 36 gv_check_eq("zero-band exact low candidate",out[1],3,c) 37 out[0]=BGT_SENTINEL 38 gv_check_eq("short output refused",ngb_map(b,BGT_WORDS*8,out as *u8,need-1,2,10),NGP_E_OUTPUT,c) 39 gv_check_eq("source overlap refused",ngb_map(b,BGT_WORDS*8,b,need,2,10),NGP_E_OVERLAP,c) 40 gv_check_eq("zero stride refused",ngb_map(b,BGT_WORDS*8,out as *u8,need,0,10),NGB_E_POLICY,c) 41 gv_check_eq("negative band refused",ngb_map(b,BGT_WORDS*8,out as *u8,need,2,0-1),NGB_E_POLICY,c) 42 gv_check_eq("missing eligible candidate refused",ngb_map(b,BGT_WORDS*8,out as *u8,need,2,21),NGB_E_CANDIDATE,c) 43 gv_check_eq("all refusals preserve destination",out[0],BGT_SENTINEL,c) 44 h[37]=NGB_COORD_LIMIT+1;bgt_seal(h) 45 gv_check_eq("late inexact coordinate refused",ngb_map(b,BGT_WORDS*8,out as *u8,need,2,10),NGB_E_COORD,c) 46 gv_check_eq("late coordinate refusal preserves destination",out[0],BGT_SENTINEL,c) 47 h[37]=20;bgt_seal(h);h[13]=0-3 48 gv_check_eq("corrupt geometry refused",ngb_map(b,BGT_WORDS*8,out as *u8,need,2,10),0-3,c) 49 sys_munmap(b,BGT_WORDS*8);sys_munmap(out as *u8,(BGT_QUERY_COUNT+1)*8) 50 return 0 51} 52func main(argc: i64,argv: *i64) -> i64 { 53 let c: *i64=gv_ctr() 54 bgt_fixture(c) 55 if argc!=2 { gv_puts("usage: nx_nxa_garment_bind_gate <real-resident.nxa>\n");return 2 } 56 let len: *i64=sys_mmap(16) as *i64 57 let b: *u8=sys_map_file(argv[1] as *u8,len) 58 let at: i64=ngp_section(b,len[0],"GVRT" as *u8) 59 if at<0 { gv_check_eq("real garment section valid",at,0,c);return gv_verdict("GARMENT-BIND",c,"real asset missing") } 60 let h: *i64=b as *i64 61 let count: i64=h[at] 62 let need: i64=count*NGB_WORD 63 let output: *u8=sys_mmap(need+NGB_WORD) 64 // These are the incumbent loader's policy inputs, used only as a compatibility fixture. 65 let rc: i64=ngb_map(b,len[0],output,need,2,88000) 66 gv_check_eq("real resident binding prepared",rc,need,c) 67 if rc==need { 68 gv_puts("BIND-MAP count=");gv_num(count) 69 gv_puts(" checksum=");gv_num(nxa_check2(1,output as *i64,count));gv_puts("\n") 70 gv_puts("BIND-INDICES ") 71 let indices: *i64=output as *i64 72 var i: i64=0 73 while i<count { if i>0 { gv_puts(",") };gv_num(indices[i]);i=i+1 } 74 gv_puts("\n") 75 } 76 sys_munmap(output,need+NGB_WORD);sys_munmap(b,len[0]);sys_munmap(len as *u8,16) 77 return gv_verdict("GARMENT-BIND",c,"native binding only; browser integration pending") 78}