nmarshall commited on
Commit
01aefa2
·
1 Parent(s): d7fa9fd

qvm: relative pose publication

Browse files
docs/ASSET_PIPELINE_TODO.md CHANGED
@@ -667,3 +667,6 @@ Research progress: RE-662 [report](research/QVM_POSE_MOTION_YAW.md); remaining n
667
 
668
 
669
  Research progress: RE-663 [report](research/QVM_POSE_LEAN.md); remaining native/content/runtime/platform scope stays open.
 
 
 
 
667
 
668
 
669
  Research progress: RE-663 [report](research/QVM_POSE_LEAN.md); remaining native/content/runtime/platform scope stays open.
670
+
671
+
672
+ Research progress: RE-664 [report](research/QVM_POSE_PUBLICATION.md); remaining native/content/runtime/platform scope stays open.
docs/FINDINGS.md CHANGED
@@ -1013,3 +1013,6 @@ Bounded qagame paths recover bomb-plant/inactivity correction requests, direct f
1013
 
1014
 
1015
  **RE-663 — Pose pitch publication and lateral scratch arithmetic:** 32254 publishes animation-biased pitch, normalizes full velocity with a floating reciprocal and computes an unconsumed lateral scratch scalar. [Evidence](research/QVM_POSE_LEAN.md).
 
 
 
 
1013
 
1014
 
1015
  **RE-663 — Pose pitch publication and lateral scratch arithmetic:** 32254 publishes animation-biased pitch, normalizes full velocity with a floating reciprocal and computes an unconsumed lateral scratch scalar. [Evidence](research/QVM_POSE_LEAN.md).
