nx_organ_ship_loss_gate_t370.nx source
↩ module page · 57 lines · 5639 B
1import "nx_organ_ship_loss_lib_candidate_t370.nx"
2import "nx_send.nx"
3static passed:i64
4static failed:i64
5func check(ok:i64,name:*u8)->i64{if ok==1{passed=passed+1;p("PASS ")}else{failed=failed+1;p("FAIL ")};p(name);p("\n");return 0}
6func fixture(out:*NxBufOwned,which:i64,longrow:i64)->i64{
7 out.buf=0 as *u8;out.len=0;out.cap=0
8 osls_text(out,"=== NX-CONTENTDIFF ===\n")
9 var i:i64=0;while i<20{osls_text(out," LOST: original capability ");if which==1{osls_text(out,"changed ")};if longrow==1{var k:i64=0;while k<1000{osls_text(out,"01234567890123456789");k=k+1}};osls_text(out,"\n");i=i+1}
10 osls_text(out,"runs_scanned=20 lost_from_live=20 lost_permil=1000\ndisplay_class=LOST shown=20 total=20 omitted=0\nNX-CONTENTDIFF verdict=RED (review required)\n");return 0
11}
12func bad_report(base:*NxBufOwned,needle:*u8,replacement:*u8,name:*u8)->i64{
13 let at:i64=osls_find(base.buf,base.len,needle);if at<0{return check(0,name)}
14 var b:NxBufOwned;b.buf=0 as *u8;b.len=0;b.cap=0;osls_add(&b,base.buf,at);osls_text(&b,replacement)
15 let after:i64=at+osls_len(needle);osls_add(&b,base.buf+after,base.len-after)
16 let rc:i64=check(osls_report(b.buf,b.len)<0,name);nx_bo_release(&b);return rc
17}
18func main(argc:i64,argv:*i64)->i64{
19 if argc!=5{return 2};let root:*u8=argv[1] as *u8;sys_mkdir(root,493)
20 let l:*u8="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";let c:*u8="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
21 var one:NxBufOwned;var two:NxBufOwned;var big:NxBufOwned;fixture(&one,0,0);fixture(&two,1,0);fixture(&big,0,1)
22 check(osls_report(one.buf,one.len)==20,"complete twenty losses beyond old eight")
23 bad_report(&one,"total=20","total=20 total=19","conflicting duplicate total refused")
24 bad_report(&one,"shown=20","shown=20 shown=20","identical duplicate shown refused")
25 bad_report(&one,"omitted=0","omitted=0 omitted=1","duplicate omitted refused")
26 bad_report(&one,"lost_from_live=20","lost_from_live=20 lost_from_live=1","duplicate authoritative loss count refused")
27 bad_report(&one,"runs_scanned=20","runs_scanned=20 runs_scanned=21","duplicate scanned count refused")
28 bad_report(&one,"display_class=LOST","display_class=LOST display_class=LOST","duplicate display class refused")
29 bad_report(&one,"verdict=RED","verdict=RED verdict=GREEN","conflicting duplicate verdict refused")
30 bad_report(&one,"total=20","prefix_total=20","field substring is not semantic key")
31 bad_report(&one,"verdict=RED","xverdict=RED","verdict substring is not semantic key")
32 check(osls_report(one.buf,one.len-1)<0,"truncated final record refused")
33 check(osls_report(one.buf,0)<0,"empty report refused")
34 check(osls_report("LOST: forged\n",13)<0,"malformed report refused")
35 var malformed:NxBufOwned;malformed.buf=0 as *u8;malformed.len=0;malformed.cap=0;let ending:i64=osls_len("NX-CONTENTDIFF verdict=RED (review required)\n");osls_add(&malformed,one.buf,one.len-ending);osls_text(&malformed,"NX-CONTENTDIFF verdict=REDgarbage\n");check(osls_report(malformed.buf,malformed.len)<0,"malformed verdict token refused");nx_bo_release(&malformed)
36 var a:OslLossSet;var b:OslLossSet;var huge:OslLossSet
37 check(osls_build(l,c,one.buf,one.len,&a)==0,"complete artifact bound record")
38 check(osls_build(l,c,two.buf,two.len,&b)==0,"same count alternate record")
39 check(osls_approve(&a,a.digest,l,c)==1,"exact set approved")
40 check(osls_approve(&a,0 as *u8,l,c)==0,"count only no approval")
41 check(osls_approve(&b,a.digest,l,c)==0,"same count different loss refused")
42 check(osls_approve(&a,a.digest,c,c)==0,"changed live artifact refused")
43 check(osls_approve(&a,a.digest,l,l)==0,"changed candidate artifact refused")
44 check(osls_build(l,c,big.buf,big.len,&huge)==0,"complete record exceeds old capture ceiling")
45 let n:i64=osls_len(root)+20;let path:*u8=sys_mmap_try(n);var pos:i64=0;while root[pos]!=(0 as u8){path[pos]=root[pos];pos=pos+1};let tail:*u8="/loss.record";var j:i64=0;while tail[j]!=(0 as u8){path[pos]=tail[j];pos=pos+1;j=j+1};path[pos]=0 as u8
46 let cached:i64=sys_openat_exclusive(path,420);if cached<0{return 2};var written:i64=0;while written<huge.record.len{let w:i64=sys_write(cached,huge.record.buf+written,huge.record.len-written);if w<=0{return 2};written=written+w};sys_close(cached)
47 check(osls_retain(path,root,&huge)==0,"unsynced matching file retry verifies and fsyncs same descriptor")
48 check(osls_retain(path,root,&huge)==0,"exact evidence retry unchanged")
49 check(osls_retain(path,root,&a)!=0,"existing different evidence refused")
50 check(osls_retain("/missing-parent-t370/no.record",root,&a)!=0,"evidence write failure refuses")
51 var readn:i64=0;let rb:*u8=sys_map_file(path,&readn);var same:i64=0;if (rb as i64)>0{if readn==huge.record.len{same=osls_eq(rb,huge.record.buf,readn)};sys_munmap_direct(rb,readn)};check(same,"complete exact readback beyond old ceiling")
52 p("EVIDENCE bytes=");pn(huge.record.len);p(" sha256=");p(huge.digest);p("\n")
53 osls_close(&a);osls_close(&b);osls_close(&huge);nx_bo_release(&one);nx_bo_release(&two);nx_bo_release(&big);sys_munmap_direct(path,n)
54 var actualn:i64=0;let actual:*u8=sys_map_file(argv[2] as *u8,&actualn);var real:OslLossSet
55 var realok:i64=0;if (actual as i64)>0{if osls_build(argv[3] as *u8,argv[4] as *u8,actual,actualn,&real)==0{realok=1;p("ACTUAL losses=");pn(real.count);p(" record_sha256=");p(real.digest);p("\n");check(osls_approve(&real,real.digest,argv[3] as *u8,argv[4] as *u8)==1,"actual native report exact approval");osls_close(&real)};sys_munmap_direct(actual,actualn)};check(realok,"actual deployed ruler full report accepted")
56 p("LOSS-GATE pass=");pn(passed);p(" fail=");pn(failed);p("\n");if failed>0{return 1};return 0
57}