code wiki / (root) / nx_id_legacy_reconcile_gate_t219.nx

nx_id_legacy_reconcile_gate_t219.nx source

↩ module page · 61 lines · 4746 B

1import "_hdl_build/nx_apistack_idempotency.nx" 2import "nx_gate_verdict.nx" 3func lg_len(p:*u8)->i64{var n:i64=0;while p[n]!=0 as u8{n=n+1};return n} 4func lg_eq(a:*u8,b:*u8,n:i64)->i64{var i:i64=0;while i<n{if a[i]!=b[i]{return 0};i=i+1};return 1} 5func lg_write(p:*u8,b:*u8,n:i64)->i64{ 6 let fd:i64=sys_openat_wr(p,MODE_0600);if fd<0{return fd} 7 let w:i64=sys_write(fd,b,n);let c:i64=sys_close(fd) 8 if w!=n||c!=0{return FIO_EIO};return 0 9} 10func main(argc:i64,argv:*i64)->i64{ 11 if argc!=2{return 2} 12 let c:*i64=gv_ctr() 13 let row:*NxIdLegacyRow=sys_mmap_try(__size_of(NxIdLegacyRow)) as *NxIdLegacyRow 14 if (row as i64)<=0{return 3} 15 gv_check("empty null snapshot accepted without dereference",id_legacy_row_next(0 as *u8,0,0,row)==0,c) 16 gv_check("nonempty null snapshot refused",id_legacy_row_next(0 as *u8,1,0,row)==FIO_EINVAL,c) 17 gv_check("negative extent refused",id_legacy_row_next("x",0-1,0,row)==FIO_EINVAL,c) 18 gv_check("past EOF refused",id_legacy_row_next("x",1,2,row)==FIO_EINVAL,c) 19 gv_check("negative offset refused",id_legacy_row_next("x",1,0-1,row)==FIO_EINVAL,c) 20 gv_check("null row refused",id_legacy_row_next("x",1,0,0 as *NxIdLegacyRow)==FIO_EINVAL,c) 21 let raw:*u8=sys_mmap_try(__size_of(NxIdLegacyRow)) 22 if (raw as i64)<=0{return 3} 23 raw[0]=75 as u8;raw[1]=9 as u8;raw[2]=82 as u8;raw[3]=10 as u8 24 gv_check("aliased output refused before source mutation",id_legacy_row_next(raw,4,0,raw as *NxIdLegacyRow)==FIO_EINVAL&&lg_eq(raw,"K\tR\n",4)==1,c) 25 let s:*u8="# retained\n\nalpha\trc=0\tpayload\norphan\nbeta\tok\n" 26 let n:i64=lg_len(s) 27 let copy:*u8=sys_mmap_try(n) 28 if (copy as i64)<=0{return 3} 29 var i:i64=0;while i<n{copy[i]=s[i];i=i+1} 30 gv_check("comment offsets",id_legacy_row_next(copy,n,0,row)==1&&row.flags==ID_ROW_COMMENT&&row.end==10&&row.next==11,c) 31 gv_check("blank row offsets",id_legacy_row_next(copy,n,row.next,row)==1&&row.flags==ID_ROW_EMPTY&&row.next==12,c) 32 gv_check("extra TAB remains ambiguous",id_legacy_row_next(copy,n,row.next,row)==1&&row.flags==ID_ROW_EXTRA_TAB&&row.tabs==2,c) 33 gv_check("original source row offset and extent retained",row.start==12&&row.end==30&&row.next==31,c) 34 gv_check("legacy result truncated exactly at second TAB",row.legacy_key_bytes==5&&row.legacy_result_start==18&&row.legacy_result_bytes==4&&row.second_tab==22,c) 35 gv_check("TAB content and interleaving indistinguishable from bytes",lg_eq(copy+row.start,"alpha\trc=0\tpayload",18)==1,c) 36 gv_check("no TAB legacy seen-empty result retained as ambiguity",id_legacy_row_next(copy,n,row.next,row)==1&&row.flags==ID_ROW_NO_TAB&&row.legacy_key_bytes==6&&row.legacy_result_bytes==0,c) 37 gv_check("normal row remains syntactically normal not semantic proof",id_legacy_row_next(copy,n,row.next,row)==1&&row.flags==0&&row.legacy_result_bytes==2,c) 38 gv_check("EOF explicit",id_legacy_row_next(copy,n,row.next,row)==0,c) 39 gv_check("all original bytes preserved including delimiters",lg_eq(copy,s,n)==1,c) 40 gv_check("unterminated row refused shape",id_legacy_row_next("k\tv",3,0,row)==1&&row.flags==ID_ROW_UNTERMINATED&&row.next==3,c) 41 gv_check("empty key classified",id_legacy_row_next("\tv\n",3,0,row)==1&&row.flags==ID_ROW_EMPTY_KEY,c) 42 gv_check("empty result valid shape",id_legacy_row_next("k\t\n",3,0,row)==1&&row.flags==0&&row.legacy_result_bytes==0,c) 43 gv_check("CR retained flagged",id_legacy_row_next("k\tv\r\n",5,0,row)==1&&row.flags==ID_ROW_CONTROL,c) 44 raw[0]=107 as u8;raw[1]=9 as u8;raw[2]=0 as u8;raw[3]=10 as u8 45 gv_check("embedded NUL retained flagged",id_legacy_row_next(raw,4,0,row)==1&&row.flags==ID_ROW_CONTROL,c) 46 let path:*u8=argv[1] as *u8 47 gv_check("representative fixture written to isolated path",lg_write(path,s,n)==0,c) 48 let out:*u8=sys_mmap_try(16) 49 if (out as i64)<=0{return 3} 50 gv_check("unknown request remains refused with ambiguous history",id_lookup(path,"new",3,out,16)==ID_EVIDENCE_ERROR,c) 51 gv_check("known normal row cannot bypass ambiguous history",id_lookup(path,"beta",4,out,16)==ID_EVIDENCE_ERROR,c) 52 let ev:*NxIdEvidence=sys_mmap_try(__size_of(NxIdEvidence)) as *NxIdEvidence 53 if (ev as i64)<=0{return 3} 54 let state:i64=id_read_evidence(path,"new",3,ev) 55 gv_check("read-only snapshot preserves exact original bytes",state==ID_EVIDENCE_ERROR&&ev.bytes==n&&lg_eq(ev.buffer,s,n)==1,c) 56 gv_check("scanner consumes retained malformed snapshot",id_legacy_row_next(ev.buffer,ev.bytes,12,row)==1&&row.flags==ID_ROW_EXTRA_TAB,c) 57 id_evidence_close(ev);sys_munmap_direct(ev as *u8,__size_of(NxIdEvidence)) 58 sys_munmap_direct(out,16);sys_munmap_direct(copy,n) 59 sys_munmap_direct(raw,__size_of(NxIdLegacyRow));sys_munmap_direct(row as *u8,__size_of(NxIdLegacyRow)) 60 return gv_verdict("legacy-ledger-row-inspection",c,"Syntax and legacy offsets only; no automatic reconciliation or exactly-once guarantee") 61}