1016
+
1017
+
1018
+ **RE-664 — Relative pose angle publication and numeric flag sum:** 32254 wraps head−body and body−legs independently into inclusive±180, publishes unchanged legs and writes a shifted numeric flag sum through an optional pointer. [Evidence](research/QVM_POSE_PUBLICATION.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -990,3 +990,6 @@ Research progress: RE-662 [report](research/QVM_POSE_MOTION_YAW.md); remaining n
990
 
991
 
992
  Research progress: RE-663 [report](research/QVM_POSE_LEAN.md); remaining native/content/runtime/platform scope stays open.
 
 
 
 
990
 
991
 
992
  Research progress: RE-663 [report](research/QVM_POSE_LEAN.md); remaining native/content/runtime/platform scope stays open.
993
+
994
+
995
+ Research progress: RE-664 [report](research/QVM_POSE_PUBLICATION.md); remaining native/content/runtime/platform scope stays open.
docs/RESEARCH_LEDGER.md CHANGED
@@ -977,3 +977,8 @@ One direct append caller156173 and three direct reset callers174399/203011/21963
977
  ## 2026-10-20 — RE-663 Pose pitch publication and lateral scratch arithmetic (separate task commit)
978
 
979
  32254 publishes animation-biased pitch, normalizes full velocity with a floating reciprocal and computes an unconsumed lateral scratch scalar. 96 fixtures independently check pitch gating/bias, full3D float32 normalization, scaled length, basis/dot arithmetic and zero-velocity call suppression. Full suite: 1117 tests pass. Report regenerates byte-identically (300961 bytes). Storage/filter, links and whitespace checks pass. No assets/Rust runtime/shared VM evaluator changed; native/reference/legal/full platform scope remains open.
 
 
 
 
 
 
977
  ## 2026-10-20 — RE-663 Pose pitch publication and lateral scratch arithmetic (separate task commit)
978
 
979
  32254 publishes animation-biased pitch, normalizes full velocity with a floating reciprocal and computes an unconsumed lateral scratch scalar. 96 fixtures independently check pitch gating/bias, full3D float32 normalization, scaled length, basis/dot arithmetic and zero-velocity call suppression. Full suite: 1117 tests pass. Report regenerates byte-identically (300961 bytes). Storage/filter, links and whitespace checks pass. No assets/Rust runtime/shared VM evaluator changed; native/reference/legal/full platform scope remains open.
980
+
981
+
982
+ ## 2026-10-20 — RE-664 Relative pose angle publication and numeric flag sum (separate task commit)
983
+
984
+ 32254 wraps head−body and body−legs independently into inclusive±180, publishes unchanged legs and writes a shifted numeric flag sum through an optional pointer. 24 fixtures check every output angle word, multi-turn/half-turn behavior, optional flags and signed shifts with synthetic nonboolean inputs. Full suite: 1121 tests pass. Report regenerates byte-identically (25220 bytes). Storage/filter, links and whitespace checks pass. No assets/Rust runtime/shared VM evaluator changed; native/reference/legal/full platform scope remains open.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1033,3 +1033,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1033
 
1034
 
1035
  - [x] RE-663 Pose pitch publication and lateral scratch arithmetic ([report](research/QVM_POSE_LEAN.md)).
 
 
 
 
1033
 
1034
 
1035
  - [x] RE-663 Pose pitch publication and lateral scratch arithmetic ([report](research/QVM_POSE_LEAN.md)).
1036
+
1037
+
1038
+ - [x] RE-664 Relative pose angle publication and numeric flag sum ([report](research/QVM_POSE_PUBLICATION.md)).
docs/research/QVM_POSE_PUBLICATION.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Relative pose angle publication and numeric flag sum
2
+
3
+ RE-664. Reproduce with `python3 scripts/analyze_qvm_pose_publication.py`; check with `python3 scripts/test_qvm_pose_publication.py`. The [machine report](qvm-pose-publication.json) retains source identity and bounded fixtures.
4
+
5
+ Actual33168–33388 writes flag96+(flag92>>1)+(flag100>>2) when argument48 is nonnull. This is addition of arithmetic right shifts, not a bitwise packed mask. It subtracts body from head and legs from body, repeatedly wraps each relative component with strict±180 comparisons, then publishes legs/body-relative/head-relative at output0/12/24. Absolute legs remain unnormalized. The source has no child calls here. Nonboolean flags are deliberate arithmetic probes, not asserted legal states; no asset-specific skeleton names or renderer conventions are inferred.
6
+
7
+ No original executable/full QVM/native collision/physics/rendering executes. Native responses and legal input domains are supplied or unverified where stated; full runtime/macOS/Linux Rust/Bevy/Solari gameplay remains open.
docs/research/README.md CHANGED
@@ -591,3 +591,6 @@ The extension collector adds five focused tests for native tail calls, command-r
591
 
592
 
593
  [RE-663: Pose pitch publication and lateral scratch arithmetic](QVM_POSE_LEAN.md). Reproduce with `python3 scripts/analyze_qvm_pose_lean.py`; check with `python3 scripts/test_qvm_pose_lean.py`.
 
 
 
 
591
 
592
 
593
  [RE-663: Pose pitch publication and lateral scratch arithmetic](QVM_POSE_LEAN.md). Reproduce with `python3 scripts/analyze_qvm_pose_lean.py`; check with `python3 scripts/test_qvm_pose_lean.py`.
594
+
595
+
596
+ [RE-664: Relative pose angle publication and numeric flag sum](QVM_POSE_PUBLICATION.md). Reproduce with `python3 scripts/analyze_qvm_pose_publication.py`; check with `python3 scripts/test_qvm_pose_publication.py`.
docs/research/qvm-pose-publication.json ADDED
@@ -0,0 +1,1313 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Actual33168\u201333388, no children. Arbitrary finite triplets and synthetic nonboolean flags expose exact numeric shift/add behavior, not asserted legal controller states. No model/skeleton naming inferred.",
3
+ "probes": [
4
+ {
5
+ "execution": {
6
+ "byte_writes": [],
7
+ "calls": [],
8
+ "children": [],
9
+ "return": null,
10
+ "trace": null,
11
+ "trace_length": 134,
12
+ "trace_sha256": "90180e3ec897e378cd585855f733ccbc30b24056c9c59cabd2f6f43008be3da6"
13
+ },
14
+ "final_flag": null,
15
+ "flag_pointer": 0,
16
+ "flags": [
17
+ 0,
18
+ 0,
19
+ 0
20
+ ],
21
+ "initial_flag": null,
22
+ "initial_head_body_legs": [
23
+ [
24
+ 1092616192,
25
+ 1101004800,
26
+ 1106247680
27
+ ],
28
+ [
29
+ 1084227584,
30
+ 1092616192,
31
+ 1097859072
32
+ ],
33
+ [
34
+ 0,
35
+ 1084227584,
36
+ 1092616192
37
+ ]
38
+ ],
39
+ "output_legs_body_head": [
40
+ [
41
+ 0,
42
+ 1084227584,
43
+ 1092616192
44
+ ],
45
+ [
46
+ 1084227584,
47
+ 1084227584,
48
+ 1084227584
49
+ ],
50
+ [
51
+ 1084227584,
52
+ 1092616192,
53
+ 1097859072
54
+ ]
55
+ ]
56
+ },
57
+ {
58
+ "execution": {
59
+ "byte_writes": [],
60
+ "calls": [],
61
+ "children": [],
62
+ "return": null,
63
+ "trace": null,
64
+ "trace_length": 149,
65
+ "trace_sha256": "96adc4ca805205db85eb766a6175aa32d71dd4ea44d4d5c7ca2f8cd3d85d851d"
66
+ },
67
+ "final_flag": 0,
68
+ "flag_pointer": 2013598720,
69
+ "flags": [
70
+ 0,
71
+ 0,
72
+ 0
73
+ ],
74
+ "initial_flag": 11259375,
75
+ "initial_head_body_legs": [
76
+ [
77
+ 1092616192,
78
+ 1101004800,
79
+ 1106247680
80
+ ],
81
+ [
82
+ 1084227584,
83
+ 1092616192,
84
+ 1097859072
85
+ ],
86
+ [
87
+ 0,
88
+ 1084227584,
89
+ 1092616192
90
+ ]
91
+ ],
92
+ "output_legs_body_head": [
93
+ [
94
+ 0,
95
+ 1084227584,
96
+ 1092616192
97
+ ],
98
+ [
99
+ 1084227584,
100
+ 1084227584,
101
+ 1084227584
102
+ ],
103
+ [
104
+ 1084227584,
105
+ 1092616192,
106
+ 1097859072
107
+ ]
108
+ ]
109
+ },
110
+ {
111
+ "execution": {
112
+ "byte_writes": [],
113
+ "calls": [],
114
+ "children": [],
115
+ "return": null,
116
+ "trace": null,
117
+ "trace_length": 134,
118
+ "trace_sha256": "90180e3ec897e378cd585855f733ccbc30b24056c9c59cabd2f6f43008be3da6"
119
+ },
120
+ "final_flag": null,
121
+ "flag_pointer": 0,
122
+ "flags": [
123
+ 1,
124
+ 1,
125
+ 1
126
+ ],
127
+ "initial_flag": null,
128
+ "initial_head_body_legs": [
129
+ [
130
+ 1092616192,
131
+ 1101004800,
132
+ 1106247680
133
+ ],
134
+ [
135
+ 1084227584,
136
+ 1092616192,
137
+ 1097859072
138
+ ],
139
+ [
140
+ 0,
141
+ 1084227584,
142
+ 1092616192
143
+ ]
144
+ ],
145
+ "output_legs_body_head": [
146
+ [
147
+ 0,
148
+ 1084227584,
149
+ 1092616192
150
+ ],
151
+ [
152
+ 1084227584,
153
+ 1084227584,
154
+ 1084227584
155
+ ],
156
+ [
157
+ 1084227584,
158
+ 1092616192,
159
+ 1097859072
160
+ ]
161
+ ]
162
+ },
163
+ {
164
+ "execution": {
165
+ "byte_writes": [],
166
+ "calls": [],
167
+ "children": [],
168
+ "return": null,
169
+ "trace": null,
170
+ "trace_length": 149,
171
+ "trace_sha256": "96adc4ca805205db85eb766a6175aa32d71dd4ea44d4d5c7ca2f8cd3d85d851d"
172
+ },
173
+ "final_flag": 1,
174
+ "flag_pointer": 2013598720,
175
+ "flags": [
176
+ 1,
177
+ 1,
178
+ 1
179
+ ],
180
+ "initial_flag": 11259375,
181
+ "initial_head_body_legs": [
182
+ [
183
+ 1092616192,
184
+ 1101004800,
185
+ 1106247680
186
+ ],
187
+ [
188
+ 1084227584,
189
+ 1092616192,
190
+ 1097859072
191
+ ],
192
+ [
193
+ 0,
194
+ 1084227584,
195
+ 1092616192
196
+ ]
197
+ ],
198
+ "output_legs_body_head": [
199
+ [
200
+ 0,
201
+ 1084227584,
202
+ 1092616192
203
+ ],
204
+ [
205
+ 1084227584,
206
+ 1084227584,
207
+ 1084227584
208
+ ],
209
+ [
210
+ 1084227584,
211
+ 1092616192,
212
+ 1097859072
213
+ ]
214
+ ]
215
+ },
216
+ {
217
+ "execution": {
218
+ "byte_writes": [],
219
+ "calls": [],
220
+ "children": [],
221
+ "return": null,
222
+ "trace": null,
223
+ "trace_length": 134,
224
+ "trace_sha256": "90180e3ec897e378cd585855f733ccbc30b24056c9c59cabd2f6f43008be3da6"
225
+ },
226
+ "final_flag": null,
227
+ "flag_pointer": 0,
228
+ "flags": [
229
+ 7,
230
+ -4,
231
+ 16
232
+ ],
233
+ "initial_flag": null,
234
+ "initial_head_body_legs": [
235
+ [
236
+ 1092616192,
237
+ 1101004800,
238
+ 1106247680
239
+ ],
240
+ [
241
+ 1084227584,
242
+ 1092616192,
243
+ 1097859072
244
+ ],
245
+ [
246
+ 0,
247
+ 1084227584,
248
+ 1092616192
249
+ ]
250
+ ],
251
+ "output_legs_body_head": [
252
+ [
253
+ 0,
254
+ 1084227584,
255
+ 1092616192
256
+ ],
257
+ [
258
+ 1084227584,
259
+ 1084227584,
260
+ 1084227584
261
+ ],
262
+ [
263
+ 1084227584,
264
+ 1092616192,
265
+ 1097859072
266
+ ]
267
+ ]
268
+ },
269
+ {
270
+ "execution": {
271
+ "byte_writes": [],
272
+ "calls": [],
273
+ "children": [],
274
+ "return": null,
275
+ "trace": null,
276
+ "trace_length": 149,
277
+ "trace_sha256": "96adc4ca805205db85eb766a6175aa32d71dd4ea44d4d5c7ca2f8cd3d85d851d"
278
+ },
279
+ "final_flag": 3,
280
+ "flag_pointer": 2013598720,
281
+ "flags": [
282
+ 7,
283
+ -4,
284
+ 16
285
+ ],
286
+ "initial_flag": 11259375,
287
+ "initial_head_body_legs": [
288
+ [
289
+ 1092616192,
290
+ 1101004800,
291
+ 1106247680
292
+ ],
293
+ [
294
+ 1084227584,
295
+ 1092616192,
296
+ 1097859072
297
+ ],
298
+ [
299
+ 0,
300
+ 1084227584,
301
+ 1092616192
302
+ ]
303
+ ],
304
+ "output_legs_body_head": [
305
+ [
306
+ 0,
307
+ 1084227584,
308
+ 1092616192
309
+ ],
310
+ [
311
+ 1084227584,
312
+ 1084227584,
313
+ 1084227584
314
+ ],
315
+ [
316
+ 1084227584,
317
+ 1092616192,
318
+ 1097859072
319
+ ]
320
+ ]
321
+ },
322
+ {
323
+ "execution": {
324
+ "byte_writes": [],
325
+ "calls": [],
326
+ "children": [],
327
+ "return": null,
328
+ "trace": null,
329
+ "trace_length": 134,
330
+ "trace_sha256": "90180e3ec897e378cd585855f733ccbc30b24056c9c59cabd2f6f43008be3da6"
331
+ },
332
+ "final_flag": null,
333
+ "flag_pointer": 0,
334
+ "flags": [
335
+ -1,
336
+ 2,
337
+ -8
338
+ ],
339
+ "initial_flag": null,
340
+ "initial_head_body_legs": [
341
+ [
342
+ 1092616192,
343
+ 1101004800,
344
+ 1106247680
345
+ ],
346
+ [
347
+ 1084227584,
348
+ 1092616192,
349
+ 1097859072
350
+ ],
351
+ [
352
+ 0,
353
+ 1084227584,
354
+ 1092616192
355
+ ]
356
+ ],
357
+ "output_legs_body_head": [
358
+ [
359
+ 0,
360
+ 1084227584,
361
+ 1092616192
362
+ ],
363
+ [
364
+ 1084227584,
365
+ 1084227584,
366
+ 1084227584
367
+ ],
368
+ [
369
+ 1084227584,
370
+ 1092616192,
371
+ 1097859072
372
+ ]
373
+ ]
374
+ },
375
+ {
376
+ "execution": {
377
+ "byte_writes": [],
378
+ "calls": [],
379
+ "children": [],
380
+ "return": null,
381
+ "trace": null,
382
+ "trace_length": 149,
383
+ "trace_sha256": "96adc4ca805205db85eb766a6175aa32d71dd4ea44d4d5c7ca2f8cd3d85d851d"
384
+ },
385
+ "final_flag": -1,
386
+ "flag_pointer": 2013598720,
387
+ "flags": [
388
+ -1,
389
+ 2,
390
+ -8
391
+ ],
392
+ "initial_flag": 11259375,
393
+ "initial_head_body_legs": [
394
+ [
395
+ 1092616192,
396
+ 1101004800,
397
+ 1106247680
398
+ ],
399
+ [
400
+ 1084227584,
401
+ 1092616192,
402
+ 1097859072
403
+ ],
404
+ [
405
+ 0,
406
+ 1084227584,
407
+ 1092616192
408
+ ]
409
+ ],
410
+ "output_legs_body_head": [
411
+ [
412
+ 0,
413
+ 1084227584,
414
+ 1092616192
415
+ ],
416
+ [
417
+ 1084227584,
418
+ 1084227584,
419
+ 1084227584
420
+ ],
421
+ [
422
+ 1084227584,
423
+ 1092616192,
424
+ 1097859072
425
+ ]
426
+ ]
427
+ },
428
+ {
429
+ "execution": {
430
+ "byte_writes": [],
431
+ "calls": [],
432
+ "children": [],
433
+ "return": null,
434
+ "trace": null,
435
+ "trace_length": 154,
436
+ "trace_sha256": "054ccc9632bb3cf717b3d2d336f8054f51914c316d4093849699bce7b23410c8"
437
+ },
438
+ "final_flag": null,
439
+ "flag_pointer": 0,
440
+ "flags": [
441
+ 0,
442
+ 0,
443
+ 0
444
+ ],
445
+ "initial_flag": null,
446
+ "initial_head_body_legs": [
447
+ [
448
+ 1127481344,
449
+ 3274964992,
450
+ 1141309440
451
+ ],
452
+ [
453
+ 0,
454
+ 0,
455
+ 0
456
+ ],
457
+ [
458
+ 3274964992,
459
+ 1127481344,
460
+ 3288793088
461
+ ]
462
+ ],
463
+ "output_legs_body_head": [
464
+ [
465
+ 3274964992,
466
+ 1127481344,
467
+ 3288793088
468
+ ],
469
+ [
470
+ 1127481344,
471
+ 3274964992,
472
+ 1127481344
473
+ ],
474
+ [
475
+ 1127481344,
476
+ 3274964992,
477
+ 1127481344
478
+ ]
479
+ ]
480
+ },
481
+ {
482
+ "execution": {
483
+ "byte_writes": [],
484
+ "calls": [],
485
+ "children": [],
486
+ "return": null,
487
+ "trace": null,
488
+ "trace_length": 169,
489
+ "trace_sha256": "71258c6433b70b65835a594efcc8c1a79f8d076c8ec04762b9664d144d5a5378"
490
+ },
491
+ "final_flag": 0,
492
+ "flag_pointer": 2013598720,
493
+ "flags": [
494
+ 0,
495
+ 0,
496
+ 0
497
+ ],
498
+ "initial_flag": 11259375,
499
+ "initial_head_body_legs": [
500
+ [
501
+ 1127481344,
502
+ 3274964992,
503
+ 1141309440
504
+ ],
505
+ [
506
+ 0,
507
+ 0,
508
+ 0
509
+ ],
510
+ [
511
+ 3274964992,
512
+ 1127481344,
513
+ 3288793088
514
+ ]
515
+ ],
516
+ "output_legs_body_head": [
517
+ [
518
+ 3274964992,
519
+ 1127481344,
520
+ 3288793088
521
+ ],
522
+ [
523
+ 1127481344,
524
+ 3274964992,
525
+ 1127481344
526
+ ],
527
+ [
528
+ 1127481344,
529
+ 3274964992,
530
+ 1127481344
531
+ ]
532
+ ]
533
+ },
534
+ {
535
+ "execution": {
536
+ "byte_writes": [],
537
+ "calls": [],
538
+ "children": [],
539
+ "return": null,
540
+ "trace": null,
541
+ "trace_length": 154,
542
+ "trace_sha256": "054ccc9632bb3cf717b3d2d336f8054f51914c316d4093849699bce7b23410c8"
543
+ },
544
+ "final_flag": null,
545
+ "flag_pointer": 0,
546
+ "flags": [
547
+ 1,
548
+ 1,
549
+ 1
550
+ ],
551
+ "initial_flag": null,
552
+ "initial_head_body_legs": [
553
+ [
554
+ 1127481344,
555
+ 3274964992,
556
+ 1141309440
557
+ ],
558
+ [
559
+ 0,
560
+ 0,
561
+ 0
562
+ ],
563
+ [
564
+ 3274964992,
565
+ 1127481344,
566
+ 3288793088
567
+ ]
568
+ ],
569
+ "output_legs_body_head": [
570
+ [
571
+ 3274964992,
572
+ 1127481344,
573
+ 3288793088
574
+ ],
575
+ [
576
+ 1127481344,
577
+ 3274964992,
578
+ 1127481344
579
+ ],
580
+ [
581
+ 1127481344,
582
+ 3274964992,
583
+ 1127481344
584
+ ]
585
+ ]
586
+ },
587
+ {
588
+ "execution": {
589
+ "byte_writes": [],
590
+ "calls": [],
591
+ "children": [],
592
+ "return": null,
593
+ "trace": null,
594
+ "trace_length": 169,
595
+ "trace_sha256": "71258c6433b70b65835a594efcc8c1a79f8d076c8ec04762b9664d144d5a5378"
596
+ },
597
+ "final_flag": 1,
598
+ "flag_pointer": 2013598720,
599
+ "flags": [
600
+ 1,
601
+ 1,
602
+ 1
603
+ ],
604
+ "initial_flag": 11259375,
605
+ "initial_head_body_legs": [
606
+ [
607
+ 1127481344,
608
+ 3274964992,
609
+ 1141309440
610
+ ],
611
+ [
612
+ 0,
613
+ 0,
614
+ 0
615
+ ],
616
+ [
617
+ 3274964992,
618
+ 1127481344,
619
+ 3288793088
620
+ ]
621
+ ],
622
+ "output_legs_body_head": [
623
+ [
624
+ 3274964992,
625
+ 1127481344,
626
+ 3288793088
627
+ ],
628
+ [
629
+ 1127481344,
630
+ 3274964992,
631
+ 1127481344
632
+ ],
633
+ [
634
+ 1127481344,
635
+ 3274964992,
636
+ 1127481344
637
+ ]
638
+ ]
639
+ },
640
+ {
641
+ "execution": {
642
+ "byte_writes": [],
643
+ "calls": [],
644
+ "children": [],
645
+ "return": null,
646
+ "trace": null,
647
+ "trace_length": 154,
648
+ "trace_sha256": "054ccc9632bb3cf717b3d2d336f8054f51914c316d4093849699bce7b23410c8"
649
+ },
650
+ "final_flag": null,
651
+ "flag_pointer": 0,
652
+ "flags": [
653
+ 7,
654
+ -4,
655
+ 16
656
+ ],
657
+ "initial_flag": null,
658
+ "initial_head_body_legs": [
659
+ [
660
+ 1127481344,
661
+ 3274964992,
662
+ 1141309440
663
+ ],
664
+ [
665
+ 0,
666
+ 0,
667
+ 0
668
+ ],
669
+ [
670
+ 3274964992,
671
+ 1127481344,
672
+ 3288793088
673
+ ]
674
+ ],
675
+ "output_legs_body_head": [
676
+ [
677
+ 3274964992,
678
+ 1127481344,
679
+ 3288793088
680
+ ],
681
+ [
682
+ 1127481344,
683
+ 3274964992,
684
+ 1127481344
685
+ ],
686
+ [
687
+ 1127481344,
688
+ 3274964992,
689
+ 1127481344
690
+ ]
691
+ ]
692
+ },
693
+ {
694
+ "execution": {
695
+ "byte_writes": [],
696
+ "calls": [],
697
+ "children": [],
698
+ "return": null,
699
+ "trace": null,
700
+ "trace_length": 169,
701
+ "trace_sha256": "71258c6433b70b65835a594efcc8c1a79f8d076c8ec04762b9664d144d5a5378"
702
+ },
703
+ "final_flag": 3,
704
+ "flag_pointer": 2013598720,
705
+ "flags": [
706
+ 7,
707
+ -4,
708
+ 16
709
+ ],
710
+ "initial_flag": 11259375,
711
+ "initial_head_body_legs": [
712
+ [
713
+ 1127481344,
714
+ 3274964992,
715
+ 1141309440
716
+ ],
717
+ [
718
+ 0,
719
+ 0,
720
+ 0
721
+ ],
722
+ [
723
+ 3274964992,
724
+ 1127481344,
725
+ 3288793088
726
+ ]
727
+ ],
728
+ "output_legs_body_head": [
729
+ [
730
+ 3274964992,
731
+ 1127481344,
732
+ 3288793088
733
+ ],
734
+ [
735
+ 1127481344,
736
+ 3274964992,
737
+ 1127481344
738
+ ],
739
+ [
740
+ 1127481344,
741
+ 3274964992,
742
+ 1127481344
743
+ ]
744
+ ]
745
+ },
746
+ {
747
+ "execution": {
748
+ "byte_writes": [],
749
+ "calls": [],
750
+ "children": [],
751
+ "return": null,
752
+ "trace": null,
753
+ "trace_length": 154,
754
+ "trace_sha256": "054ccc9632bb3cf717b3d2d336f8054f51914c316d4093849699bce7b23410c8"
755
+ },
756
+ "final_flag": null,
757
+ "flag_pointer": 0,
758
+ "flags": [
759
+ -1,
760
+ 2,
761
+ -8
762
+ ],
763
+ "initial_flag": null,
764
+ "initial_head_body_legs": [
765
+ [
766
+ 1127481344,
767
+ 3274964992,
768
+ 1141309440
769
+ ],
770
+ [
771
+ 0,
772
+ 0,
773
+ 0
774
+ ],
775
+ [
776
+ 3274964992,
777
+ 1127481344,
778
+ 3288793088
779
+ ]
780
+ ],
781
+ "output_legs_body_head": [
782
+ [
783
+ 3274964992,
784
+ 1127481344,
785
+ 3288793088
786
+ ],
787
+ [
788
+ 1127481344,
789
+ 3274964992,
790
+ 1127481344
791
+ ],
792
+ [
793
+ 1127481344,
794
+ 3274964992,
795
+ 1127481344
796
+ ]
797
+ ]
798
+ },
799
+ {
800
+ "execution": {
801
+ "byte_writes": [],
802
+ "calls": [],
803
+ "children": [],
804
+ "return": null,
805
+ "trace": null,
806
+ "trace_length": 169,
807
+ "trace_sha256": "71258c6433b70b65835a594efcc8c1a79f8d076c8ec04762b9664d144d5a5378"
808
+ },
809
+ "final_flag": -1,
810
+ "flag_pointer": 2013598720,
811
+ "flags": [
812
+ -1,
813
+ 2,
814
+ -8
815
+ ],
816
+ "initial_flag": 11259375,
817
+ "initial_head_body_legs": [
818
+ [
819
+ 1127481344,
820
+ 3274964992,
821
+ 1141309440
822
+ ],
823
+ [
824
+ 0,
825
+ 0,
826
+ 0
827
+ ],
828
+ [
829
+ 3274964992,
830
+ 1127481344,
831
+ 3288793088
832
+ ]
833
+ ],
834
+ "output_legs_body_head": [
835
+ [
836
+ 3274964992,
837
+ 1127481344,
838
+ 3288793088
839
+ ],
840
+ [
841
+ 1127481344,
842
+ 3274964992,
843
+ 1127481344
844
+ ],
845
+ [
846
+ 1127481344,
847
+ 3274964992,
848
+ 1127481344
849
+ ]
850
+ ]
851
+ },
852
+ {
853
+ "execution": {
854
+ "byte_writes": [],
855
+ "calls": [],
856
+ "children": [],
857
+ "return": null,
858
+ "trace": null,
859
+ "trace_length": 354,
860
+ "trace_sha256": "6f01df392ce6a43be58dfbcd018cc97f1020fda046ddbaff1f42a38b1d6bb4f2"
861
+ },
862
+ "final_flag": null,
863
+ "flag_pointer": 0,
864
+ "flags": [
865
+ 0,
866
+ 0,
867
+ 0
868
+ ],
869
+ "initial_flag": null,
870
+ "initial_head_body_legs": [
871
+ [
872
+ 1149698048,
873
+ 3297181696,
874
+ 1144274944
875
+ ],
876
+ [
877
+ 3291742208,
878
+ 1144258560,
879
+ 3291758592
880
+ ],
881
+ [
882
+ 1137180672,
883
+ 3284664320,
884
+ 0
885
+ ]
886
+ ],
887
+ "output_legs_body_head": [
888
+ [
889
+ 1137180672,
890
+ 3284664320,
891
+ 0
892
+ ],
893
+ [
894
+ 3256877056,
895
+ 1109393408,
896
+ 3212836864
897
+ ],
898
+ [
899
+ 0,
900
+ 0,
901
+ 1073741824
902
+ ]
903
+ ]
904
+ },
905
+ {
906
+ "execution": {
907
+ "byte_writes": [],
908
+ "calls": [],
909
+ "children": [],
910
+ "return": null,
911
+ "trace": null,
912
+ "trace_length": 369,
913
+ "trace_sha256": "aa14b647c039f1a697901dc27a3cc1a1aa8f3caabda5b0ce9d6b561697dad91f"
914
+ },
915
+ "final_flag": 0,
916
+ "flag_pointer": 2013598720,
917
+ "flags": [
918
+ 0,
919
+ 0,
920
+ 0
921
+ ],
922
+ "initial_flag": 11259375,
923
+ "initial_head_body_legs": [
924
+ [
925
+ 1149698048,
926
+ 3297181696,
927
+ 1144274944
928
+ ],
929
+ [
930
+ 3291742208,
931
+ 1144258560,
932
+ 3291758592
933
+ ],
934
+ [
935
+ 1137180672,
936
+ 3284664320,
937
+ 0
938
+ ]
939
+ ],
940
+ "output_legs_body_head": [
941
+ [
942
+ 1137180672,
943
+ 3284664320,
944
+ 0
945
+ ],
946
+ [
947
+ 3256877056,
948
+ 1109393408,
949
+ 3212836864
950
+ ],
951
+ [
952
+ 0,
953
+ 0,
954
+ 1073741824
955
+ ]
956
+ ]
957
+ },
958
+ {
959
+ "execution": {
960
+ "byte_writes": [],
961
+ "calls": [],
962
+ "children": [],
963
+ "return": null,
964
+ "trace": null,
965
+ "trace_length": 354,
966
+ "trace_sha256": "6f01df392ce6a43be58dfbcd018cc97f1020fda046ddbaff1f42a38b1d6bb4f2"
967
+ },
968
+ "final_flag": null,
969
+ "flag_pointer": 0,
970
+ "flags": [
971
+ 1,
972
+ 1,
973
+ 1
974
+ ],
975
+ "initial_flag": null,
976
+ "initial_head_body_legs": [
977
+ [
978
+ 1149698048,
979
+ 3297181696,
980
+ 1144274944
981
+ ],
982
+ [
983
+ 3291742208,
984
+ 1144258560,
985
+ 3291758592
986
+ ],
987
+ [
988
+ 1137180672,
989
+ 3284664320,
990
+ 0
991
+ ]
992
+ ],
993
+ "output_legs_body_head": [
994
+ [
995
+ 1137180672,
996
+ 3284664320,
997
+ 0
998
+ ],
999
+ [
1000
+ 3256877056,
1001
+ 1109393408,
1002
+ 3212836864
1003
+ ],
1004
+ [
1005
+ 0,
1006
+ 0,
1007
+ 1073741824
1008
+ ]
1009
+ ]
1010
+ },
1011
+ {
1012
+ "execution": {
1013
+ "byte_writes": [],
1014
+ "calls": [],
1015
+ "children": [],
1016
+ "return": null,
1017
+ "trace": null,
1018
+ "trace_length": 369,
1019
+ "trace_sha256": "aa14b647c039f1a697901dc27a3cc1a1aa8f3caabda5b0ce9d6b561697dad91f"
1020
+ },
1021
+ "final_flag": 1,
1022
+ "flag_pointer": 2013598720,
1023
+ "flags": [
1024
+ 1,
1025
+ 1,
1026
+ 1
1027
+ ],
1028
+ "initial_flag": 11259375,
1029
+ "initial_head_body_legs": [
1030
+ [
1031
+ 1149698048,
1032
+ 3297181696,
1033
+ 1144274944
1034
+ ],
1035
+ [
1036
+ 3291742208,
1037
+ 1144258560,
1038
+ 3291758592
1039
+ ],
1040
+ [
1041
+ 1137180672,
1042
+ 3284664320,
1043
+ 0
1044
+ ]
1045
+ ],
1046
+ "output_legs_body_head": [
1047
+ [
1048
+ 1137180672,
1049
+ 3284664320,
1050
+ 0
1051
+ ],
1052
+ [
1053
+ 3256877056,
1054
+ 1109393408,
1055
+ 3212836864
1056
+ ],
1057
+ [
1058
+ 0,
1059
+ 0,
1060
+ 1073741824
1061
+ ]
1062
+ ]
1063
+ },
1064
+ {
1065
+ "execution": {
1066
+ "byte_writes": [],
1067
+ "calls": [],
1068
+ "children": [],
1069
+ "return": null,
1070
+ "trace": null,
1071
+ "trace_length": 354,
1072
+ "trace_sha256": "6f01df392ce6a43be58dfbcd018cc97f1020fda046ddbaff1f42a38b1d6bb4f2"
1073
+ },
1074
+ "final_flag": null,
1075
+ "flag_pointer": 0,
1076
+ "flags": [
1077
+ 7,
1078
+ -4,
1079
+ 16
1080
+ ],
1081
+ "initial_flag": null,
1082
+ "initial_head_body_legs": [
1083
+ [
1084
+ 1149698048,
1085
+ 3297181696,
1086
+ 1144274944
1087
+ ],
1088
+ [
1089
+ 3291742208,
1090
+ 1144258560,
1091
+ 3291758592
1092
+ ],
1093
+ [
1094
+ 1137180672,
1095
+ 3284664320,
1096
+ 0
1097
+ ]
1098
+ ],
1099
+ "output_legs_body_head": [
1100
+ [
1101
+ 1137180672,
1102
+ 3284664320,
1103
+ 0
1104
+ ],
1105
+ [
1106
+ 3256877056,
1107
+ 1109393408,
1108
+ 3212836864
1109
+ ],
1110
+ [
1111
+ 0,
1112
+ 0,
1113
+ 1073741824
1114
+ ]
1115
+ ]
1116
+ },
1117
+ {
1118
+ "execution": {
1119
+ "byte_writes": [],
1120
+ "calls": [],
1121
+ "children": [],
1122
+ "return": null,
1123
+ "trace": null,
1124
+ "trace_length": 369,
1125
+ "trace_sha256": "aa14b647c039f1a697901dc27a3cc1a1aa8f3caabda5b0ce9d6b561697dad91f"
1126
+ },
1127
+ "final_flag": 3,
1128
+ "flag_pointer": 2013598720,
1129
+ "flags": [
1130
+ 7,
1131
+ -4,
1132
+ 16
1133
+ ],
1134
+ "initial_flag": 11259375,
1135
+ "initial_head_body_legs": [
1136
+ [
1137
+ 1149698048,
1138
+ 3297181696,
1139
+ 1144274944
1140
+ ],
1141
+ [
1142
+ 3291742208,
1143
+ 1144258560,
1144
+ 3291758592
1145
+ ],
1146
+ [
1147
+ 1137180672,
1148
+ 3284664320,
1149
+ 0
1150
+ ]
1151
+ ],
1152
+ "output_legs_body_head": [
1153
+ [
1154
+ 1137180672,
1155
+ 3284664320,
1156
+ 0
1157
+ ],
1158
+ [
1159
+ 3256877056,
1160
+ 1109393408,
1161
+ 3212836864
1162
+ ],
1163
+ [
1164
+ 0,
1165
+ 0,
1166
+ 1073741824
1167
+ ]
1168
+ ]
1169
+ },
1170
+ {
1171
+ "execution": {
1172
+ "byte_writes": [],
1173
+ "calls": [],
1174
+ "children": [],
1175
+ "return": null,
1176
+ "trace": null,
1177
+ "trace_length": 354,
1178
+ "trace_sha256": "6f01df392ce6a43be58dfbcd018cc97f1020fda046ddbaff1f42a38b1d6bb4f2"
1179
+ },
1180
+ "final_flag": null,
1181
+ "flag_pointer": 0,
1182
+ "flags": [
1183
+ -1,
1184
+ 2,
1185
+ -8
1186
+ ],
1187
+ "initial_flag": null,
1188
+ "initial_head_body_legs": [
1189
+ [
1190
+ 1149698048,
1191
+ 3297181696,
1192
+ 1144274944
1193
+ ],
1194
+ [
1195
+ 3291742208,
1196
+ 1144258560,
1197
+ 3291758592
1198
+ ],
1199
+ [
1200
+ 1137180672,
1201
+ 3284664320,
1202
+ 0
1203
+ ]
1204
+ ],
1205
+ "output_legs_body_head": [
1206
+ [
1207
+ 1137180672,
1208
+ 3284664320,
1209
+ 0
1210
+ ],
1211
+ [
1212
+ 3256877056,
1213
+ 1109393408,
1214
+ 3212836864
1215
+ ],
1216
+ [
1217
+ 0,
1218
+ 0,
1219
+ 1073741824
1220
+ ]
1221
+ ]
1222
+ },
1223
+ {
1224
+ "execution": {
1225
+ "byte_writes": [],
1226
+ "calls": [],
1227
+ "children": [],
1228
+ "return": null,
1229
+ "trace": null,
1230
+ "trace_length": 369,
1231
+ "trace_sha256": "aa14b647c039f1a697901dc27a3cc1a1aa8f3caabda5b0ce9d6b561697dad91f"
1232
+ },
1233
+ "final_flag": -1,
1234
+ "flag_pointer": 2013598720,
1235
+ "flags": [
1236
+ -1,
1237
+ 2,
1238
+ -8
1239
+ ],
1240
+ "initial_flag": 11259375,
1241
+ "initial_head_body_legs": [
1242
+ [
1243
+ 1149698048,
1244
+ 3297181696,
1245
+ 1144274944
1246
+ ],
1247
+ [
1248
+ 3291742208,
1249
+ 1144258560,
1250
+ 3291758592
1251
+ ],
1252
+ [
1253
+ 1137180672,
1254
+ 3284664320,
1255
+ 0
1256
+ ]
1257
+ ],
1258
+ "output_legs_body_head": [
1259
+ [
1260
+ 1137180672,
1261
+ 3284664320,
1262
+ 0
1263
+ ],
1264
+ [
1265
+ 3256877056,
1266
+ 1109393408,
1267
+ 3212836864
1268
+ ],
1269
+ [
1270
+ 0,
1271
+ 0,
1272
+ 1073741824
1273
+ ]
1274
+ ]
1275
+ }
1276
+ ],
1277
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1278
+ "source": {
1279
+ "archive": "zUrT43_qvm.pk3",
1280
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
1281
+ "member": {
1282
+ "bytes": 983300,
1283
+ "comment_hex": "",
1284
+ "compressed_bytes": 246560,
1285
+ "compression": 8,
1286
+ "crc32": "98ea1768",
1287
+ "create_system": 0,
1288
+ "create_version": 63,
1289
+ "date_time": [
1290
+ 2018,
1291
+ 6,
1292
+ 18,
1293
+ 22,
1294
+ 11,
1295
+ 50
1296
+ ],
1297
+ "directory": false,
1298
+ "entry_index": 2,
1299
+ "external_attr": 32,
1300
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
1301
+ "extract_version": 20,
1302
+ "flags": 0,
1303
+ "header_offset": 221309,
1304
+ "internal_attr": 0,
1305
+ "occurrence": 0,
1306
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
1307
+ "path": "vm/qagame.qvm",
1308
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1309
+ "type": "member",
1310
+ "volume": 0
1311
+ }
1312
+ }
1313
+ }
scripts/analyze_qvm_pose_publication.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Complete32254 relative-angle wrapping, numeric flag sum and output publication."""
3
+ import itertools
4
+ from pathlib import Path
5
+ from qvm_research_support import source,execute
6
+ from analyze_qvm_pose_prefix import LOCAL,OUT
7
+ from analyze_qvm_acceleration import word
8
+ from analyze_qvm_slide_prefix import vec
9
+ from analyze_qvm import write_json
10
+ FLAG=OUT+256
11
+
12
+ def publish(ins,m):
13
+ m=dict(m);initial=[vec(m,LOCAL+o) for o in [48,36,60]];flags=[m[LOCAL+o] for o in [92,96,100]];pointer=m[LOCAL+284];old=m.get(pointer)
14
+ m,_,e=execute(ins,33168,33389,m,(0,0,0),LOCAL)
15
+ return m,{'initial_head_body_legs':initial,'flags':flags,'flag_pointer':pointer,'initial_flag':old,'final_flag':m.get(pointer),'output_legs_body_head':[vec(m,m[LOCAL+264]+o) for o in [0,12,24]],'execution':e}
16
+
17
+ def main():
18
+ q,raw,h,ins=source();rows=[]
19
+ configurations=[[(10,20,30),(5,10,15),(0,5,10)],[(180,-180,540),(0,0,0),(-180,180,-540)],[(1080,-1080,721),(-720,720,-721),(400,-400,0)]]
20
+ for angles,flags,pointer in itertools.product(configurations,[(0,0,0),(1,1,1),(7,-4,16),(-1,2,-8)],[0,FLAG]):
21
+ m={LOCAL+264:OUT,LOCAL+284:pointer,FLAG:0xabcdef}
22
+ for base,v in zip([48,36,60],angles):
23
+ for j,x in enumerate(v):m[LOCAL+base+4*j]=word(x)
24
+ for o,v in zip([92,96,100],flags):m[LOCAL+o]=v
25
+ rows.append(publish(ins,m)[1])
26
+ write_json(Path('docs/research/qvm-pose-publication.json'),{'source':q['source'],'sha256':q['sha256'],'probes':rows,'limits':'Actual33168–33388, no children. Arbitrary finite triplets and synthetic nonboolean flags expose exact numeric shift/add behavior, not asserted legal controller states. No model/skeleton naming inferred.'})
27
+ if __name__=='__main__':main()
scripts/test_qvm_pose_publication.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from test_qvm_ground import word,n,f
4
+ from test_qvm_swing_controller import wrap
5
+
6
+ def expected(triplets):
7
+ head,body,legs=triplets
8
+ return [legs,[word(wrap(f(n(b)-n(l)))) for b,l in zip(body,legs)],[word(wrap(f(n(h)-n(b)))) for h,b in zip(head,body)]]
9
+ class PosePublicationTests(unittest.TestCase):
10
+ @classmethod
11
+ def setUpClass(cls):cls.rows=json.loads(Path('docs/research/qvm-pose-publication.json').read_text())['probes']
12
+ def test_independent_all_nine_angle_words(self):
13
+ self.assertEqual(len(self.rows),24)
14
+ for p in self.rows:self.assertEqual(p['output_legs_body_head'],expected(p['initial_head_body_legs']))
15
+ def test_optional_flag_is_shifted_sum(self):
16
+ for p in self.rows:
17
+ a,b,c=p['flags'];value=b+(a>>1)+(c>>2);value=(value+2**31)%2**32-2**31
18
+ self.assertEqual(p['final_flag'],value if p['flag_pointer'] else None)
19
+ def test_half_turns_stay_inclusive_and_legs_not_normalized(self):
20
+ self.assertTrue(any(any(abs(n(v))==180 for row in p['output_legs_body_head'][1:] for v in row) for p in self.rows));self.assertTrue(any(any(abs(n(v))>180 for v in p['output_legs_body_head'][0]) for p in self.rows))
21
+ def test_no_children_or_native_calls(self):
22
+ for p in self.rows:self.assertEqual(p['execution']['calls'],[])
23
+ if __name__=='__main__':unittest.main()