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