code wiki / (root) / nx_id_evidence_gate_t190b.nx

nx_id_evidence_gate_t190b.nx source

↩ module page · 40 lines · 2776 B

1import "nx_apistack_idempotency_candidate_t190.nx" 2import "nx_gate_verdict.nx" 3func ig_write(p:*u8,b:*u8,n:i64)->i64{ 4 let fd:i64=sys_openat_wr(p,MODE_0600);if fd<0{return fd} 5 let w:i64=sys_write(fd,b,n);let c:i64=sys_close(fd) 6 if w!=n||c!=0{return FIO_EIO};return 0 7} 8func ig_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} 9func main()->i64{ 10 let c:*i64=gv_ctr() 11 let root:*u8="knowledge/gates/id-evidence-fixture-t190b" 12 gv_check("fresh test directory",sys_mkdir(root,0x1c0)==0,c) 13 let p:*u8="knowledge/gates/id-evidence-fixture-t190b/ledger" 14 gv_check("explicit empty ledger initialized",ig_write(p,"",0)==0,c) 15 let out:*u8=sys_mmap(3017) 16 gv_check("empty valid ledger is unseen",id_lookup(p,"alpha",5,out,8)==ID_NOT_FOUND,c) 17 gv_check("record complete result",id_record(p,"alpha",5,"rc=0",4)==1,c) 18 gv_check("exact retained result",id_lookup(p,"alpha",5,out,8)==4&&ig_eq(out,"rc=0",4)==1,c) 19 gv_check("distinct key unseen",id_lookup(p,"beta",4,out,8)==ID_NOT_FOUND,c) 20 gv_check("duplicate does not replace first evidence",id_record(p,"alpha",5,"rc=9",4)==1&&id_lookup(p,"alpha",5,out,8)==4&&ig_eq(out,"rc=0",4)==1,c) 21 let long:*u8=sys_mmap(3000);var i:i64=0;while i<3000{long[i]=65 as u8;i=i+1} 22 gv_check("long retained row stored",id_record(p,"long",4,long,3000)==1,c) 23 i=0;while i<3017{out[i]=133 as u8;i=i+1} 24 let tiny:i64=id_lookup(p,"long",4,out,8) 25 var unchanged:i64=1;i=8;while i<3017{if out[i]!=133 as u8{unchanged=0};i=i+1} 26 gv_check("short caller buffer refuses entire result",tiny==ID_CAPACITY&&out[0]==0 as u8,c) 27 gv_check("all bytes beyond caller extent untouched",unchanged==1,c) 28 gv_check("exact fitting retained result",id_lookup(p,"long",4,out,3001)==3000&&ig_eq(out,long,3000)==1&&out[3000]==0 as u8,c) 29 gv_check("zero capacity never touches output",id_lookup(p,"long",4,out,0)==ID_CAPACITY,c) 30 let bad:*u8="knowledge/gates/id-evidence-fixture-t190b/truncated" 31 ig_write(bad,"key\tpartial",11) 32 gv_check("truncated ledger is not new",id_lookup(bad,"new",3,out,8)==ID_EVIDENCE_ERROR,c) 33 gv_check("append cannot heal lost evidence",id_record(bad,"new",3,"rc=0",4)==FIO_EBADMSG,c) 34 gv_check("unreadable ledger directory is not new",id_lookup(root,"new",3,out,8)==ID_EVIDENCE_ERROR,c) 35 gv_check("missing ledger needs initialization/reconciliation",id_lookup("knowledge/gates/id-evidence-fixture-t190b/missing","new",3,out,8)==ID_MISSING,c) 36 gv_check("separator injection refused",id_record(p,"bad\tkey",7,"rc=0",4)==FIO_EINVAL,c) 37 ig_write(bad,"ok\tfirst\nbroken\n",16) 38 gv_check("malformed later evidence prevents false replay",id_lookup(bad,"ok",2,out,8)==ID_EVIDENCE_ERROR,c) 39 return gv_verdict("idempotency-evidence",c,"Filesystem snapshot/result bounds only; no mutation transaction or exactly-once claim") 40}