nx_gait_engine_gate_t139.nx source
↩ module page · 185 lines · 9615 B
1// nx_gait_engine_gate_t139.nx -- Validates and initializes a gait engine using a binary file's SHA256 digest and structured data sections.
2import "nx_syscalls.nx"
3import "nx_nxa.nx"
4import "nx_sha256.nx"
5import "nx_gate_verdict.nx"
6import "nx_wasm_craft_gait_candidate_t139.nx"
7func main(argc:i64,argv:*i64)->i64 {
8 let ctr:*i64=gv_ctr()
9 if argc<2 {return 2}
10 let path:*u8=argv[1] as *u8
11 let fd:i64=sys_openat_rd(path)
12 if fd<0 {return 3}
13 let bytes:i64=12449344
14 let b:*u8=sys_mmap(bytes)
15 var off:i64=0
16 while off<bytes {let n:i64=sys_read(fd,((b as i64)+off) as *u8,bytes-off);if n<=0 {sys_close(fd);return 4};off=off+n}
17 sys_close(fd)
18 let digest:*u8=sys_mmap(32)
19 sha256_digest(b,bytes,digest)
20 var mismatch:i64=0
21 if digest[0] != 49 as u8 {mismatch=mismatch+1}
22 if digest[1] != 119 as u8 {mismatch=mismatch+1}
23 if digest[2] != 129 as u8 {mismatch=mismatch+1}
24 if digest[3] != 52 as u8 {mismatch=mismatch+1}
25 if digest[4] != 181 as u8 {mismatch=mismatch+1}
26 if digest[5] != 22 as u8 {mismatch=mismatch+1}
27 if digest[6] != 114 as u8 {mismatch=mismatch+1}
28 if digest[7] != 88 as u8 {mismatch=mismatch+1}
29 if digest[8] != 176 as u8 {mismatch=mismatch+1}
30 if digest[9] != 91 as u8 {mismatch=mismatch+1}
31 if digest[10] != 24 as u8 {mismatch=mismatch+1}
32 if digest[11] != 174 as u8 {mismatch=mismatch+1}
33 if digest[12] != 154 as u8 {mismatch=mismatch+1}
34 if digest[13] != 224 as u8 {mismatch=mismatch+1}
35 if digest[14] != 98 as u8 {mismatch=mismatch+1}
36 if digest[15] != 192 as u8 {mismatch=mismatch+1}
37 if digest[16] != 115 as u8 {mismatch=mismatch+1}
38 if digest[17] != 253 as u8 {mismatch=mismatch+1}
39 if digest[18] != 3 as u8 {mismatch=mismatch+1}
40 if digest[19] != 251 as u8 {mismatch=mismatch+1}
41 if digest[20] != 63 as u8 {mismatch=mismatch+1}
42 if digest[21] != 70 as u8 {mismatch=mismatch+1}
43 if digest[22] != 210 as u8 {mismatch=mismatch+1}
44 if digest[23] != 18 as u8 {mismatch=mismatch+1}
45 if digest[24] != 227 as u8 {mismatch=mismatch+1}
46 if digest[25] != 81 as u8 {mismatch=mismatch+1}
47 if digest[26] != 45 as u8 {mismatch=mismatch+1}
48 if digest[27] != 40 as u8 {mismatch=mismatch+1}
49 if digest[28] != 102 as u8 {mismatch=mismatch+1}
50 if digest[29] != 12 as u8 {mismatch=mismatch+1}
51 if digest[30] != 79 as u8 {mismatch=mismatch+1}
52 if digest[31] != 237 as u8 {mismatch=mismatch+1}
53 gv_check_eq("exact served asset SHA256",mismatch,0,ctr)
54 if mismatch!=0 {return 5}
55 let w:*i64=b as *i64
56 let so:i64=nxa_counted_section(b,bytes,nxa_tag4("SKEL" as *u8),NA_SKEL_W)
57 let ae:i64=nxa_section_entry(b,bytes,nxa_tag4("ANIM" as *u8))
58 if so<0||ae<0 {return 6}
59 let nj:i64=w[so]
60 let skel:*i64=((b as i64)+(so+1)*8) as *i64
61 let anim:*i64=((b as i64)+w[ae+1]) as *i64
62 let idx:*i64=sys_mmap(nj*NA_IDX_W*8) as *i64
63 let order:*i64=sys_mmap(nj*8) as *i64
64 let scr:*i64=sys_mmap(NA_SCR_W*8+8) as *i64
65 scr[NA_SCR_W]=139
66 let rv:*i64=sys_mmap(NA_RV_W*8) as *i64
67 let feet:*i64=sys_mmap(NA_GAIT_INPUT_W*8) as *i64
68 feet[0]=8
69 feet[1]=7682
70 feet[2]=2438
71 feet[3]=9129
72 feet[4]=4711
73 feet[5]=0-10330
74 feet[6]=1478
75 feet[7]=0-1027
76 feet[8]=3965
77 feet[9]=24
78 feet[10]=0-7684
79 feet[11]=2361
80 feet[12]=9099
81 feet[13]=0-4707
82 feet[14]=0-10441
83 feet[15]=1474
84 feet[16]=0-1073
85 feet[17]=3953
86 let header:*i64=sys_mmap(NA_GAIT_HEADER_W*8) as *i64
87 let cap:i64=w[ae+2]/NA_CH2_KEY_W
88 let table:*i64=sys_mmap(cap*NA_GAIT_ROW_W*8) as *i64
89 let duration:i64=na_index(anim,w[ae+2],nj,idx)
90 na_index_order(anim,idx,nj,order)
91 na_fit_root(anim,idx,na_root_joint(skel,nj),rv,scr)
92 let rc:i64=na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr)
93 gv_check_eq("actual in-place contact calibration",rc,0,ctr)
94 gv_check_eq("actual clip duration",duration,17919,ctr)
95 gv_check_eq("calibration retains all left keys",header[0],544,ctr)
96 if rc!=0 {return 7}
97 var monotonic:i64=1;var i:i64=1
98 while i<header[0] {if table[i*NA_GAIT_ROW_W+1]<table[(i-1)*NA_GAIT_ROW_W+1] {monotonic=0};i=i+1}
99 gv_check_eq("contact distance monotonic",monotonic,1,ctr)
100 gv_check_eq("cycle wraps without whole-clip support assumption",na_gait_time(table,header[0],header[1]),na_gait_time(table,header[0],0),ctr)
101 gv_puts("GAIT samples=" as *u8);gv_num(header[0]);gv_puts(" model_distance=" as *u8);gv_num(header[1]);gv_puts(" transitions=" as *u8);gv_num(header[2]);gv_puts(" supported_intervals=" as *u8);gv_num(header[3]);gv_puts(" unknown_intervals=" as *u8);gv_num(header[4]);gv_puts(" duration_ms=" as *u8);gv_num(header[5]);gv_puts(" measured_mpb=" as *u8);gv_num(header[6]);gv_puts("\n" as *u8)
102
103 gv_check_eq("matches independent sole support transitions",header[2],24,ctr)
104 gv_check_eq("all representative intervals have rearward support",header[4],0,ctr)
105 gv_check_eq("matches independent float calibration integer ms per block",header[6],1368,ctr)
106
107 let base:i64=sys_mmap(CRAFT_EXT_TOTAL) as i64
108 gv_check_eq("real Beach native initialization",init_impl_v(base,2,20260728),0,ctr)
109 let targetskel:*i64=(base+O_NXA_SKEL) as *i64
110 let targetanim:*i64=(base+O_NXA_ANIM) as *i64
111 var z:i64=0
112 while z<nj*NA_SKEL_W {targetskel[z]=skel[z];z=z+1}
113 z=0;while z<w[ae+2] {targetanim[z]=anim[z];z=z+1}
114 let pe:i64=nxa_section_entry(b,bytes,nxa_tag4("POSE" as *u8))
115 if pe<0 {return 8}
116 let pose:*i64=((b as i64)+w[pe+1]) as *i64
117 let targetpose:*i64=(base+O_NXA_POSE) as *i64
118 z=0;while z<w[pe+2] {targetpose[z]=pose[z];z=z+1}
119 gv_check_eq("engine ingests actual motion and held pose",wc_nxa_ingest(base,nj,w[ae+2],w[pe+2]),0,ctr)
120 let targetfeet:*i64=(base+O_NXA_GAIT) as *i64
121 z=0;while z<NA_GAIT_INPUT_W {targetfeet[z]=feet[z];z=z+1}
122 gv_check_eq("engine calibrates actual inferred contacts",wc_gait_calibrate(base),0,ctr)
123 gv_check_eq("engine reports measured ms per block",nxa_hp(base)[NXA_H_MPB],1368,ctr)
124 let ms:*i64=(base+O_NXA_MOB) as *i64
125 let applied:*i64=(base+O_MOBAUX) as *i64
126 ms[NXA_M_IW]=NA_Q12
127 // Actual observed actor6 applied displacement was four Q8 units on each axis.
128 applied[0]=4;applied[1]=4
129 z=0;while z<HG_TPS*4 {wc_cast_blend_tick(base,0);z=z+1}
130 gv_check_eq("walking no longer inherits breathing idle amplitude",ms[NXA_M_IW],0,ctr)
131 gv_check("diagonal distance retains sub-Q8 movement",sd_isqrt((4*4+4*4)*NA_Q12)>sd_isqrt(4*4+4*4)*64,ctr)
132 let phase:i64=ms[NXA_M_PATH_Q14]
133 let tpose:i64=wc_gait_time(base,0)
134 let rowsa:i64=wc_cast_rows(base,0,16)
135 let snap:*i64=sys_mmap(nj*NA_ROW_W*8) as *i64
136 let rows:*i64=rowsa as *i64
137 z=0;while z<nj*NA_ROW_W {snap[z]=rows[z];z=z+1}
138 wc_cast_rows(base,0,1000)
139 var changed:i64=0;z=0;while z<nj*NA_ROW_W {if snap[z]!=rows[z] {changed=changed+1};z=z+1}
140 gv_check_eq("drawing never advances native contact phase",ms[NXA_M_PATH_Q14],phase,ctr)
141 gv_check_eq("draw delta does not change native pose rows",changed,0,ctr)
142 applied[0]=0;applied[1]=0
143 z=0;while z<HG_TPS {wc_cast_blend_tick(base,0);z=z+1}
144 gv_check_eq("stop holds measured phase instead of whole-clip attraction",ms[NXA_M_PATH_Q14],phase,ctr)
145 gv_check("idle pose still blends in after stopping",ms[NXA_M_IW]>0,ctr)
146 z=0;while z<HG_TPS*4 {wc_cast_blend_tick(base,0);z=z+1}
147 gv_check_eq("positive idle blend reaches exact fixed-point target",ms[NXA_M_IW],NA_Q12,ctr)
148 gv_check_eq("morph bank starts after bounded contact storage",O_WCM,CRAFT_EXT_TOTAL,ctr)
149 gv_check("derived page requirement covers contact map",WASM_PAGES_REQ*WASM_PAGE_BYTES>=CRAFT_EXT_TOTAL,ctr)
150 var moved:i64=0
151 z=0;while z<HG_TPS {step_impl(base);if mob_spd_q8i(base,0)>0 {moved=moved+1};z=z+1}
152 gv_check("real Beach ticks produce representative native movement",moved>0,ctr)
153 gv_kv("real_moving_ticks" as *u8,moved)
154 gv_kv("contact_phase_ms" as *u8,wc_gait_time(base,0))
155 gv_kv("required_pages" as *u8,WASM_PAGES_REQ)
156 let generation:*i64=(base+O_NXA_GAIT_GENERATION) as *i64
157 let generation_before:i64=generation[0]
158 gv_check_eq("same asset reingest succeeds",wc_nxa_ingest(base,nj,w[ae+2],w[pe+2]),0,ctr)
159 gv_check_eq("reingest increments calibration receipt",generation[0],generation_before+1,ctr)
160 gv_check_eq("reingest invalidates prior contact fit",wc_gait_header(base)[7],0,ctr)
161 gv_check_eq("reingested clip calibrates again",wc_gait_calibrate(base),0,ctr)
162 gv_check_eq("calibration preserves ingest receipt",generation[0],generation_before+1,ctr)
163 let saved_landmark:i64=targetfeet[1]
164 targetfeet[1]=(0-9223372036854775807)-1
165 gv_check_eq("minimum signed landmark refuses before arithmetic",wc_gait_calibrate(base),0-86,ctr)
166 targetfeet[1]=saved_landmark
167 let saved_rotation:i64=targetfeet[7]
168 targetfeet[7]=(0-9223372036854775807)-1
169 gv_check_eq("minimum signed rotation refuses before arithmetic",wc_gait_calibrate(base),0-86,ctr)
170 targetfeet[7]=saved_rotation
171 gv_check_eq("valid fit recovers after refused input",wc_gait_calibrate(base),0,ctr)
172 let fit_count:i64=header[0]
173 gv_check_eq("table capacity below actual key count refuses",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,fit_count-1,scr),0-83,ctr)
174 let saved_order:i64=order[feet[0]]
175 order[feet[0]]=0
176 gv_check_eq("unordered track refuses distance calibration",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0-82,ctr)
177 order[feet[0]]=saved_order
178 gv_check_eq("full capacity ordered fit recovers",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0,ctr)
179 gv_check_eq("nested fitter scratch respects 512 byte extent",scr[NA_SCR_W],139,ctr)
180 let count:i64=header[0];let total:i64=header[1]
181 feet[0]=0-1
182 gv_check_eq("invalid foot refuses calibration",na_gait_fit(anim,idx,order,skel,nj,rv,feet,header,table,cap,scr),0-81,ctr)
183 gv_check_eq("failed calibration clears validity",header[7],0,ctr)
184 return gv_verdict("GAIT-ENGINE-T139" as *u8,ctr,"real served in-place clip; sole-derived distance map; contact labels remain inferred" as *u8)
185}