code wiki / _hdl_build / nx_job_reservation_repro_t182.nx
nx_job_reservation_repro_t182.nx source
↩ module page · 33 lines · 2524 B
1import "nx_tools_api.nx"
2import "nx_gate_verdict.nx"
3func main()->i64{
4 let c:*i64=gv_ctr();gv_head("Actual tools API legacy reservation collision reproduction in isolated cwd")
5 let dir:*u8=sys_mmap(160);let d:i64=ta_catn(dir,ta_cat(dir,0,"/tmp/nishi-job-collision-t182-"),sys_now_ms());dir[d]=0
6 if sys_mkdir(dir,493)!=0{return 3};if sys_chdir(dir)!=0{return 3}
7 if sys_mkdir("_jobs",493)!=0{return 3}
8 let allow:*u8="argecho\t/volume1/homes/elderwesto/nishihost/nx_tool_argecho.elf\tGREEN\n"
9 if ta_job_put("tool_allowlist.conf",allow,ta_slen(allow))!=0{return 3}
10 let base:i64=sys_now_realtime_sec();let path:*u8=sys_mmap(160)
11 var i:i64=0
12 while i<180{
13 let p:i64=ta_cat(path,ta_catn(path,ta_cat(path,0,"_jobs/job_"),base+i),".claim");path[p]=0
14 if ta_job_put(path,"state=CLAIMED owner=collision-fixture\n",ta_slen("state=CLAIMED owner=collision-fixture\n"))!=0{return 3};i=i+1
15 }
16 let cap:*u8=sys_mmap(1024);let cn:i64=capt_issue(TA_CAP_SECRET,ta_slen(TA_CAP_SECRET),"argecho",7,base+600,42,cap,1024)
17 let body:*u8=sys_mmap(4096);var n:i64=ta_cat(body,0,"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"argecho\",\"_async\":\"1\",\"_cap\":\"")
18 n=ta_catb(body,n,cap,cn);n=ta_cat(body,n,"\",\"arguments\":{\"argv\":[\"collision-witness\"]}}}")
19 let req:*u8=sys_mmap(8192);var rn:i64=ta_cat(req,0,"POST /mcp HTTP/1.1\r\nHost: test\r\nConnection: close\r\n\r\n")
20 rn=ta_catb(req,rn,body,n);let out:*u8=sys_mmap(1048576);let on:i64=ta_handle_pfx("fixture-toolreg-",req,rn,out)
21 gv_check("actual handler returned JOB-STARTED",ta_indexof(out,on,"JOB-STARTED")>=0,c)
22 let jid:*i64=sys_mmap(16) as *i64
23 gv_check("actual response exposes job identity",jx_get_int(out,on,0,"job",jid)>=0,c)
24 let pp:i64=ta_cat(path,ta_catn(path,ta_cat(path,0,"_jobs/job_"),jid[0]),".claim");path[pp]=0
25 let sz:*i64=sys_mmap(16) as *i64;let b:*u8=sys_read_file(path,sz)
26 gv_check("returned identity belongs to pre-existing fixture",ta_indexof(b,sz[0],"owner=collision-fixtur")>=0,c)
27 gv_puts("returned_job=");gv_num(jid[0]);gv_puts(" initial_second=");gv_num(base);gv_puts("\n")
28 sys_sleep_ms(500)
29 let wrong:*u8=sys_mmap(160);let wp:i64=ta_cat(wrong,ta_catn(wrong,ta_cat(wrong,0,"_jobs/job_"),jid[0]-1),".claim");wrong[wp]=0
30 let wb:*u8=sys_read_file(wrong,sz)
31 gv_check("another previously owned claim was overwritten DONE",ta_indexof(wb,sz[0],"state=DONE")>=0,c)
32 return gv_verdict("job-reservation-legacy-reproduction",c,"PASS means the defect reproduced; not a healthy allocator or a deployment approval")
33}