code wiki / (root) / nx_wflow_identity_canonical_gate_t344.nx

nx_wflow_identity_canonical_gate_t344.nx source

↩ module page · 184 lines · 20791 B

1// Native integration qualification of additive workflow result commands. 2import "nx_wflow_result.nx" 3import "nx_tool_run.nx" 4static wrt_pass:i64 5static wrt_fail:i64 6static wrt_timeout:i64 7static wrt_elf:*u8 8func wrt_check(ok:i64,label:*u8)->i64{p("RESULT-GATE ");p(label);if ok==1{p(" PASS\n");wrt_pass=wrt_pass+1}else{p(" FAIL\n");wrt_fail=wrt_fail+1};return ok} 9func wrt_path(base:*u8,leaf:*u8)->*u8{let b:*u8=sys_mmap(slen(base)+slen(leaf)+2);var at:i64=wf_cat(b,0,base);b[at]=47;wf_cat(b,at+1,leaf);return b} 10func wrt_file(path:*u8,body:*u8)->i64{let fd:i64=sys_openat_exclusive(path,MODE_0600);if fd<0{return 0};let rc:i64=wfr_write_all(fd,body,slen(body));let sync:i64=sys_fsync(fd);sys_close(fd);return rc==0 && sync==0} 11func wrt_capture(args:*i64,rcp:*i64)->*WfOwnedText{ 12 let owned:*NxBufOwned=sys_mmap(__size_of(NxBufOwned)) as *NxBufOwned 13 let ev:*NxRunEvidence=sys_mmap(__size_of(NxRunEvidence)) as *NxRunEvidence 14 rcp[0]=tr_run_capture_owned_result(wrt_elf,args,owned,wrt_timeout,0,0 as *u8,ev) 15 let out:*WfOwnedText=wf_text_slice(owned.buf,0,owned.len);nx_bo_release(owned) 16 if ev.reaped!=1 || ev.capture_error!=0 || ev.signal!=0{rcp[0]=0-999} 17 return out 18} 19func wrt_result(ledger:*u8,log:*u8,filter:*u8,expected:i64,needle:*u8,label:*u8)->i64{ 20 let args:*i64=sys_mmap(__size_of(i64)*6) as *i64 21 args[0]=wrt_elf as i64;args[1]="result" as *u8 as i64;args[2]=ledger as i64;args[3]=log as i64;args[4]=filter as i64 22 let rc:*i64=sys_mmap(__size_of(i64)) as *i64;let out:*WfOwnedText=wrt_capture(args,rc) 23 if out==(0 as *WfOwnedText){return wrt_check(0,label)} 24 p("RESPONSE bytes=");pn(out.len);p(" ");p(out.data) 25 return wrt_check(rc[0]==expected && wf_has(out.data,needle)==1,label) 26} 27func wrt_fire(flows:*u8,steps:*u8,ledger:*u8,cat:*u8,event:*u8,log:*u8,expected:i64,needle:*u8,label:*u8)->i64{ 28 let args:*i64=sys_mmap(__size_of(i64)*9) as *i64 29 args[0]=wrt_elf as i64;args[1]="fire-result" as *u8 as i64;args[2]=flows as i64;args[3]=steps as i64;args[4]=ledger as i64;args[5]=cat as i64;args[6]=event as i64;args[7]=log as i64 30 let rc:*i64=sys_mmap(__size_of(i64)) as *i64;let out:*WfOwnedText=wrt_capture(args,rc) 31 if out==(0 as *WfOwnedText){return wrt_check(0,label)} 32 p("RESPONSE bytes=");pn(out.len);p(" ");p(out.data) 33 return wrt_check(rc[0]==expected && wf_has(out.data,needle)==1,label) 34} 35func wrt_identity_main(argc:i64,argv:*i64)->i64{ 36 if argc==2{if seq(argv[1] as *u8,"--exit7-no-output")==1{return 7}} 37 if argc!=4{p("gate needs exclusive scratch, candidate ELF and capture timeout ms\n");return 2} 38 let base:*u8=argv[1] as *u8;wrt_elf=argv[2] as *u8;wrt_timeout=wf_atoi(argv[3] as *u8) 39 if wrt_timeout<=0{return 2};if sys_mkdir(base,MODE_0755)!=0{return 2} 40 let log:*u8=wrt_path(base,"full.log");if wrt_file(log,"fixture full evidence; not publication\n")!=1{return 2} 41 let failed:*u8=wrt_path(base,"failed.ledger") 42 let failedtext:*u8="WFRUN rid=x.f flow=f step=0 status=START att=0\nWFRUN rid=x.f flow=f step=1 status=ATT att=1\nWFRUN rid=x.f flow=f step=1 status=FAILSTEP att=1\nWFRUN rid=x.f flow=f step=0 status=FAILED att=0\n" 43 if wrt_file(failed,failedtext)!=1{return 2} 44 wrt_result(failed,log,"x.f",1,"\"state\":\"FAILED\"","failed-not-started-success") 45 let parked:*u8=wrt_path(base,"parked.ledger") 46 if wrt_file(parked,"WFRUN rid=x.f flow=f step=0 status=START att=0\nWFRUN rid=x.f flow=f step=1 status=WAIT att=0\n")!=1{return 2} 47 wrt_result(parked,log,"x.f",0,"\"state\":\"waiting-decision\"","parked-is-waiting") 48 let uncertain:*u8=wrt_path(base,"uncertain.ledger") 49 if wrt_file(uncertain,"WFRUN rid=x.f flow=f step=0 status=START att=0\nWFRUN rid=x.f flow=f step=1 status=ATT att=1\n")!=1{return 2} 50 wrt_result(uncertain,log,"x.f",1,"\"state\":\"UNCERTAIN\"","uncertain-att-no-ok") 51 let truncated:*u8=wrt_path(base,"truncated.ledger") 52 if wrt_file(truncated,"WFRUN rid=x.f flow=f step=0 status=START att=0\nWFRUN rid=x.f flow=f step=0 status=DONE")!=1{return 2} 53 wrt_result(truncated,log,"x.f",2,"\"journal_state\":\"truncated-record\"","truncated-journal-not-done") 54 wrt_result(wrt_path(base,"missing.ledger"),log,"x.f",2,"\"journal_state\":\"missing\"","missing-journal-distinct") 55 wrt_result(failed,wrt_path(base,"missing.log"),"x.f",2,"\"state\":\"missing\"","missing-log-distinct") 56 let capped:*u8=wrt_path(base,"capped.log") 57 if wrt_file(capped,"diagnostics\n[NX-JOB CAPTURE-TRUNCATED cap=100]\n")!=1{return 2} 58 wrt_result(failed,capped,"x.f",2,"\"evidence_truncation_marker\":1","truncated-log-not-complete") 59 let malformed:*u8=wrt_path(base,"malformed.ledger") 60 if wrt_file(malformed,"WFRUN rid=x.f flow=f step=0 status=START att=0\nWFRUN rid=x.f flow=f step=0 status=DONE att=0\nWFRUN rid=x.f flow=f step=0 status=FAILED att=0\n")!=1{return 2} 61 wrt_result(malformed,log,"x.f",2,"\"journal_state\":\"malformed-record\"","conflicting-terminal-not-done") 62 let flows:*u8=wrt_path(base,"test.flows");let steps:*u8=wrt_path(base,"test.steps");let ledger:*u8=wrt_path(base,"native.ledger");let cat:*u8=wrt_path(base,"catalog") 63 if wrt_file(flows,"@version 1\nf|go|-\np|park|-\nb|bad|-\n")!=1{return 2} 64 if wrt_file(steps,"f|1|set-var|-|delivery_state=test-only-no-publication|1\np|1|approve|reviewer|test-decision|1\nb|1|exec-organ|failing|unknown|1\n")!=1{return 2} 65 let ct:*u8=sys_mmap(slen(wrt_elf)+slen("failing\t\tGREEN\n")+1);var co:i64=wf_cat(ct,0,"failing\t");co=wf_cat(ct,co,wrt_elf);wf_cat(ct,co,"\tGREEN\n") 66 if wrt_file(cat,ct)!=1{return 2} 67 let successlog:*u8=wrt_path(base,"success.log") 68 wrt_fire(flows,steps,ledger,cat,"go~id=first",successlog,0,"\"state\":\"DONE\"","native-fire-result-done") 69 wrt_fire(wrt_path(base,"missing.flows"),steps,ledger,cat,"go~id=first",wrt_path(base,"setup-failed.log"),2,"\"state\":\"needs-intervention\"","command-failure-not-hidden-by-prior-done") 70 let before:*WfrFile=wfr_read(ledger) 71 wrt_fire(flows,steps,ledger,cat,"go~id=second",successlog,2,"\"effects\":\"none\"","existing-evidence-refuses-before-effects") 72 let after:*WfrFile=wfr_read(ledger);wrt_check(seq(before.hash,after.hash)==1,"refusal-ledger-unchanged") 73 74 75 // New identity accepts complete IDs with colliding old prefixes. 76 let longA:*u8=sys_mmap(4104);let longB:*u8=sys_mmap(4104);var la:i64=wf_cat(longA,0,"go~id=");var lb:i64=wf_cat(longB,0,"go~id=");var ix:i64=0 77 while ix<4096{longA[la+ix]=97;longB[lb+ix]=97;ix=ix+1};longA[la+4095]=88;longB[lb+4095]=89 78 let longLedger:*u8=wrt_path(base,"long.ledger") 79 let first:i64=wf_fire_files(flows,steps,longLedger,cat,longA);let second:i64=wf_fire_files(flows,steps,longLedger,cat,longB) 80 wrt_check(first==1&&second==1,"complete-long-colliding-prefix-identities-distinct") 81 let longBefore:*WfrFile=wfr_read(longLedger);let repeated:i64=wf_fire_files(flows,steps,longLedger,cat,longA);let longAfter:*WfrFile=wfr_read(longLedger) 82 wrt_check(repeated==(0-100)&&seq(longBefore.hash,longAfter.hash)==1,"long-exact-dedup-no-rewrite") 83 let longEvent:*WfOwnedText=wf_id_event(longA);let longRid:*WfOwnedText=wf_id_hex(longEvent.data,"f") 84 wrt_check(longRid.len==4+(longEvent.len+1)*2&&wf_id_binding(longAfter.text.data,longAfter.text.len,longRid.data,longEvent.data,"f",2)==1,"lossless-versioned-identity-roundtrip") 85 let html:*u8=wrt_path(base,"long.html");let board:i64=wf_obs_board(longLedger);let rendered:i64=wf_obs_html(longLedger,html);let page:*WfrFile=wfr_read(html) 86 wrt_check(board==2&&rendered==2&&page.status==1&&wf_has(page.text.data,longRid.data)==1,"board-and-html-complete-long-identities") 87 p("IDENTITY-OVERHEAD event_bytes=");pn(longEvent.len);p(" rid_bytes=");pn(longRid.len);p(" journal_bytes=");pn(longAfter.text.len);p(" html_bytes=");pn(page.text.len);p("\n") 88 let prefix:*u8=sys_mmap(128);ix=0;while ix<127{prefix[ix]=97;ix=ix+1};let oldRid:*WfOwnedText=wf_id_join(prefix,".","f") 89 let oldLines:*u8=sys_mmap(16384);var ol:i64=wf_cat(oldLines,0,"WFRUN rid=");ol=wf_cat(oldLines,ol,oldRid.data);ol=wf_cat(oldLines,ol," flow=f step=0 status=START att=0\nWFVAR rid=");ol=wf_cat(oldLines,ol,oldRid.data);ol=wf_cat(oldLines,ol," k=id v=");ol=wf_cat(oldLines,ol,longEvent.data);ol=wf_cat(oldLines,ol,"\nWFRUN rid=");ol=wf_cat(oldLines,ol,oldRid.data);wf_cat(oldLines,ol," flow=f step=0 status=DONE att=0\n") 90 let historical:*u8=wrt_path(base,"historical.ledger");if wrt_file(historical,oldLines)!=1{return 2};let histBefore:*WfrFile=wfr_read(historical) 91 let historicalSame:i64=wf_fire_files(flows,steps,historical,cat,longA);let historicalConflict:i64=wf_fire_files(flows,steps,historical,cat,longB);let histAfter:*WfrFile=wfr_read(historical) 92 wrt_check(historicalSame==(0-100)&&historicalConflict==WF_EVIDENCE_ERROR&&seq(histBefore.hash,histAfter.hash)==1,"legacy-prefix-binding-preserved-conflict-refused-without-rewrite") 93 let dottedFlows:*u8=wrt_path(base,"dotted.flows");let dottedSteps:*u8=wrt_path(base,"dotted.steps");let dottedLedger:*u8=wrt_path(base,"dotted.ledger") 94 if wrt_file(dottedFlows,"f|one|-\nb.f|two|-\n")!=1{return 2};if wrt_file(dottedSteps,"f|1|set-var|-|x=1|1\nb.f|1|set-var|-|x=2|1\n")!=1{return 2} 95 wrt_check(wf_fire_files(dottedFlows,dottedSteps,dottedLedger,cat,"one~id=a.b")==1&&wf_fire_files(dottedFlows,dottedSteps,dottedLedger,cat,"two~id=a")==1,"dotted-event-flow-pairs-do-not-alias") 96 let missingBinding:*u8=wrt_path(base,"missing-binding.ledger");if wrt_file(missingBinding,"WFRUN rid=missing.f flow=f step=0 status=START att=0\n")!=1{return 2};let mbBefore:*WfrFile=wfr_read(missingBinding) 97 let mbFire:i64=wf_fire_files(flows,steps,missingBinding,cat,"go~id=missing");let mbResume:i64=wf_resume_files(flows,steps,missingBinding,cat);let mbAfter:*WfrFile=wfr_read(missingBinding) 98 wrt_check(mbFire==WF_EVIDENCE_ERROR&&mbResume==WF_EVIDENCE_ERROR&&seq(mbBefore.hash,mbAfter.hash)==1,"missing-historical-binding-no-dispatch") 99 let collisionRid:*WfOwnedText=wf_id_hex("reserved","f");let collisionText:*u8=sys_mmap(collisionRid.len+slen("WFRUN rid= flow=f step=0 status=START att=0\n")+1);var ci:i64=wf_cat(collisionText,0,"WFRUN rid=");ci=wf_cat(collisionText,ci,collisionRid.data);wf_cat(collisionText,ci," flow=f step=0 status=START att=0\n") 100 let collision:*u8=wrt_path(base,"namespace.ledger");if wrt_file(collision,collisionText)!=1{return 2};let colBefore:*WfrFile=wfr_read(collision);let colFire:i64=wf_fire_files(flows,steps,collision,cat,"go~id=reserved");let colAfter:*WfrFile=wfr_read(collision) 101 wrt_check(colFire==WF_EVIDENCE_ERROR&&seq(colBefore.hash,colAfter.hash)==1,"unversioned-namespace-collision-refused") 102 let incomplete:*u8=wrt_path(base,"incomplete-v2.ledger");if wf_emit_start2(incomplete,collisionRid.data,"f")!=0{return 2};let incBefore:*WfrFile=wfr_read(incomplete);let incResume:i64=wf_resume_files(flows,steps,incomplete,cat);let incAfter:*WfrFile=wfr_read(incomplete) 103 wrt_check(incResume==WF_EVIDENCE_ERROR&&seq(incBefore.hash,incAfter.hash)==1,"atomic-versioned-start-incomplete-binding-remains-uncertain") 104 wrt_fire(flows,steps,ledger,cat,"go~id=first~id=other",wrt_path(base,"duplicate-id.log"),2,"invalid-or-aliased-event-identity","duplicate-event-id-refused") 105 wrt_fire(flows,steps,ledger,cat,"go~id=two words",wrt_path(base,"space-id.log"),2,"invalid-or-aliased-event-identity","token-splitting-id-refused") 106 wrt_fire(flows,steps,ledger,cat,"go~id=",wrt_path(base,"empty-id.log"),2,"invalid-or-aliased-event-identity","empty-event-id-refused") 107 wrt_fire(flows,steps,ledger,cat,"go~id=first.child",wrt_path(base,"prefix-child.log"),0,"\"selected_runs\":1","distinct-dotted-event") 108 wrt_fire(flows,steps,ledger,cat,"go~id=first",wrt_path(base,"prefix-parent.log"),0,"\"selected_runs\":1","summary-does-not-include-prefix-sibling") 109 wrt_check(wfr_summary(ledger,successlog,"*",0,1,7)==2,"command-exit7-never-masked-by-success-envelope") 110 111 wrt_fire(flows,steps,ledger,cat,"bad~id=failed",wrt_path(base,"failed.log"),1,"\"state\":\"FAILED\"","native-connector-failure-not-success") 112 wrt_fire(flows,steps,ledger,cat,"park~id=waiting",wrt_path(base,"waiting.log"),0,"\"state\":\"PARKED\"","native-approval-parked") 113 let args:*i64=sys_mmap(__size_of(i64)*8) as *i64 114 args[0]=wrt_elf as i64;args[1]="resume-result" as *u8 as i64;args[2]=flows as i64;args[3]=steps as i64;args[4]=ledger as i64;args[5]=cat as i64;args[6]=wrt_path(base,"resume.log") as i64 115 let rc:*i64=sys_mmap(__size_of(i64)) as *i64;let resumed:*WfOwnedText=wrt_capture(args,rc) 116 p("RESPONSE bytes=");pn(resumed.len);p(" ");p(resumed.data) 117 wrt_check(rc[0]==0 && wf_has(resumed.data,"\"selected_runs\":1")==1 && wf_has(resumed.data,"\"state\":\"PARKED\"")==1,"resume-selects-eligible-only") 118 119 120 if wf_emit_var(incomplete,collisionRid.data,"id","reserved")!=0{return 2};let partialBefore:*WfrFile=wfr_read(incomplete);let partialResume:i64=wf_resume_files(flows,steps,incomplete,cat);let partialAfter:*WfrFile=wfr_read(incomplete) 121 wrt_check(partialResume==WF_EVIDENCE_ERROR&&seq(partialBefore.hash,partialAfter.hash)==1,"initial-id-without-bound-marker-never-executes") 122 let largeLedger:*u8=wrt_path(base,"large.ledger");let largeSize:i64=WF_LEDCAP+4096;let large:*u8=sys_mmap(largeSize+1);var lp:i64=wf_cat(large,0,"WFVAR rid=fixture.f k=retained v=");while lp<largeSize-1{large[lp]=122;lp=lp+1};large[lp]=10 123 if wrt_file(largeLedger,large)!=1{return 2};let oldSize:*i64=sys_mmap(__size_of(i64)) as *i64;let oldBuf:*u8=wf_readall(largeLedger,oldSize) 124 wrt_check(oldBuf==(0 as *u8),"legacy-reader-contract-retains-loud-extent-refusal") 125 let newSize:*i64=sys_mmap(__size_of(i64)) as *i64;let snapshot:*u8=wf_read_snapshot(largeLedger,newSize) 126 wrt_check(snapshot!=(0 as *u8)&&newSize[0]==largeSize&&wf_text_match(snapshot,0,newSize[0],large,largeSize)==1,"dynamic-snapshot-over-old-journal-ceiling") 127 if snapshot!=(0 as *u8){sys_munmap_direct(snapshot,newSize[0]+1)} 128 let largeFire:i64=wf_fire_files(flows,steps,largeLedger,cat,"go~id=after-large-history");let largeAfter:*WfrFile=wfr_read(largeLedger) 129 wrt_check(largeFire==1&&largeAfter.status==1&&largeAfter.text.len>largeSize&&wf_text_match(largeAfter.text.data,0,largeAfter.text.len,large,largeSize)==1,"fire-and-owned-substitution-preserve-over-cap-history") 130 131 // A long flow name exercises all writer, decision, replay and version paths. 132 let longFlow:*u8=sys_mmap(1025);var fi:i64=0;while fi<1024{longFlow[fi]=113;fi=fi+1} 133 let flowFile:*u8=wrt_path(base,"long-flow.flows");let flowV2:*u8=wrt_path(base,"long-flow-v2.flows");let stepFile:*u8=wrt_path(base,"long-flow.steps");let flowLedger:*u8=wrt_path(base,"long-flow.ledger") 134 let header:*WfOwnedText=wf_id_join("@version 1\n",longFlow,"|go|-\n");let header2:*WfOwnedText=wf_id_join("@version 2\n",longFlow,"|go|-\n");let stepRow:*WfOwnedText=wf_id_join(longFlow,"|1|approve|reviewer|fixture-decision|1\n","") 135 if wrt_file(flowFile,header.data)!=1||wrt_file(flowV2,header2.data)!=1||wrt_file(stepFile,stepRow.data)!=1{return 2} 136 let longPark:i64=wf_fire_files(flowFile,stepFile,flowLedger,cat,longA);let flowRid:*WfOwnedText=wf_id_hex(longEvent.data,longFlow) 137 let flowCx:*i64=sys_mmap(__size_of(i64)*5) as *i64;flowCx[2]=flowLedger as i64 138 let decision:i64=wf_decide(flowCx,flowRid.data,1,"APPROVED","fixture-reviewer");let replay:i64=wf_resume_files(flowV2,stepFile,flowLedger,cat);let flowOut:*WfrFile=wfr_read(flowLedger) 139 let token:*WfOwnedText=wf_id_tok(flowRid.data) 140 wrt_check(longPark==1&&decision==0&&replay==1&&wf_lines_with2(flowOut.text.data,flowOut.text.len,token.data,"status=DONE")==1&&wf_lines_with2(flowOut.text.data,flowOut.text.len,token.data,"WFVERDRIFT")==1,"long-flow-park-decision-version-drift-resume") 141 let sumArgs:*i64=sys_mmap(__size_of(i64)*6) as *i64;sumArgs[0]=wrt_elf as i64;sumArgs[1]="result" as *u8 as i64;sumArgs[2]=flowLedger as i64;sumArgs[3]=log as i64;sumArgs[4]=flowRid.data as i64 142 let sumRc:*i64=sys_mmap(__size_of(i64)) as *i64;let fullSummary:*WfOwnedText=wrt_capture(sumArgs,sumRc) 143 wrt_check(sumRc[0]==0&&wf_has(fullSummary.data,longEvent.data)==1&&wf_has(fullSummary.data,longFlow)==1&&wf_has(fullSummary.data,"\"identity_binding\":\"verified\"")==1,"complete-machine-and-human-identities-in-result") 144 p("IDENTITY-OVERHEAD flow_bytes=");pn(slen(longFlow));p(" event_bytes=");pn(longEvent.len);p(" rid_bytes=");pn(flowRid.len);p(" complete_response_bytes=");pn(fullSummary.len);p(" journal_bytes=");pn(flowOut.text.len);p("\n") 145 wrt_fire(flows,steps,ledger,cat,"go~id=é.nishi",wrt_path(base,"utf8.log"),0,"\"event_id\":\"é.nishi\"","utf8-identity-lossless") 146 147 148 let oldDots:*u8=wrt_path(base,"legacy-dotted.ledger");if wrt_file(oldDots,"WFRUN rid=a.b.f flow=f step=0 status=START att=0\nWFVAR rid=a.b.f k=id v=a.b\nWFRUN rid=a.b.f flow=f step=0 status=DONE att=0\n")!=1{return 2};let dotsBefore:*WfrFile=wfr_read(oldDots) 149 let sameDot:i64=wf_fire_files(dottedFlows,dottedSteps,oldDots,cat,"one~id=a.b");let otherDot:i64=wf_fire_files(dottedFlows,dottedSteps,oldDots,cat,"two~id=a");let dotsAfter:*WfrFile=wfr_read(oldDots) 150 wrt_check(sameDot==(0-100)&&otherDot==WF_EVIDENCE_ERROR&&seq(dotsBefore.hash,dotsAfter.hash)==1,"ambiguous-dotted-history-never-reinterpreted") 151 let orderLedger:*u8=wrt_path(base,"out-of-order.ledger") 152 if wf_emit(orderLedger,collisionRid.data,"f",0,"BOUND",0)!=0||wf_emit_start2(orderLedger,collisionRid.data,"f")!=0||wf_emit_var(orderLedger,collisionRid.data,"id","reserved")!=0{return 2} 153 let orderBefore:*WfrFile=wfr_read(orderLedger);let ordered:i64=wf_resume_files(flows,steps,orderLedger,cat);let orderAfter:*WfrFile=wfr_read(orderLedger) 154 wrt_check(ordered==WF_EVIDENCE_ERROR&&seq(orderBefore.hash,orderAfter.hash)==1,"out-of-order-bound-record-refuses-before-effects") 155 let earlyId:*u8=wrt_path(base,"id-before-start.ledger") 156 if wf_emit_var(earlyId,collisionRid.data,"id","reserved")!=0||wf_emit_start2(earlyId,collisionRid.data,"f")!=0||wf_emit(earlyId,collisionRid.data,"f",0,"BOUND",0)!=0{return 2} 157 let earlyBefore:*WfrFile=wfr_read(earlyId);let earlyResume:i64=wf_resume_files(flows,steps,earlyId,cat);let earlyFire:i64=wf_fire_files(flows,steps,earlyId,cat,"go~id=reserved");let earlyAfter:*WfrFile=wfr_read(earlyId) 158 wrt_check(earlyResume==WF_EVIDENCE_ERROR&&earlyFire==WF_EVIDENCE_ERROR&&seq(earlyBefore.hash,earlyAfter.hash)==1,"id-before-start-refuses-fire-and-resume-before-effects") 159 let htmlLedger:*u8=wrt_path(base,"large-html.ledger");var hi:i64=0 160 while hi<9{let num:*WfOwnedText=wf_text_decimal(hi);let rowid:*WfOwnedText=wf_id_join(longRid.data,".",num.data);if wf_emit(htmlLedger,rowid.data,"f",0,"START",0)!=0||wf_emit(htmlLedger,rowid.data,"f",0,"DONE",0)!=0{return 2};wf_text_free(num);wf_text_free(rowid);hi=hi+1} 161 let htmlLargePath:*u8=wrt_path(base,"large-html.html");let htmlResult:i64=wf_obs_html(htmlLedger,htmlLargePath);let htmlLarge:*WfrFile=wfr_read(htmlLargePath) 162 wrt_check(htmlResult==9&&htmlLarge.status==1&&htmlLarge.text.len>WF_MAGIC_65536,"html-over-prior-cap-complete") 163 let zeroFlows:*u8=wrt_path(base,"zero.flows");let zeroSteps:*u8=wrt_path(base,"zero.steps");let zeroCat:*u8=wrt_path(base,"zero.catalog");let zeroLedger:*u8=wrt_path(base,"zero.ledger");let zeroLog:*u8=wrt_path(base,"zero.log") 164 if wrt_file(zeroFlows,"z|zero|-\n")!=1||wrt_file(zeroSteps,"z|1|exec-organ|zero|--exit7-no-output|1\n")!=1{return 2};let zeroRow:*WfOwnedText=wf_id_join("zero\t",argv[0] as *u8,"\tGREEN\n");if wrt_file(zeroCat,zeroRow.data)!=1{return 2} 165 wrt_fire(zeroFlows,zeroSteps,zeroLedger,zeroCat,"zero~id=exit7",zeroLog,1,"\"state\":\"FAILED\"","actual-zero-output-exit7-connector-fails") 166 let zeroEvidence:*WfrFile=wfr_read(zeroLog);wrt_check(zeroEvidence.status==1&&wf_has(zeroEvidence.text.data," exit=7")==1,"complete-native-exit7-evidence-retained") 167 168 // Read-only representative real release. This never replays its connectors. 169 wrt_result("/volume1/homes/elderwesto/nishihost/knowledge/status/wflow_runs.log","/volume1/homes/elderwesto/nishihost/buildroot/knowledge/gates/alpha-person-workflow-run-t343.log","person-alpha-t343-75baa30cd054.component-alpha-experimental",0,"\"effects\":\"connector-receipts-required\"","real-release-ledger-read-only") 170 p("RESULT-GATE TOTAL pass=");pn(wrt_pass);p(" fail=");pn(wrt_fail);p("\n");if wrt_fail>0{return 1};return 0 171} 172 173func main(argc:i64,argv:*i64)->i64{ 174 var automatic:i64=0 175 if argc==1{automatic=1} 176 if argc==3{if seq(argv[1] as *u8,"board")==1{automatic=1}} 177 if automatic==1{ 178 let epoch:*WfOwnedText=wf_text_decimal(sys_now_realtime_sec());if epoch==(0 as *WfOwnedText){return 2} 179 let scratch:*WfOwnedText=wf_id_join("/tmp/wflow-canonical-ship-t344-",epoch.data,"");wf_text_free(epoch);if scratch==(0 as *WfOwnedText){return 2} 180 let args:*i64=sys_mmap_try(__size_of(i64)*5) as *i64;if (args as i64)<=0{wf_text_free(scratch);return 2} 181 args[0]=argv[0];args[1]=scratch.data as i64;args[2]="/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_wflow.sov.elf" as *u8 as i64;args[3]="10000" as *u8 as i64 182 let rc:i64=wrt_identity_main(4,args);sys_munmap_direct(args as *u8,__size_of(i64)*5);wf_text_free(scratch);return rc 183 };return wrt_identity_main(argc,argv) 184}