nx_swarm_journal_evidence_gate_t67.nx source
↩ module page · 42 lines · 4461 B
1import "nx_swarm_job_evidence_t67.nx"
2import "nx_gate_verdict.nx"
3func se_path(stamp:i64,label:*u8)->*u8{let p:*u8=sys_mmap(256);var n:i64=fa_cat(p,0,"/tmp/swarm_evidence_" as *u8);n=fa_catn(p,n,stamp);n=fa_cat(p,n,"_" as *u8);n=fa_cat(p,n,label);n=fa_cat(p,n,".log" as *u8);p[n]=0 as u8;return p}
4func se_create(path:*u8,b:*u8,n:i64)->i64{let fd:i64=__syscall(SYS_OPENAT,AT_FDCWD,path as i64,SJ_OEXCL,SJ_MODE,0,0);if fd<0{return 0};let r:i64=fa_write_all(fd,b,n);let c:i64=sys_close(fd);if r==n&&c==0{return 1};return 0}
5func main(argc:i64,argv:*i64)->i64{
6 let ctr:*i64=gv_ctr();gv_head("SWARM-JOURNAL-EVIDENCE-PRIVATE" as *u8)
7 let stamp:i64=sys_now_us();let b:*u8=sys_mmap(SJ_JBUF+16);let done:*i64=sys_mmap(64) as *i64
8 let missing:*u8=se_path(stamp,"missing" as *u8);let empty:*u8=se_path(stamp,"empty" as *u8);let torn:*u8=se_path(stamp,"torn" as *u8);let valid:*u8=se_path(stamp,"valid" as *u8)
9 gv_check("isolated empty file created" as *u8,se_create(empty,"" as *u8,0)==1,ctr)
10 gv_check("missing read refuses" as *u8,sj_read_journal(missing,b)==SJ_EVIDENCE_IO,ctr)
11 gv_check("directory read error refuses" as *u8,sj_read_journal("/tmp" as *u8,b)==SJ_EVIDENCE_IO,ctr)
12 gv_check("empty read refuses" as *u8,sj_read_journal(empty,b)==SJ_EVIDENCE_FRAME,ctr)
13 let partial:*u8="JOB 1\nDONE 0 worker" as *u8
14 gv_check("isolated torn file created" as *u8,se_create(torn,partial,fa_len(partial))==1,ctr)
15 gv_check("torn read refuses" as *u8,sj_read_journal(torn,b)==SJ_EVIDENCE_FRAME,ctr)
16 done[0]=77;gv_check("torn derivation refuses without completion mutation" as *u8,sj_derive_done(partial,fa_len(partial),1,done)==SJ_EVIDENCE_FRAME&&done[0]==77,ctr)
17 let good:*u8="JOB 1\nDONE 0 worker\nDONE 0 duplicate\n" as *u8
18 gv_check("isolated valid file created" as *u8,se_create(valid,good,fa_len(good))==1,ctr)
19 let vn:i64=sj_read_journal(valid,b)
20 gv_check("whole valid read and duplicate deduplication" as *u8,vn==fa_len(good)&&sj_derive_done(b,vn,1,done)==1&&done[0]==1,ctr)
21 let malformed:*u8="JOB 1\nDONE 0garbage worker\n" as *u8
22 gv_check("integer prefix is not completion" as *u8,sj_derive_done(malformed,fa_len(malformed),1,done)==SJ_EVIDENCE_RECORD,ctr)
23 let nonode:*u8="JOB 1\nDONE 0 \n" as *u8
24 gv_check("missing node refuses" as *u8,sj_derive_done(nonode,fa_len(nonode),1,done)==SJ_EVIDENCE_RECORD,ctr)
25 let overflow:*u8="JOB 1\nDONE 18446744073709551616 worker\n" as *u8
26 gv_check("overflow cannot alias cid zero" as *u8,sj_derive_done(overflow,fa_len(overflow),1,done)==SJ_EVIDENCE_RECORD,ctr)
27 let exact:*u8=se_path(stamp,"exact" as *u8);let large:*u8=se_path(stamp,"large" as *u8)
28 var i:i64=0;while i<SJ_JBUF+1{b[i]=10 as u8;i=i+1}
29 gv_check("isolated exact and over-cap files created" as *u8,se_create(exact,b,SJ_JBUF)==1&&se_create(large,b,SJ_JBUF+1)==1,ctr)
30 gv_check("exact capacity is complete not truncated" as *u8,sj_read_journal(exact,b)==SJ_JBUF,ctr)
31 gv_check("one extra byte is refused not prefix success" as *u8,sj_read_journal(large,b)==SJ_EVIDENCE_TRUNCATED,ctr)
32 let job:*u8=se_path(stamp,"lease_identity" as *u8)
33 gv_check("missing journal cannot lease" as *u8,sj_lease(missing,"/tmp" as *u8,"missing-evidence" as *u8,1,60)==SJ_EVIDENCE_IO,ctr)
34 gv_check("torn journal cannot lease" as *u8,sj_lease(torn,"/tmp" as *u8,"torn-evidence" as *u8,1,60)==SJ_EVIDENCE_FRAME,ctr)
35 gv_check("missing journal cannot complete or create evidence" as *u8,sj_complete(missing,"/tmp" as *u8,"missing-evidence" as *u8,1,0,"worker" as *u8)==SJ_EVIDENCE_IO&&sj_read_journal(missing,b)==SJ_EVIDENCE_IO,ctr)
36 gv_check("torn journal cannot append completion" as *u8,sj_complete(torn,"/tmp" as *u8,"torn-evidence" as *u8,1,0,"worker" as *u8)==SJ_EVIDENCE_FRAME&&sb_read(torn,b,SJ_JBUF)==fa_len(partial),ctr)
37 gv_check("status refuses missing evidence" as *u8,sj_status(missing,"/tmp" as *u8,"missing-evidence" as *u8,1)==SJ_EVIDENCE_IO,ctr)
38 gv_check("valid status still completes" as *u8,sj_status(valid,"/tmp" as *u8,"valid-evidence" as *u8,1)==0,ctr)
39 gv_check("valid duplicate completion remains ignored" as *u8,sj_complete(valid,"/tmp" as *u8,"valid-evidence" as *u8,1,0,"worker" as *u8)==1,ctr)
40 gv_puts("fixture_prefix=/tmp/swarm_evidence_" as *u8);let tag:*u8=sys_mmap(64);let tn:i64=fa_catn(tag,0,stamp);sys_write(1,tag,tn);gv_puts(" retained; no production journal mutation\n" as *u8)
41 return gv_verdict("SWARM-JOURNAL-EVIDENCE" as *u8,ctr,"private file/read/framing proof; no concurrency, JOB authority or worker execution proof" as *u8)
42}