code wiki / (root) / nx_nxa_corner_checkpoint_gate_t280.nx

nx_nxa_corner_checkpoint_gate_t280.nx source

↩ module page · 26 lines · 2508 B

1import "nx_nxa_corner_checkpoint_candidate_t280.nx" 2import "nx_uv_disk_validation_candidate_t280.nx" 3import "nx_gate_verdict.nx" 4func main(argc:i64,argv:*i64)->i64{ 5 if argc!=4{return 2};let ctr:*i64=gv_ctr();let lens:*i64=sys_mmap_try(16) as *i64 6 let src:*u8=sys_read_file(argv[1] as *u8,lens);if src==(0 as *u8){return 3};let bytes:i64=lens[0] 7 let pkt:*u8=sys_read_file(argv[2] as *u8,lens);if pkt==(0 as *u8){return 3};let size:i64=lens[0];let p:*i64=pkt as *i64 8 let m:*i64=ncp_restore_topology(src,bytes,pkt,size);gv_check("actual checkpoint topology restored",m!=(0 as *i64),ctr);if m==(0 as *i64){return 4} 9 gv_check_eq("all source triangles retained",m[UV_H_NT],p[5],ctr);gv_check_eq("checkpoint chart count retained",uv_chart_count(m),p[9],ctr) 10 let q:*i64=uds_prepare(m);gv_check("restored full disk fan checks",q!=(0 as *i64),ctr);if q!=(0 as *i64){ncp_model_free(q)} 11 gv_check("truncated packet refused",ncp_restore_topology(src,bytes,pkt,size-1)==(0 as *i64),ctr) 12 let prior:u8=pkt[NCP_HASH_WORD*8];pkt[NCP_HASH_WORD*8]=(prior as i64^1) as u8 13 gv_check("wrong source hash refused",ncp_restore_topology(src,bytes,pkt,size)==(0 as *i64),ctr);pkt[NCP_HASH_WORD*8]=prior 14 let oldVertex:i64=p[NCP_HEADER+2];p[NCP_HEADER+2]=p[4] 15 gv_check("wrong source vertex refused",ncp_restore_topology(src,bytes,pkt,size)==(0 as *i64),ctr);p[NCP_HEADER+2]=oldVertex 16 let oldTri:i64=p[NCP_HEADER];p[NCP_HEADER]=oldTri+1 17 gv_check("wrong corner triangle identity refused",ncp_restore_topology(src,bytes,pkt,size)==(0 as *i64),ctr);p[NCP_HEADER]=oldTri 18 let count:i64=uv_seam_count(m);let outBytes:i64=(1+count*2)*8;let out:*i64=sys_mmap_try(outBytes) as *i64;if (out as i64)<=0{return 5} 19 out[0]=count;var i:i64=0;var written:i64=0 20 while i<m[UV_H_SCAP]{let o:i64=m[UV_O_STAB]+i*UV_SREC;if m[o+UV_SM_USED]!=0{out[1+written*2]=m[o+UV_SM_LO];out[2+written*2]=m[o+UV_SM_HI];written=written+1};i=i+1} 21 gv_check_eq("seam output count exact",written,count,ctr) 22 let fd:i64=sys_openat_exclusive(argv[3] as *u8,MODE_0600);if fd<0{return 6};written=0;while written<outBytes{let n:i64=sys_write(fd,((out as i64)+written) as *u8,outBytes-written);if n<=0{return 7};written=written+n};sys_close(fd) 23 gv_puts("CHECKPOINT recoveredSeams=");gv_num(count);gv_puts(" restoredCharts=");gv_num(uv_chart_count(m));gv_puts("\n") 24 sys_munmap_direct(out as *u8,outBytes);ncp_model_free(m);sys_munmap_direct(lens as *u8,16) 25 return gv_verdict("UV-CHECKPOINT-T280",ctr,"Source topology restoration only; failed UV remains unqualified") 26}