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}