code wiki / _hdl_build / nx_job_connected_gate_t183.nx
nx_job_connected_gate_t183.nx source
↩ module page · 47 lines · 3607 B
1import "nx_mcp_body_gate.nx"
2func main()->i64{
3 let c:*i64=gv_ctr();gv_head("Connected MCP result metadata propagation")
4 let root:*u8=sys_mmap(JR_PATH);let rn:i64=ta_catn(root,ta_cat(root,0,"/tmp/nishi-mcp-meta-t183-"),sys_now_ms());root[rn]=0
5 if sys_mkdir(root,MODE_0755)!=0{return 3}
6 let path:*u8=sys_mmap(JR_PATH);mbg_path(path,root,"/knowledge");if sys_mkdir(path,MODE_0755)!=0{return 3}
7 mbg_path(path,root,"/knowledge/status");if sys_mkdir(path,MODE_0755)!=0{return 3}
8 mbg_path(path,root,"/knowledge/store");if sys_mkdir(path,MODE_0755)!=0{return 3}
9 mbg_path(path,root,"/tool_allowlist.conf")
10 let allow:*u8="nx_slowtick\t/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_job_worker_fixture_t182.sov.elf\tGREEN\n"
11 if ta_job_put(path,allow,ta_slen(allow))!=0{return 3}
12 let log:*u8=sys_mmap(JR_PATH);mbg_path(log,root,"/server.log")
13 let port:i64=18998
14 let addr:*u8=sys_mmap(16);nx_http_server_addr_loopback(addr,port)
15 let probe:i64=sys_socket(2,1,0);if probe<0{return 3}
16 let occupied:i64=nx_connect_bounded(probe,addr,16,NX_CONN_DEFAULT_MS);sys_close(probe)
17 if occupied>=0{gv_puts("fixture port already occupied; refused without restarting it\n");return 3}
18 let pid:i64=mbg_spawn_cwd("/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_tools_api_serve.sov.elf",port,log,root)
19 if pid<=0{return 3}
20 sys_sleep_ms(500)
21 let out:*u8=sys_mmap(MBG_RESP_CAP);let ms:*i64=sys_mmap(16) as *i64;let fd:*i64=sys_mmap(16) as *i64
22 let n:i64=mbg_post_call(port,100,2,out,MBG_RESP_CAP,ms,fd)
23 if fd[0]>=0{sys_close(fd[0])}
24 gv_check("connected MCP returns HTTP200",n>0 && jr_has(out,n,"HTTP/1.1 200")==1,c)
25 gv_check("response retains request identity",jr_has(out,n,"\"id\":\"PROMO\"")==1,c)
26 gv_check("actual worker result propagated",jr_has(out,n,"WORKER-COMPLETE")==1,c)
27 gv_check("job evidence inside existing result metadata",jr_has(out,n,"\"_meta\":{\"exit_code\":0,\"bytes\":")==1 && jr_has(out,n,"\"job_evidence\"")==0,c)
28 let meta:i64=ta_indexof(out,n,"\"_meta\"")
29 let id:*i64=sys_mmap(16) as *i64
30 gv_check("metadata job ID recoverable",meta>=0 && jx_get_int(out,n,meta,"job",id)>=0 && id[0]>0,c)
31 gv_check("publication proof propagated",jr_has(out,n,"\"publication_verified\":true")==1,c)
32 let dir:*u8=sys_mmap(JR_PATH);mbg_path(dir,root,"/_jobs");jr_mkpath(path,JR_PATH,dir,id[0],JR_EXT_OUT)
33 let sz:*i64=sys_mmap(16) as *i64;let evidence:*u8=sys_read_file(path,sz)
34 gv_check("MCP metadata links to actual retained worker output",(evidence as i64)!=0 && jr_has(evidence,sz[0],"WORKER-COMPLETE")==1,c)
35 mbg_path(path,root,"/tool_allowlist.conf")
36 let denied:*u8="nx_slowtick\t/volume1/homes/elderwesto/nishihost/buildroot/_build/nx_job_worker_fixture_t182.sov.elf\tRED\n"
37 let wrote:i64=ta_job_put(path,denied,ta_slen(denied))
38 let out2:*u8=sys_mmap(MBG_RESP_CAP);let n2:i64=mbg_post_call(port,100,2,out2,MBG_RESP_CAP,ms,fd)
39 if fd[0]>=0{sys_close(fd[0])}
40 gv_check("existing tool error remains an error",wrote==0 && jr_has(out2,n2,"\"isError\":true")==1,c)
41 gv_check("missing metadata object created for refused tool",jr_has(out2,n2,"\"_meta\":{\"job\":")==1 && jr_has(out2,n2,"\"publication_verified\":true")==1,c)
42 gv_check("fixture daemon reaped",mbg_kill(pid)==1,c)
43 gv_puts("connected_response_ms=");gv_num(ms[0]);gv_puts("\n")
44 if n>0{gv_puts("SUCCESS-RESPONSE-BEGIN\n");sys_write(1,out,n);gv_puts("\nSUCCESS-RESPONSE-END\n")}
45 if n2>0{gv_puts("REFUSAL-RESPONSE-BEGIN\n");sys_write(1,out2,n2);gv_puts("\nREFUSAL-RESPONSE-END\n")}
46 return gv_verdict("connected-mcp-metadata",c,"Isolated actual TCP server; default TLS/attached path must still be verified after activation")
47}