nx_wflow_diagnostics_gate_t240.nx source
↩ module page · 40 lines · 1992 B
1import "nx_tool_run.nx"
2import "nx_gate_verdict.nx"
3import "nx_wflow_engine.nx"
4func wd_case(subject:*u8,args:*i64,want:i64,marker:*u8,tmo:i64,c:*i64)->i64 {
5 let out:*NxBufOwned=sys_mmap(NX_BO_BYTES) as *NxBufOwned
6 out.buf=0 as *u8;out.len=0;out.cap=0
7 let rc:i64=tr_run_capture_owned(subject,args,out,tmo,0,0 as *u8)
8 gv_check("native exit preserved",(rc==want) as i64,c)
9 gv_check("diagnostic or dedup observed",tr_contains(out.buf,out.len,marker),c)
10 if want!=0 {
11 gv_check("effect certainty not fabricated",tr_contains(out.buf,out.len,"\"effects\":\"unverified\""),c)
12 gv_check("no automatic retry",tr_contains(out.buf,out.len,"\"retry\":\"reconcile-first\""),c)
13 gv_check("no fixture action executed",(tr_contains(out.buf,out.len,"WFLOW-ACTION")==0) as i64,c)
14 }
15 let released:i64=nx_bo_release(out)
16 sys_munmap(out as *u8,NX_BO_BYTES)
17 gv_check("capture released",(released==0) as i64,c)
18 return 0
19}
20func main(argc:i64,argv:*i64)->i64 {
21 if argc!=6{return 2}
22 let tmo:i64=wf_atoi(argv[5] as *u8)
23 if tmo<=0{return 2}
24 let subject:*u8=argv[1] as *u8
25 let flows:*u8=argv[2] as *u8
26 let steps:*u8=argv[3] as *u8
27 let ledger:*u8=argv[4] as *u8
28 let c:*i64=gv_ctr()
29 let a:*i64=sys_mmap(8*8) as *i64
30 a[0]=subject as i64;a[1]="fire" as *u8 as i64;a[2]=flows as i64;a[3]=steps as i64;a[4]="/tmp" as *u8 as i64;a[5]="-" as *u8 as i64;a[6]="fixture-event~id=api-t230" as *u8 as i64;a[7]=0
31 wd_case(subject,a,1,"nishi-workflow-error/1",tmo,c)
32 a[1]="resume" as *u8 as i64;a[6]=0
33 wd_case(subject,a,1,"nishi-workflow-error/1",tmo,c)
34 a[1]="board" as *u8 as i64;a[2]="/tmp" as *u8 as i64;a[3]=0
35 wd_case(subject,a,1,"nishi-workflow-error/1",tmo,c)
36 a[1]="fire" as *u8 as i64;a[2]=flows as i64;a[3]=steps as i64;a[4]=ledger as i64;a[5]="-" as *u8 as i64;a[6]="fixture-event~id=api-t230" as *u8 as i64;a[7]=0
37 wd_case(subject,a,0,"already started",tmo,c)
38 sys_munmap(a as *u8,8*8)
39 return gv_verdict("WFLOW-DIAGNOSTIC",c,"actual candidate; existing completed fixture; no new remote effects")
40}