code wiki / (root) / nx_swarm_place_epoch_gate_t71.nx

nx_swarm_place_epoch_gate_t71.nx source

↩ module page · 31 lines · 2780 B

1import "nx_swarm_place_epoch_t71.nx" 2import "nx_node_beacon.nx" 3import "nx_gate_verdict.nx" 4const CL_WINDOW:i64=300 5const CL_FRESH_EXPECT:i64=0 6func cl_copy(stamp:i64,label:*u8,f:*i64,ts:i64)->*u8{ 7 let path:*u8=sys_mmap(256);var p:i64=fa_cat(path,0,"/tmp/place_clock_" as *u8);p=fa_catn(path,p,stamp);p=fa_cat(path,p,label);p=fa_cat(path,p,".snap" as *u8);path[p]=0 as u8 8 let b:*u8=sys_mmap(NB_ROW_CAP);let n:i64=nb_build_row(b,"clock-probe" as *u8,f[0],f[1],f[2],f[3],f[4],f[5],f[6],f[7],ts,f[9],f[10]);b[n]=10 as u8 9 let fd:i64=__syscall(SYS_OPENAT,AT_FDCWD,path as i64,193,420,0,0);if fd<0{return 0 as *u8};let wr:i64=fa_write_all(fd,b,n+1);let closed:i64=sys_close(fd);if wr!=n+1||closed!=0{return 0 as *u8};return path 10} 11func main(argc:i64,argv:*i64)->i64{ 12 if argc!=2{return 2};let ctr:*i64=gv_ctr();gv_head("PLACE-CLOCK-ACTUAL-BEACON" as *u8) 13 let b:*u8=sys_mmap(SP_SNAP_CAP);let n:i64=sb_read(argv[1] as *u8,b,SP_SNAP_CAP);let f:*i64=sys_mmap(128) as *i64 14 gv_check("actual beacon file parses" as *u8,n>0&&sb_fields(b,n,f)==1,ctr);if n<=0{return 3} 15 let now:i64=sys_now_realtime_us();let mono:i64=sys_now_us() 16 gv_values_head();gv_kv("beacon_epoch_us" as *u8,f[8]);gv_kv("current_epoch_us" as *u8,now);gv_kv("current_monotonic_us" as *u8,mono) 17 gv_check("actual beacon is epoch-fresh" as *u8,sb_fresh(f[8],now,CL_WINDOW)==1,ctr) 18 gv_check("old monotonic comparator rejects same epoch observation" as *u8,sb_fresh(f[8],mono,CL_WINDOW)==0,ctr) 19 let c:*i64=sys_mmap(64) as *i64;let why:*i64=sys_mmap(16) as *i64;sp_conf_load(0 as *u8,c) 20 gv_check("unchanged battery and load policy admits actual observation with correct time" as *u8,sp_score(f,now,CL_WINDOW,c,why)>=0,ctr) 21 let winner:*u8=sys_mmap(64);let fresh:i64=sp_pick(argv[1] as *u8,CL_WINDOW,0 as *u8,winner,64) 22 gv_check("selection matches declared candidate or baseline expectation" as *u8,fresh==CL_FRESH_EXPECT,ctr) 23 if CL_FRESH_EXPECT==0{gv_check("actual winner identity retained" as *u8,sp_eq(winner,"clock-probe" as *u8)==1,ctr)} 24 let stale:*u8=cl_copy(now,"_stale" as *u8,f,now-CL_WINDOW*2000000);let future:*u8=cl_copy(now,"_future" as *u8,f,now+120000000) 25 gv_check("isolated stale and future copies created" as *u8,(stale as i64)!=0&&(future as i64)!=0,ctr) 26 if (stale as i64)==0||(future as i64)==0{return 3} 27 gv_check("stale observation refuses placement" as *u8,sp_pick(stale,CL_WINDOW,0 as *u8,winner,64)==3,ctr) 28 gv_check("future beyond permitted skew refuses placement" as *u8,sp_pick(future,CL_WINDOW,0 as *u8,winner,64)==3,ctr) 29 gv_puts("scope=read actual local beacon and private timestamp copies; no remote dispatch; battery policy unchanged\n" as *u8) 30 return gv_verdict("PLACE-CLOCK",ctr,"candidate expectation0 selects actual epoch beacon; baseline expectation3 reproduces defect" as *u8) 31}