code wiki / (root) / nx_craft_memory_pair_gate_20260910.nx

nx_craft_memory_pair_gate_20260910.nx source

↩ module page · 75 lines · 4257 B

1// ORIGINAL. Source-linked witness for existing packaging and memory admission. 2// Read-only artifacts. No emitter promotion, decoder fork or growth claim. 3import "nx_game_page_artifact_lib.nx" 4import "nx_estate_path.nx" 5import "nx_gate_verdict.nx" 6const CMP_MEMORY_SECTION: i64 = 5 7const CMP_MEMORY_MAX_FLAG: i64 = 1 8 9func cmp_report(plain_path: *u8,shared_path: *u8,plain_sha: *u8,shared_sha: *u8,ctr: *i64) -> i64 { 10 if fsx_denied(plain_path)==1 || fsx_denied(shared_path)==1 { return FSX_RC_DENIED } 11 let lengths: *i64 = sys_mmap(2*8) as *i64 12 if (lengths as i64)<=0 { return GPA_RC_INPUT } 13 let plain: *u8 = sys_read_file(plain_path,lengths) 14 let pn: i64 = lengths[0] 15 let shared: *u8 = sys_read_file(shared_path,((lengths as i64)+8) as *i64) 16 let sn: i64 = lengths[1] 17 if (plain as i64)<=0 || (shared as i64)<=0 { return GPA_RC_INPUT } 18 let ph: *u8 = sys_mmap(GPA_SHA_HEX+1) 19 let sh: *u8 = sys_mmap(GPA_SHA_HEX+1) 20 let memory: *GpaMemory = sys_mmap(__size_of(GpaMemory)) as *GpaMemory 21 let section: *GpaWasmCursor = sys_mmap(__size_of(GpaWasmCursor)) as *GpaWasmCursor 22 let pm: *GpaMemory = sys_mmap(__size_of(GpaMemory)) as *GpaMemory 23 if (ph as i64)<=0 || (sh as i64)<=0 { return GPA_RC_INPUT } 24 if (memory as i64)<=0 || (section as i64)<=0 || (pm as i64)<=0 { return GPA_RC_INPUT } 25 fsx_puts("MEMORY-PAIR plain_path="); fsx_puts(plain_path) 26 fsx_puts(" shared_path="); fsx_puts(shared_path) 27 fsx_puts(" plain_bytes="); fsx_putn(pn); fsx_puts(" shared_bytes="); fsx_putn(sn); fsx_puts("\n") 28 let paired: i64 = gpa_pair_report(plain,pn,shared,sn,plain_sha,shared_sha,ph,sh,memory) 29 gv_check_eq("actual pinned artifacts satisfy existing pair contract" as *u8,paired,0,ctr) 30 if paired!=0 { return paired } 31 let found: i64 = gpa_section(plain,pn,CMP_MEMORY_SECTION,section) 32 gv_check_eq("canonical reader locates unique plain memory section" as *u8,found,1,ctr) 33 if found!=1 { return GPA_RC_SHAPE } 34 pm.count=0 35 let decoded: i64 = gpa_memory_section(section.data,section.size,0,pm) 36 gv_check_eq("existing decoder admits plain memory contract" as *u8,decoded,1,ctr) 37 if decoded!=1 { return GPA_RC_SHAPE } 38 // Read only the declared presence flag with the SAME canonical u32 reader. 39 // gpa_memory_section maps absent maximum to minimum for pair comparison; 40 // that normalization is not a declared maximum or runtime growth evidence. 41 section.pos=0 42 let count: i64 = gpa_u32(section) 43 let flags: i64 = gpa_u32(section) 44 gv_check_eq("plain contract contains one memory" as *u8,count,1,ctr) 45 if count!=1 { return GPA_RC_SHAPE } 46 fsx_puts("MEMORY-LIMITS plain_minimum_pages="); fsx_putn(pm.minimum) 47 if (flags & CMP_MEMORY_MAX_FLAG)==0 { 48 fsx_puts(" plain_maximum_present=0 plain_maximum_pages=null") 49 } else { 50 fsx_puts(" plain_maximum_present=1 plain_maximum_pages="); fsx_putn(pm.maximum) 51 } 52 fsx_puts(" shared_minimum_pages="); fsx_putn(memory.minimum) 53 fsx_puts(" shared_maximum_present=1 shared_maximum_pages="); fsx_putn(memory.maximum) 54 fsx_puts(" units=wasm-pages runtime-grow=unverified publication=not-attempted\n") 55 sys_free_file(plain,pn); sys_free_file(shared,sn) 56 sys_munmap(lengths as *u8,2*8) 57 sys_munmap(ph,GPA_SHA_HEX+1); sys_munmap(sh,GPA_SHA_HEX+1) 58 sys_munmap(memory as *u8,__size_of(GpaMemory)) 59 sys_munmap(pm as *u8,__size_of(GpaMemory)) 60 sys_munmap(section as *u8,__size_of(GpaWasmCursor)) 61 return 0 62} 63func main(argc: i64,argv: *i64) -> i64 { 64 if argc!=5 { 65 fsx_puts("usage: nx_craft_memory_pair_gate <plain.wasm> <shared.wasm> <plain-sha256> <shared-sha256>\n") 66 return GPA_RC_USAGE 67 } 68 if ep_anchor()<0 { fsx_puts("MEMORY-PAIR REFUSED estate anchor unavailable\n"); return GPA_RC_INPUT } 69 let ctr: *i64 = gv_ctr() 70 gv_head("actual craft artifact pair and declared memory limits" as *u8) 71 let rc: i64 = cmp_report(argv[1] as *u8,argv[2] as *u8,argv[3] as *u8,argv[4] as *u8,ctr) 72 gv_check_eq("memory witness completed without source or artifact refusal" as *u8,rc,0,ctr) 73 return gv_verdict("NX-CRAFT-MEMORY-PAIR" as *u8,ctr,"existing canonical decoder; absent maximum stays absent; runtime growth remains unverified" as *u8) 74} 75