code wiki / _hdl_build / nx_stage_alias_gate_t185.nx

nx_stage_alias_gate_t185.nx source

↩ module page · 29 lines · 2440 B

1import "nx_mgmt_deploy_candidate_t185.nx" 2import "nx_gate_verdict.nx" 3func ag185_write(path:*u8,value:i64)->i64{ 4 let b:*u8=sys_mmap(5);b[0]=127 as u8;b[1]=69 as u8;b[2]=76 as u8;b[3]=70 as u8;b[4]=value as u8 5 let rc:i64=dp_writefile(path,b,5);sys_munmap(b,5);return rc 6} 7func main()->i64{ 8 let c:*i64=gv_ctr();gv_head("Actual deploy handler rejects opposite alias precedence") 9 let root:*u8=sys_mmap(512);var n:i64=sd_cat(root,0,"/tmp/nishi-stage-identity-t185-");n=sd_catn(root,n,sys_now_ms());root[n]=0 10 if sys_mkdir(root,MODE_0755)!=0 || sys_chdir(root)!=0{return 3} 11 let out:*u8=sys_mmap(65536) 12 gv_check("upload alias peer derived",md_streq(ma_stage_peer("thing.elf.new"),"thing.sov.elf.new")==1,c) 13 gv_check("build alias peer derived",md_streq(ma_stage_peer("thing.sov.elf.new"),"thing.elf.new")==1,c) 14 gv_check("single alias remains compatible",ag185_write("thing.elf.new",1)==0 && ma_stage_alias_guard("thing.elf.new",out)==0,c) 15 gv_check("same-size distinct artifacts prepared",ag185_write("thing.sov.elf.new",2)==0,c) 16 let rejected:i64=ma_stage_alias_guard("thing.elf.new",out) 17 gv_check("divergent aliases report409",rejected>0 && dp_contains(out,rejected,"409 Conflict")==1,c) 18 gv_check("failure names identities and unexecuted state",dp_contains(out,rejected,"DIVERGENT_STAGE_ALIASES")==1 && dp_contains(out,rejected,"\"published\":false")==1 && dp_contains(out,rejected,"selected_sha256")==1,c) 19 let reg:*u8="fixture 0 thing.elf.new INVALID_STAGE_GUARD_FIXTURE port:18998 INVALID_STAGE_GUARD_FIXTURE /tmp/no-live-deploy-t185 fixture-never-running\n" 20 if dp_writefile("deploy_targets.conf",reg,fi_len(reg))!=0{return 3} 21 let req:*u8="POST /api/deploy HTTP/1.1\r\nHost: fixture\r\n\r\ntarget=fixture" 22 let got:i64=ma_do_deploy(req,fi_len(req),out) 23 gv_check("actual handler refuses before publisher",got>0 && dp_contains(out,got,"DIVERGENT_STAGE_ALIASES")==1,c) 24 let h:*u8=sys_mmap(130);ma_file_sha_hex("thing.elf.new",h);ma_file_sha_hex("thing.sov.elf.new",h+65) 25 gv_check("refusal preserves both original artifacts",ma_hexstr_eq(h,h+65)==0,c) 26 gv_check("identical aliases are compatible",ag185_write("thing.sov.elf.new",1)==0 && ma_stage_alias_guard("thing.elf.new",out)==0,c) 27 gv_check("reverse selected alias agrees",ma_stage_alias_guard("thing.sov.elf.new",out)==0,c) 28 return gv_verdict("stage-alias-prevention",c,"Actual handler and real isolated artifact files; publication not called; atomic handoff still pending") 29}