code wiki / (root) / nx_rigbench_motion_gate_t21.nx

nx_rigbench_motion_gate_t21.nx source

↩ module page · 91 lines · 6432 B

1// Native rigbench temporal and consumer negative controls. 2import "nx_rigbench_motion_t21.nx" 3import "nx_gate_verdict.nx" 4import "nx_readcap_lib.nx" 5const RBG_JOINTS: i64 = 1 6const RBG_ANIM_WORDS: i64 = 8 7const RBG_END: i64 = 1000 8const RBG_MID: i64 = 500 9const RBG_TRANSLATION_MM: i64 = 100 10const RBG_KNIGHT_JOINTS: i64 = 113 11func main() -> i64 { 12 gv_head("=== rigbench temporal readiness and consumer binding ===" as *u8) 13 let c: *i64 = gv_ctr() 14 let anim: *i64 = sys_mmap(RBG_ANIM_WORDS*RBM_BYTES) as *i64 15 anim[0]=1;anim[1]=0;anim[2]=NA_CH2;anim[3]=2 16 anim[4]=0;anim[5]=NA_Q12 17 anim[6]=RBG_END;anim[7]=NA_Q12 | (RBG_TRANSLATION_MM << NA_LANE_B1) 18 let skel: *i64=sys_mmap(NA_SKEL_W*RBM_BYTES) as *i64 19 var k: i64=0 20 while k < NA_SKEL_W { skel[k]=0;k=k+1 } 21 skel[0]=0-1 22 let idx: *i64=sys_mmap(NA_IDX_W*RBM_BYTES) as *i64 23 let rv: *i64=sys_mmap(NA_RV_W*RBM_BYTES) as *i64 24 let a: *i64=sys_mmap(NA_ROW_W*RBM_BYTES) as *i64 25 let b: *i64=sys_mmap(NA_ROW_W*RBM_BYTES) as *i64 26 let neg: *i64=sys_mmap(NA_ROW_W*RBM_BYTES) as *i64 27 let scr: *i64=sys_mmap(NA_SCR_W*RBM_BYTES) as *i64 28 let rep: *i64=sys_mmap(RBM_R_WORDS*RBM_BYTES) as *i64 29 gv_check_eq("authored midpoint pair contains changing motion" as *u8,rb_motion_pair(anim,RBG_ANIM_WORDS,skel,RBG_JOINTS,0,RBG_MID,idx,rv,a,b,scr,rep),RBM_OK,c) 30 gv_check_eq("one changed joint" as *u8,rep[RBM_R_CHANGED],1,c) 31 gv_check_eq("initial identity is explicit" as *u8,rep[RBM_R_NONIDENTITY_A],0,c) 32 gv_check_eq("midpoint nonidentity is explicit" as *u8,rep[RBM_R_NONIDENTITY_B],1,c) 33 gv_check_eq("consumer absent remains unknown" as *u8,rep[RBM_R_CONSUMER_RC],RBM_ABSTAIN,c) 34 gv_check_eq("known midpoint translation dual x" as *u8,b[RBM_QUAT],(RBG_TRANSLATION_MM*NA_DT_MM_TO_MODEL/2)*NA_Q12/2,c) 35 gv_check_eq("matching consumer samples qualify only row agreement" as *u8,rb_motion_consumer(a,b,a,b,RBG_JOINTS,rep),RBM_OK,c) 36 gv_check_eq("identity consumer refuses even when asset moves" as *u8,rb_motion_consumer(a,b,a,a,RBG_JOINTS,rep),RBM_REFUSE,c) 37 k=0 38 while k < NA_ROW_W { neg[k]=0-b[k];k=k+1 } 39 gv_check_eq("simultaneous dual quaternion sign is equivalent" as *u8,rb_motion_row_equal(b,neg,RBG_JOINTS,0),1,c) 40 anim[7]=NA_Q12 41 gv_check_eq("identity clip cannot qualify motion" as *u8,rb_motion_pair(anim,RBG_ANIM_WORDS,skel,RBG_JOINTS,0,RBG_MID,idx,rv,a,b,scr,rep),RBM_ABSTAIN,c) 42 gv_check_eq("static reason retained" as *u8,rep[RBM_R_REASON],RBM_REASON_STATIC,c) 43 gv_check_eq("static matching consumer cannot acquit" as *u8,rb_motion_consumer(a,b,a,b,RBG_JOINTS,rep),RBM_ABSTAIN,c) 44 gv_check_eq("identical sample times refused" as *u8,rb_motion_pair(anim,RBG_ANIM_WORDS,skel,RBG_JOINTS,0,0,idx,rv,a,b,scr,rep),RBM_REFUSE,c) 45 gv_check_eq("truncated animation refused" as *u8,rb_motion_pair(anim,RBG_ANIM_WORDS-1,skel,RBG_JOINTS,0,RBG_MID,idx,rv,a,b,scr,rep),RBM_REFUSE,c) 46 let lp: *i64=sys_mmap(RBM_BYTES) as *i64 47 let knight: *u8=sys_read_file("/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/dark_knight.nxa" as *u8,lp) 48 gv_check("served Knight read" as *u8,((knight as i64)!=0) as i64,c) 49 if (knight as i64)!=0 { 50 gv_check_eq("real Knight absent animation abstains" as *u8,rb_motion_asset(knight,lp[0],0,RBG_MID,RBG_KNIGHT_JOINTS,rep),RBM_ABSTAIN,c) 51 gv_check_eq("real Knight retains absent ANIM reason" as *u8,rep[RBM_R_REASON],RBM_REASON_NO_ANIM,c) 52 gv_check_eq("real Knight joint count measured" as *u8,rep[RBM_R_JOINTS],RBG_KNIGHT_JOINTS,c) 53 } 54 let resident: *u8=sys_read_file("/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/ref9e.nxa" as *u8,lp) 55 gv_check("served resident read" as *u8,((resident as i64)!=0) as i64,c) 56 if (resident as i64)!=0 { 57 let before: i64=nxa_check2(1,resident as *i64,lp[0]/RBM_BYTES) 58 let rc: i64=rb_motion_asset(resident,lp[0],0,RBG_MID,RBG_KNIGHT_JOINTS,rep) 59 gv_check_eq("real resident sampled temporal motion exists" as *u8,rc,RBM_OK,c) 60 gv_check("real resident changed joint population nonempty" as *u8,(rep[RBM_R_CHANGED]>0) as i64,c) 61 gv_kv("real_resident_changed_joints" as *u8,rep[RBM_R_CHANGED]) 62 gv_kv("real_resident_tracked_joints" as *u8,rep[RBM_R_TRACKED]) 63 gv_kv("real_resident_duration_ms" as *u8,rep[RBM_R_DURATION]) 64 gv_check_eq("real asset readiness does not claim scene binding" as *u8,rep[RBM_R_CONSUMER_RC],RBM_ABSTAIN,c) 65 gv_check_eq("real asset bytes unchanged" as *u8,nxa_check2(1,resident as *i64,lp[0]/RBM_BYTES),before,c) 66 gv_check_eq("joint request budget refuses real resident" as *u8,rb_motion_asset(resident,lp[0],0,RBG_MID,1,rep),RBM_REFUSE,c) 67 gv_check_eq("malformed short header refuses" as *u8,rb_motion_asset(resident,31,0,RBG_MID,RBG_KNIGHT_JOINTS,rep),RBM_REFUSE,c) 68 let skentry: i64=nxa_section_entry(resident,lp[0],nxa_tag4("SKEL" as *u8)) 69 let rw: *i64=resident as *i64 70 let skoff: i64=rw[skentry+1]/RBM_BYTES 71 let oldcount: i64=rw[skoff] 72 let oldcheck: i64=rw[skentry+3] 73 rw[skoff]=oldcount+1 74 rw[skentry+3]=nxa_check2(1,((resident as i64)+rw[skentry+1]) as *i64,rw[skentry+2]) 75 // The TOC checksum also binds the changed section checksum. 76 let oldtoc: i64=rw[3] 77 rw[3]=nxa_check2(1,((resident as i64)+32) as *i64,rw[2]*4) 78 gv_check_eq("checksummed invalid count refuses" as *u8,rb_motion_asset(resident,lp[0],0,RBG_MID,RBG_KNIGHT_JOINTS,rep),RBM_REFUSE,c) 79 rw[skoff]=oldcount;rw[skentry+3]=oldcheck;rw[3]=oldtoc 80 gv_check_eq("malformed fixture restores original asset" as *u8,nxa_check2(1,resident as *i64,lp[0]/RBM_BYTES),before,c) 81 let capbytes: i64=lp[0]-1 82 let limited: *u8=sys_mmap(capbytes) 83 let rst: *i64=sys_mmap(3*RBM_BYTES) as *i64 84 let got: i64=rc_read_file_into("/volume1/homes/elderwesto/nishihost/sites/nishifamily/world/ref9e.nxa" as *u8,limited,capbytes,rst) 85 gv_check_eq("explicit byte budget read stops at cap" as *u8,got,capbytes,c) 86 gv_check_eq("one byte too small is TRUNCATED not exact" as *u8,rst[0],RC_FULL,c) 87 gv_check_eq("truncated budget cannot qualify completeness" as *u8,rc_complete(rst),0,c) 88 sys_munmap(limited,capbytes);sys_munmap(rst as *u8,3*RBM_BYTES) 89 } 90 return gv_verdict("RIGBENCH-MOTION-T21" as *u8,c,"sampled temporal rows; scene visibility unqualified" as *u8) 91}