code wiki / (root) / nx_organ_ship_loss_promotion_gate_t370.nx

nx_organ_ship_loss_promotion_gate_t370.nx source

↩ module page · 68 lines · 6819 B

1// nx_organ_ship_loss_promotion_gate_t370.nx -- Validates and tests loss reporting logic in the Nishi ecosystem by checking report formats and error conditions. 2import "nx_organ_ship_lib.nx" 3import "nx_send.nx" 4static passed:i64 5static failed:i64 6func 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} 7func fixture(out:*NxBufOwned,which:i64,longrow:i64)->i64{ 8 out.buf=0 as *u8;out.len=0;out.cap=0 9 osls_text(out,"=== NX-CONTENTDIFF ===\n") 10 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} 11 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 12} 13func bad_report(base:*NxBufOwned,needle:*u8,replacement:*u8,name:*u8)->i64{ 14 let at:i64=osls_find(base.buf,base.len,needle);if at<0{return check(0,name)} 15 var b:NxBufOwned;b.buf=0 as *u8;b.len=0;b.cap=0;osls_add(&b,base.buf,at);osls_text(&b,replacement) 16 let after:i64=at+osls_len(needle);osls_add(&b,base.buf+after,base.len-after) 17 let rc:i64=check(osls_report(b.buf,b.len)<0,name);nx_bo_release(&b);return rc 18} 19func loss_gate_main(argc:i64,argv:*i64)->i64{ 20 if argc!=5{return 2};let root:*u8=argv[1] as *u8;sys_mkdir(root,493) 21 let l:*u8="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";let c:*u8="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" 22 var one:NxBufOwned;var two:NxBufOwned;var big:NxBufOwned;fixture(&one,0,0);fixture(&two,1,0);fixture(&big,0,1) 23 check(osls_report(one.buf,one.len)==20,"complete twenty losses beyond old eight") 24 bad_report(&one,"total=20","total=20 total=19","conflicting duplicate total refused") 25 bad_report(&one,"shown=20","shown=20 shown=20","identical duplicate shown refused") 26 bad_report(&one,"omitted=0","omitted=0 omitted=1","duplicate omitted refused") 27 bad_report(&one,"lost_from_live=20","lost_from_live=20 lost_from_live=1","duplicate authoritative loss count refused") 28 bad_report(&one,"runs_scanned=20","runs_scanned=20 runs_scanned=21","duplicate scanned count refused") 29 bad_report(&one,"display_class=LOST","display_class=LOST display_class=LOST","duplicate display class refused") 30 bad_report(&one,"verdict=RED","verdict=RED verdict=GREEN","conflicting duplicate verdict refused") 31 bad_report(&one,"total=20","prefix_total=20","field substring is not semantic key") 32 bad_report(&one,"verdict=RED","xverdict=RED","verdict substring is not semantic key") 33 check(osls_report(one.buf,one.len-1)<0,"truncated final record refused") 34 check(osls_report(one.buf,0)<0,"empty report refused") 35 check(osls_report("LOST: forged\n",13)<0,"malformed report refused") 36 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) 37 var a:OslLossSet;var b:OslLossSet;var huge:OslLossSet 38 check(osls_build(l,c,one.buf,one.len,&a)==0,"complete artifact bound record") 39 check(osls_build(l,c,two.buf,two.len,&b)==0,"same count alternate record") 40 check(osls_approve(&a,a.digest,l,c)==1,"exact set approved") 41 check(osls_approve(&a,0 as *u8,l,c)==0,"count only no approval") 42 check(osls_approve(&b,a.digest,l,c)==0,"same count different loss refused") 43 check(osls_approve(&a,a.digest,c,c)==0,"changed live artifact refused") 44 check(osls_approve(&a,a.digest,l,l)==0,"changed candidate artifact refused") 45 check(osls_build(l,c,big.buf,big.len,&huge)==0,"complete record exceeds old capture ceiling") 46 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 47 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) 48 check(osls_retain(path,root,&huge)==0,"unsynced matching file retry verifies and fsyncs same descriptor") 49 check(osls_retain(path,root,&huge)==0,"exact evidence retry unchanged") 50 check(osls_retain(path,root,&a)!=0,"existing different evidence refused") 51 check(osls_retain("/missing-parent-t370/no.record",root,&a)!=0,"evidence write failure refuses") 52 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") 53 p("EVIDENCE bytes=");pn(huge.record.len);p(" sha256=");p(huge.digest);p("\n") 54 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) 55 var actualn:i64=0;let actual:*u8=sys_map_file(argv[2] as *u8,&actualn);var real:OslLossSet 56 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") 57 p("LOSS-GATE pass=");pn(passed);p(" fail=");pn(failed);p("\n");if failed>0{return 1};return 0 58} 59 60import "nx_itoa_lib.nx" 61func main(argc:i64,argv:*i64)->i64{ 62 var auto_run:i64=0;if argc==1{auto_run=1};if argc==3{if osls_prefix(argv[1] as *u8,osls_len(argv[1] as *u8),"firsttry")==1{auto_run=1}} 63 if auto_run==0{return loss_gate_main(argc,argv)} 64 let prefix:*u8="/tmp/ship-loss-auto-t370-";let extent:i64=osls_len(prefix)+NXI_BUF+1;let root:*u8=sys_mmap_try(extent);if (root as i64)<=0{return 2} 65 var i:i64=0;while prefix[i]!=(0 as u8){root[i]=prefix[i];i=i+1};let nn:i64=nxi_buf(root,i,sys_now_realtime_sec());root[nn]=0 as u8 66 let av:*i64=sys_mmap_try(6*__size_of(i64)) as *i64;if (av as i64)<=0{return 2};av[0]=argv[0];av[1]=root as i64;av[2]="/volume1/homes/elderwesto/nishihost/_jobs/job_1789864650.out" as *u8 as i64;av[3]="7e28ced1fa36bd63d358293c7e2890ee97e92d06939425042c4ea46b7999529a" as *u8 as i64;av[4]="4c570b50b807d6bbb96f05cba273139443b0eb9c93d78ae7b39853d352ecf012" as *u8 as i64;av[5]=0 67 let rc:i64=loss_gate_main(5,av);sys_munmap_direct(av as *u8,6*__size_of(i64));sys_munmap_direct(root,extent);return rc 68}