nx_shader_producer_compare_t58.nx source
↩ module page · 52 lines · 3309 B
1// Private audit: observed output equality does not establish source closure.
2import "nx_game_page_workspace_t48.nx"
3func sa_identity(path:*u8)->i64{
4 let size:*i64=sys_mmap(8) as *i64;let bytes:*u8=sys_read_file(path,size)
5 if (bytes as i64)<=0{return 3}
6 let digest:*u8=sys_mmap(GPA_SHA_HEX+1);gpa_sha(bytes,size[0],digest)
7 gpe_puts("producer path=");gpe_puts(path);gpe_puts(" bytes=");gpe_pn(size[0]);gpe_puts(" sha256=");gpe_puts(digest);gpe_puts("\n")
8 sys_free_file(bytes,size[0]);return 0
9}
10func sa_stage(buf:*u8,n:i64,begin:*u8,rc_key:*u8)->i64{
11 let span:*i64=sys_mmap(16) as *i64
12 if rk_world_span(buf,n,begin,rc_key,span)!=1{return 0}
13 let declared:i64=rk_int_after(buf,n,rc_key)
14 return declared>0&&declared==span[1]-span[0]
15}
16func sa_world_integrity(buf:*u8,n:i64)->i64{
17 if sa_stage(buf,n,"--- world_glsl GLSL ---\n","world_glsl_rc=")!=1{return 0}
18 if sa_stage(buf,n,"--- world_wgsl WGSL ---\n","world_wgsl_rc=")!=1{return 0}
19 if sa_stage(buf,n,"--- worldvs_glsl GLSL ---\n","worldvs_glsl_rc=")!=1{return 0}
20 if sa_stage(buf,n,"--- worldvs_wgsl WGSL ---\n","worldvs_wgsl_rc=")!=1{return 0}
21 return rk_find(buf,n,0,"worldvs_wgsl_named=NONE")>=0
22}
23func sa_command(reference:*u8,candidate:*u8,command:*u8)->i64{
24 let a:*u8=sys_mmap(RK_WGSL_CAP);let b:*u8=sys_mmap(RK_WGSL_CAP);let an:*i64=sys_mmap(8) as *i64;let bn:*i64=sys_mmap(8) as *i64
25 let ar:i64=gsb_once(reference,command,a,RK_WGSL_CAP,an,RK_WGSL_TMO_MS)
26 let br:i64=gsb_once(candidate,command,b,RK_WGSL_CAP,bn,RK_WGSL_TMO_MS)
27 gpe_puts("command=");gpe_puts(command);gpe_puts(" reference_rc=");gpe_pn(ar);gpe_puts(" candidate_rc=");gpe_pn(br)
28 gpe_puts(" reference_bytes=");gpe_pn(an[0]);gpe_puts(" candidate_bytes=");gpe_pn(bn[0])
29 if ar!=0||br!=0||an[0]<=0||bn[0]<=0{gpe_puts(" state=capture-refused\n");return 3}
30 if fsx_seq(command,"world")==1{
31 let ai:i64=sa_world_integrity(a,an[0]);let bi:i64=sa_world_integrity(b,bn[0])
32 gpe_puts(" reference_integrity=");gpe_pn(ai);gpe_puts(" candidate_integrity=");gpe_pn(bi)
33 if ai!=1||bi!=1{gpe_puts(" state=incomplete-output\n");return 4}
34}
35 let ah:*u8=sys_mmap(GPA_SHA_HEX+1);let bh:*u8=sys_mmap(GPA_SHA_HEX+1);gpa_sha(a,an[0],ah);gpa_sha(b,bn[0],bh)
36 var equal:i64=1;if an[0]!=bn[0]{equal=0}else{var i:i64=0;while i<an[0]{if a[i]!=b[i]{equal=0};i=i+1}}
37 gpe_puts(" reference_sha256=");gpe_puts(ah);gpe_puts(" candidate_sha256=");gpe_puts(bh);gpe_puts(" equal=");gpe_pn(equal);gpe_puts("\n")
38 sys_munmap(a,RK_WGSL_CAP);sys_munmap(b,RK_WGSL_CAP);return 0
39}
40func main()->i64{
41 let reference:*u8="/volume1/homes/elderwesto/nishihost/nx_wgsl.sov.elf.new"
42 let candidate:*u8="/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_wgsl_authored_t55.sov.elf"
43 if sa_identity(reference)!=0||sa_identity(candidate)!=0{return 3}
44 let tiny:*u8=sys_mmap(64);let tn:*i64=sys_mmap(8) as *i64
45 let refused:i64=gsb_once(candidate,"world",tiny,64,tn,RK_WGSL_TMO_MS)
46 if refused==0||tn[0]!=0{gpe_puts("FAIL incomplete capture was admitted\n");return 7}
47 gpe_puts("PASS bounded world capture refuses partial bytes\n")
48 if sa_command(reference,candidate,"world")!=0{return 4}
49 if sa_command(reference,candidate,"compute")!=0{return 5}
50 if sa_command(reference,candidate,"layout")!=0{return 6}
51 gpe_puts("AUDIT COMPLETE observed output comparison only; source and runtime closure remain separate\n");return 0
52}