nmarshall commited on
Commit
f4ec049
·
1 Parent(s): 3e0175a

qvm: recover team radio routing effects

Browse files
docs/FINDINGS.md CHANGED
@@ -1991,3 +1991,5 @@ RE-1014–1023 batch validation passed:1,978 Python tests,319 Rust tests,131 det
1991
  RE-1024: Twelve original-QVM cases prove283463 increments exactly client3036+4*index by1 with word wrapping; the supplied5 is a counter index, not a five-point score delta. Source205260 was already recovered as score update, and193620 emits team radio commands. Earlier defuse/assistance capture labels score/counter/sound were misleading historical names. Counter guards and unrelated words survive. New findings use numeric IDs and corrected semantics; historical report schemas remain compatible. [Evidence](research/QVM_EFFECT_COUNTER.md).
1992
 
1993
  RE-1025: Rust implements caller-indexed wrapping counter increments across12 source cases. Index5 increases one word by1, not five score points; invalid indices preserve the supplied window. Historical enum/report tags remain compatible but now carry explicit score/radio/counter semantic corrections. True counter-enum ownership and larger state lifecycle remain open. [Evidence](research/RUST_EFFECT_COUNTER.md).
 
 
 
1991
  RE-1024: Twelve original-QVM cases prove283463 increments exactly client3036+4*index by1 with word wrapping; the supplied5 is a counter index, not a five-point score delta. Source205260 was already recovered as score update, and193620 emits team radio commands. Earlier defuse/assistance capture labels score/counter/sound were misleading historical names. Counter guards and unrelated words survive. New findings use numeric IDs and corrected semantics; historical report schemas remain compatible. [Evidence](research/QVM_EFFECT_COUNTER.md).
1992
 
1993
  RE-1025: Rust implements caller-indexed wrapping counter increments across12 source cases. Index5 increases one word by1, not five score points; invalid indices preserve the supplied window. Historical enum/report tags remain compatible but now carry explicit score/radio/counter semantic corrections. True counter-enum ownership and larger state lifecycle remain open. [Evidence](research/RUST_EFFECT_COUNTER.md).
1994
+
1995
+ RE-1026: Thirty-four original-QVM scenarios recover193620 with actual mode classifier33715. Live non-following non-spectator sender obtains supplied location text, then sends rsay sender/-1/type/text to connected same-team recipients in team modes or mode9. Mode11 and signed negative modes do not route. Sender marker84 becomes tick+3500 and marker204 becomes1 only when a command is sent. Empty/quoted payloads, failed text lookup, zero/64 counts and wrap are covered. Native sending and location lookup remain boundaries; fixed formatter is modeled. [Evidence](research/QVM_EFFECT_RADIO.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -2051,3 +2051,5 @@ RE-974–983 completed routing, command rewrite, inactivity, movement-parameter
2051
  - [x] RE-1024 Correct native effect identities and recover objective counter ([evidence](research/QVM_EFFECT_COUNTER.md)).
2052
 
2053
  - [x] RE-1025 Port indexed objective counters and label compatibility notes ([evidence](research/RUST_EFFECT_COUNTER.md)).
 
 
 
2051
  - [x] RE-1024 Correct native effect identities and recover objective counter ([evidence](research/QVM_EFFECT_COUNTER.md)).
2052
 
2053
  - [x] RE-1025 Port indexed objective counters and label compatibility notes ([evidence](research/RUST_EFFECT_COUNTER.md)).
2054
+
2055
+ - [x] RE-1026 Recover team radio routing and marker state ([evidence](research/QVM_EFFECT_RADIO.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2775,3 +2775,7 @@ Twelve original-QVM cases prove283463 increments exactly client3036+4*index by1
2775
  ## 2026-10-29 — RE-1025 Port indexed objective counters and label compatibility notes
2776
 
2777
  Rust implements caller-indexed wrapping counter increments across12 source cases. Index5 increases one word by1, not five score points; invalid indices preserve the supplied window. Historical enum/report tags remain compatible but now carry explicit score/radio/counter semantic corrections. True counter-enum ownership and larger state lifecycle remain open. Focused `cargo xtask test-group rust-effect-counter` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
 
 
 
 
 
2775
  ## 2026-10-29 — RE-1025 Port indexed objective counters and label compatibility notes
2776
 
2777
  Rust implements caller-indexed wrapping counter increments across12 source cases. Index5 increases one word by1, not five score points; invalid indices preserve the supplied window. Historical enum/report tags remain compatible but now carry explicit score/radio/counter semantic corrections. True counter-enum ownership and larger state lifecycle remain open. Focused `cargo xtask test-group rust-effect-counter` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
2778
+
2779
+ ## 2026-10-29 — RE-1026 Recover team radio routing and marker state
2780
+
2781
+ Thirty-four original-QVM scenarios recover193620 with actual mode classifier33715. Live non-following non-spectator sender obtains supplied location text, then sends rsay sender/-1/type/text to connected same-team recipients in team modes or mode9. Mode11 and signed negative modes do not route. Sender marker84 becomes tick+3500 and marker204 becomes1 only when a command is sent. Empty/quoted payloads, failed text lookup, zero/64 counts and wrap are covered. Native sending and location lookup remain boundaries; fixed formatter is modeled. Focused `cargo xtask test-group qvm-effect-radio` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -2088,3 +2088,5 @@ RE-974–983 recover routing, command rewriting, inactivity and composed setup t
2088
  - [x] RE-1024 Correct native effect identities and recover objective counter ([evidence](research/QVM_EFFECT_COUNTER.md)).
2089
 
2090
  - [x] RE-1025 Port indexed objective counters and label compatibility notes ([evidence](research/RUST_EFFECT_COUNTER.md)).
 
 
 
2088
  - [x] RE-1024 Correct native effect identities and recover objective counter ([evidence](research/QVM_EFFECT_COUNTER.md)).
2089
 
2090
  - [x] RE-1025 Port indexed objective counters and label compatibility notes ([evidence](research/RUST_EFFECT_COUNTER.md)).
2091
+
2092
+ - [x] RE-1026 Recover team radio routing and marker state ([evidence](research/QVM_EFFECT_RADIO.md)).
docs/research/QVM_EFFECT_RADIO.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Recover team radio routing and marker state
2
+
3
+ RE-1026. Focused validation: `cargo xtask test-group qvm-effect-radio`. [Machine report](qvm-effect-radio.json).
4
+
5
+ Thirty-four original-QVM scenarios recover193620 with actual mode classifier33715. Live non-following non-spectator sender obtains supplied location text, then sends rsay sender/-1/type/text to connected same-team recipients in team modes or mode9. Mode11 and signed negative modes do not route. Sender marker84 becomes tick+3500 and marker204 becomes1 only when a command is sent. Empty/quoted payloads, failed text lookup, zero/64 counts and wrap are covered. Native sending and location lookup remain boundaries; fixed formatter is modeled.
docs/research/README.md CHANGED
@@ -1619,3 +1619,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1619
  - [RE-1024: Correct native effect identities and recover objective counter](QVM_EFFECT_COUNTER.md).
1620
 
1621
  - [RE-1025: Port indexed objective counters and label compatibility notes](RUST_EFFECT_COUNTER.md).
 
 
 
1619
  - [RE-1024: Correct native effect identities and recover objective counter](QVM_EFFECT_COUNTER.md).
1620
 
1621
  - [RE-1025: Port indexed objective counters and label compatibility notes](RUST_EFFECT_COUNTER.md).
1622
+
1623
+ - [RE-1026: Recover team radio routing and marker state](QVM_EFFECT_RADIO.md).
docs/research/qvm-effect-radio.json ADDED
@@ -0,0 +1,1369 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Actual193620 with actual33715 classification. Location text supplied, fixed rsay integer/string formatting modeled, native-18 send captured. No direct audio playback or runtime network conformance.",
3
+ "probes": [
4
+ {
5
+ "commands": [
6
+ {
7
+ "slot": 0,
8
+ "text": "727361792032202d312037202222"
9
+ },
10
+ {
11
+ "slot": 2,
12
+ "text": "727361792032202d312037202222"
13
+ }
14
+ ],
15
+ "execution": {
16
+ "stop": 193827,
17
+ "trace_length": 444,
18
+ "trace_sha256": "1eef637b6885effc1ad5557cabea1c457f867f8d10843c57ddb220f698b760b4"
19
+ },
20
+ "getter_calls": 1,
21
+ "input": {
22
+ "code": 7,
23
+ "count": 4,
24
+ "disconnected": 0,
25
+ "follow": 0,
26
+ "health": 1,
27
+ "marker": 1,
28
+ "mode": 8,
29
+ "other_only": 0,
30
+ "payload": "426f6d622073697465",
31
+ "profile": 0,
32
+ "success": 0,
33
+ "team": 1,
34
+ "tick": 10000
35
+ },
36
+ "marker": [
37
+ 13500,
38
+ 1
39
+ ]
40
+ },
41
+ {
42
+ "commands": [
43
+ {
44
+ "slot": 0,
45
+ "text": "727361792032202d3120372022426f6d62207369746522"
46
+ },
47
+ {
48
+ "slot": 2,
49
+ "text": "727361792032202d3120372022426f6d62207369746522"
50
+ }
51
+ ],
52
+ "execution": {
53
+ "stop": 193827,
54
+ "trace_length": 441,
55
+ "trace_sha256": "28170e105ace76ef81d62ba9d1453d14f4a0a8ac541651e04c81ecc3d752bd60"
56
+ },
57
+ "getter_calls": 1,
58
+ "input": {
59
+ "code": 7,
60
+ "count": 4,
61
+ "disconnected": 0,
62
+ "follow": 0,
63
+ "health": 1,
64
+ "marker": 1,
65
+ "mode": 8,
66
+ "other_only": 0,
67
+ "payload": "426f6d622073697465",
68
+ "profile": 0,
69
+ "success": 1,
70
+ "team": 1,
71
+ "tick": 10000
72
+ },
73
+ "marker": [
74
+ 13500,
75
+ 1
76
+ ]
77
+ },
78
+ {
79
+ "commands": [],
80
+ "execution": {
81
+ "stop": 193827,
82
+ "trace_length": 16,
83
+ "trace_sha256": "b411f2227db1db8ac9be04b553ecf661f42ca4b73f46838d294f57868a82e792"
84
+ },
85
+ "getter_calls": 0,
86
+ "input": {
87
+ "code": 7,
88
+ "count": 4,
89
+ "disconnected": 0,
90
+ "follow": 1,
91
+ "health": 1,
92
+ "marker": 1,
93
+ "mode": 8,
94
+ "other_only": 0,
95
+ "payload": "502271",
96
+ "profile": 1,
97
+ "success": 0,
98
+ "team": 1,
99
+ "tick": 10000
100
+ },
101
+ "marker": [
102
+ 17,
103
+ 18
104
+ ]
105
+ },
106
+ {
107
+ "commands": [],
108
+ "execution": {
109
+ "stop": 193827,
110
+ "trace_length": 16,
111
+ "trace_sha256": "b411f2227db1db8ac9be04b553ecf661f42ca4b73f46838d294f57868a82e792"
112
+ },
113
+ "getter_calls": 0,
114
+ "input": {
115
+ "code": 7,
116
+ "count": 4,
117
+ "disconnected": 0,
118
+ "follow": 1,
119
+ "health": 1,
120
+ "marker": 1,
121
+ "mode": 8,
122
+ "other_only": 0,
123
+ "payload": "502271",
124
+ "profile": 1,
125
+ "success": 1,
126
+ "team": 1,
127
+ "tick": 10000
128
+ },
129
+ "marker": [
130
+ 17,
131
+ 18
132
+ ]
133
+ },
134
+ {
135
+ "commands": [],
136
+ "execution": {
137
+ "stop": 193827,
138
+ "trace_length": 26,
139
+ "trace_sha256": "0ae0b28c8037dc69e6edf80598535b54a925a99d2364afd4ce71d50f3df5e08f"
140
+ },
141
+ "getter_calls": 0,
142
+ "input": {
143
+ "code": 7,
144
+ "count": 4,
145
+ "disconnected": 0,
146
+ "follow": 0,
147
+ "health": 0,
148
+ "marker": 1,
149
+ "mode": 8,
150
+ "other_only": 0,
151
+ "payload": "426f6d622073697465",
152
+ "profile": 2,
153
+ "success": 0,
154
+ "team": 1,
155
+ "tick": 10000
156
+ },
157
+ "marker": [
158
+ 17,
159
+ 18
160
+ ]
161
+ },
162
+ {
163
+ "commands": [],
164
+ "execution": {
165
+ "stop": 193827,
166
+ "trace_length": 26,
167
+ "trace_sha256": "0ae0b28c8037dc69e6edf80598535b54a925a99d2364afd4ce71d50f3df5e08f"
168
+ },
169
+ "getter_calls": 0,
170
+ "input": {
171
+ "code": 7,
172
+ "count": 4,
173
+ "disconnected": 0,
174
+ "follow": 0,
175
+ "health": 0,
176
+ "marker": 1,
177
+ "mode": 8,
178
+ "other_only": 0,
179
+ "payload": "426f6d622073697465",
180
+ "profile": 2,
181
+ "success": 1,
182
+ "team": 1,
183
+ "tick": 10000
184
+ },
185
+ "marker": [
186
+ 17,
187
+ 18
188
+ ]
189
+ },
190
+ {
191
+ "commands": [],
192
+ "execution": {
193
+ "stop": 193827,
194
+ "trace_length": 26,
195
+ "trace_sha256": "0ae0b28c8037dc69e6edf80598535b54a925a99d2364afd4ce71d50f3df5e08f"
196
+ },
197
+ "getter_calls": 0,
198
+ "input": {
199
+ "code": 7,
200
+ "count": 4,
201
+ "disconnected": 0,
202
+ "follow": 0,
203
+ "health": 4294967295,
204
+ "marker": 1,
205
+ "mode": 8,
206
+ "other_only": 0,
207
+ "payload": "502271",
208
+ "profile": 3,
209
+ "success": 0,
210
+ "team": 1,
211
+ "tick": 10000
212
+ },
213
+ "marker": [
214
+ 17,
215
+ 18
216
+ ]
217
+ },
218
+ {
219
+ "commands": [],
220
+ "execution": {
221
+ "stop": 193827,
222
+ "trace_length": 26,
223
+ "trace_sha256": "0ae0b28c8037dc69e6edf80598535b54a925a99d2364afd4ce71d50f3df5e08f"
224
+ },
225
+ "getter_calls": 0,
226
+ "input": {
227
+ "code": 7,
228
+ "count": 4,
229
+ "disconnected": 0,
230
+ "follow": 0,
231
+ "health": 4294967295,
232
+ "marker": 1,
233
+ "mode": 8,
234
+ "other_only": 0,
235
+ "payload": "502271",
236
+ "profile": 3,
237
+ "success": 1,
238
+ "team": 1,
239
+ "tick": 10000
240
+ },
241
+ "marker": [
242
+ 17,
243
+ 18
244
+ ]
245
+ },
246
+ {
247
+ "commands": [],
248
+ "execution": {
249
+ "stop": 193827,
250
+ "trace_length": 36,
251
+ "trace_sha256": "45cea69a5d6ed579890bef6999aca4b21bdb0c26f97cdc2f44cacfbc76b9f16d"
252
+ },
253
+ "getter_calls": 0,
254
+ "input": {
255
+ "code": 7,
256
+ "count": 4,
257
+ "disconnected": 0,
258
+ "follow": 0,
259
+ "health": 1,
260
+ "marker": 1,
261
+ "mode": 8,
262
+ "other_only": 0,
263
+ "payload": "426f6d622073697465",
264
+ "profile": 4,
265
+ "success": 0,
266
+ "team": 3,
267
+ "tick": 10000
268
+ },
269
+ "marker": [
270
+ 17,
271
+ 18
272
+ ]
273
+ },
274
+ {
275
+ "commands": [],
276
+ "execution": {
277
+ "stop": 193827,
278
+ "trace_length": 36,
279
+ "trace_sha256": "45cea69a5d6ed579890bef6999aca4b21bdb0c26f97cdc2f44cacfbc76b9f16d"
280
+ },
281
+ "getter_calls": 0,
282
+ "input": {
283
+ "code": 7,
284
+ "count": 4,
285
+ "disconnected": 0,
286
+ "follow": 0,
287
+ "health": 1,
288
+ "marker": 1,
289
+ "mode": 8,
290
+ "other_only": 0,
291
+ "payload": "426f6d622073697465",
292
+ "profile": 4,
293
+ "success": 1,
294
+ "team": 3,
295
+ "tick": 10000
296
+ },
297
+ "marker": [
298
+ 17,
299
+ 18
300
+ ]
301
+ },
302
+ {
303
+ "commands": [],
304
+ "execution": {
305
+ "stop": 193827,
306
+ "trace_length": 273,
307
+ "trace_sha256": "324f5e23c753d56cfc2fc9d701004df66d57bc6ebe8ba7bbc6ed79aa1d46f9f6"
308
+ },
309
+ "getter_calls": 1,
310
+ "input": {
311
+ "code": 7,
312
+ "count": 4,
313
+ "disconnected": 0,
314
+ "follow": 0,
315
+ "health": 1,
316
+ "marker": 1,
317
+ "mode": 0,
318
+ "other_only": 0,
319
+ "payload": "502271",
320
+ "profile": 5,
321
+ "success": 0,
322
+ "team": 1,
323
+ "tick": 10000
324
+ },
325
+ "marker": [
326
+ 17,
327
+ 18
328
+ ]
329
+ },
330
+ {
331
+ "commands": [],
332
+ "execution": {
333
+ "stop": 193827,
334
+ "trace_length": 270,
335
+ "trace_sha256": "7d6a3437aa649d7ceb59276c16ad83c5040c38441a57e71d2cdc29dff7ad6045"
336
+ },
337
+ "getter_calls": 1,
338
+ "input": {
339
+ "code": 7,
340
+ "count": 4,
341
+ "disconnected": 0,
342
+ "follow": 0,
343
+ "health": 1,
344
+ "marker": 1,
345
+ "mode": 0,
346
+ "other_only": 0,
347
+ "payload": "502271",
348
+ "profile": 5,
349
+ "success": 1,
350
+ "team": 1,
351
+ "tick": 10000
352
+ },
353
+ "marker": [
354
+ 17,
355
+ 18
356
+ ]
357
+ },
358
+ {
359
+ "commands": [
360
+ {
361
+ "slot": 0,
362
+ "text": "727361792032202d312037202222"
363
+ },
364
+ {
365
+ "slot": 2,
366
+ "text": "727361792032202d312037202222"
367
+ }
368
+ ],
369
+ "execution": {
370
+ "stop": 193827,
371
+ "trace_length": 444,
372
+ "trace_sha256": "1eef637b6885effc1ad5557cabea1c457f867f8d10843c57ddb220f698b760b4"
373
+ },
374
+ "getter_calls": 1,
375
+ "input": {
376
+ "code": 7,
377
+ "count": 4,
378
+ "disconnected": 0,
379
+ "follow": 0,
380
+ "health": 1,
381
+ "marker": 1,
382
+ "mode": 3,
383
+ "other_only": 0,
384
+ "payload": "426f6d622073697465",
385
+ "profile": 6,
386
+ "success": 0,
387
+ "team": 1,
388
+ "tick": 10000
389
+ },
390
+ "marker": [
391
+ 13500,
392
+ 1
393
+ ]
394
+ },
395
+ {
396
+ "commands": [
397
+ {
398
+ "slot": 0,
399
+ "text": "727361792032202d3120372022426f6d62207369746522"
400
+ },
401
+ {
402
+ "slot": 2,
403
+ "text": "727361792032202d3120372022426f6d62207369746522"
404
+ }
405
+ ],
406
+ "execution": {
407
+ "stop": 193827,
408
+ "trace_length": 441,
409
+ "trace_sha256": "28170e105ace76ef81d62ba9d1453d14f4a0a8ac541651e04c81ecc3d752bd60"
410
+ },
411
+ "getter_calls": 1,
412
+ "input": {
413
+ "code": 7,
414
+ "count": 4,
415
+ "disconnected": 0,
416
+ "follow": 0,
417
+ "health": 1,
418
+ "marker": 1,
419
+ "mode": 3,
420
+ "other_only": 0,
421
+ "payload": "426f6d622073697465",
422
+ "profile": 6,
423
+ "success": 1,
424
+ "team": 1,
425
+ "tick": 10000
426
+ },
427
+ "marker": [
428
+ 13500,
429
+ 1
430
+ ]
431
+ },
432
+ {
433
+ "commands": [
434
+ {
435
+ "slot": 0,
436
+ "text": "727361792032202d312037202222"
437
+ },
438
+ {
439
+ "slot": 2,
440
+ "text": "727361792032202d312037202222"
441
+ }
442
+ ],
443
+ "execution": {
444
+ "stop": 193827,
445
+ "trace_length": 456,
446
+ "trace_sha256": "0defa541e96212887339cddf0d61861b05b6d6ff67f1032190a7eb3250e5fb3a"
447
+ },
448
+ "getter_calls": 1,
449
+ "input": {
450
+ "code": 7,
451
+ "count": 4,
452
+ "disconnected": 0,
453
+ "follow": 0,
454
+ "health": 1,
455
+ "marker": 1,
456
+ "mode": 9,
457
+ "other_only": 0,
458
+ "payload": "502271",
459
+ "profile": 7,
460
+ "success": 0,
461
+ "team": 1,
462
+ "tick": 10000
463
+ },
464
+ "marker": [
465
+ 13500,
466
+ 1
467
+ ]
468
+ },
469
+ {
470
+ "commands": [
471
+ {
472
+ "slot": 0,
473
+ "text": "727361792032202d312037202250227122"
474
+ },
475
+ {
476
+ "slot": 2,
477
+ "text": "727361792032202d312037202250227122"
478
+ }
479
+ ],
480
+ "execution": {
481
+ "stop": 193827,
482
+ "trace_length": 453,
483
+ "trace_sha256": "b9364668662385dff4c5ac55c11f42dc2e60690ecf393acf8bc53032f3f7b237"
484
+ },
485
+ "getter_calls": 1,
486
+ "input": {
487
+ "code": 7,
488
+ "count": 4,
489
+ "disconnected": 0,
490
+ "follow": 0,
491
+ "health": 1,
492
+ "marker": 1,
493
+ "mode": 9,
494
+ "other_only": 0,
495
+ "payload": "502271",
496
+ "profile": 7,
497
+ "success": 1,
498
+ "team": 1,
499
+ "tick": 10000
500
+ },
501
+ "marker": [
502
+ 13500,
503
+ 1
504
+ ]
505
+ },
506
+ {
507
+ "commands": [],
508
+ "execution": {
509
+ "stop": 193827,
510
+ "trace_length": 273,
511
+ "trace_sha256": "324f5e23c753d56cfc2fc9d701004df66d57bc6ebe8ba7bbc6ed79aa1d46f9f6"
512
+ },
513
+ "getter_calls": 1,
514
+ "input": {
515
+ "code": 7,
516
+ "count": 4,
517
+ "disconnected": 0,
518
+ "follow": 0,
519
+ "health": 1,
520
+ "marker": 1,
521
+ "mode": 11,
522
+ "other_only": 0,
523
+ "payload": "426f6d622073697465",
524
+ "profile": 8,
525
+ "success": 0,
526
+ "team": 1,
527
+ "tick": 10000
528
+ },
529
+ "marker": [
530
+ 17,
531
+ 18
532
+ ]
533
+ },
534
+ {
535
+ "commands": [],
536
+ "execution": {
537
+ "stop": 193827,
538
+ "trace_length": 270,
539
+ "trace_sha256": "7d6a3437aa649d7ceb59276c16ad83c5040c38441a57e71d2cdc29dff7ad6045"
540
+ },
541
+ "getter_calls": 1,
542
+ "input": {
543
+ "code": 7,
544
+ "count": 4,
545
+ "disconnected": 0,
546
+ "follow": 0,
547
+ "health": 1,
548
+ "marker": 1,
549
+ "mode": 11,
550
+ "other_only": 0,
551
+ "payload": "426f6d622073697465",
552
+ "profile": 8,
553
+ "success": 1,
554
+ "team": 1,
555
+ "tick": 10000
556
+ },
557
+ "marker": [
558
+ 17,
559
+ 18
560
+ ]
561
+ },
562
+ {
563
+ "commands": [],
564
+ "execution": {
565
+ "stop": 193827,
566
+ "trace_length": 273,
567
+ "trace_sha256": "324f5e23c753d56cfc2fc9d701004df66d57bc6ebe8ba7bbc6ed79aa1d46f9f6"
568
+ },
569
+ "getter_calls": 1,
570
+ "input": {
571
+ "code": 7,
572
+ "count": 4,
573
+ "disconnected": 0,
574
+ "follow": 0,
575
+ "health": 1,
576
+ "marker": 1,
577
+ "mode": 4294967295,
578
+ "other_only": 0,
579
+ "payload": "502271",
580
+ "profile": 9,
581
+ "success": 0,
582
+ "team": 1,
583
+ "tick": 10000
584
+ },
585
+ "marker": [
586
+ 17,
587
+ 18
588
+ ]
589
+ },
590
+ {
591
+ "commands": [],
592
+ "execution": {
593
+ "stop": 193827,
594
+ "trace_length": 270,
595
+ "trace_sha256": "7d6a3437aa649d7ceb59276c16ad83c5040c38441a57e71d2cdc29dff7ad6045"
596
+ },
597
+ "getter_calls": 1,
598
+ "input": {
599
+ "code": 7,
600
+ "count": 4,
601
+ "disconnected": 0,
602
+ "follow": 0,
603
+ "health": 1,
604
+ "marker": 1,
605
+ "mode": 4294967295,
606
+ "other_only": 0,
607
+ "payload": "502271",
608
+ "profile": 9,
609
+ "success": 1,
610
+ "team": 1,
611
+ "tick": 10000
612
+ },
613
+ "marker": [
614
+ 17,
615
+ 18
616
+ ]
617
+ },
618
+ {
619
+ "commands": [
620
+ {
621
+ "slot": 1,
622
+ "text": "727361792032202d312037202222"
623
+ },
624
+ {
625
+ "slot": 2,
626
+ "text": "727361792032202d312037202222"
627
+ }
628
+ ],
629
+ "execution": {
630
+ "stop": 193827,
631
+ "trace_length": 444,
632
+ "trace_sha256": "25efb90fc79d43368b495f865bb78b9a695998150866af4562a8ff444b3e88ac"
633
+ },
634
+ "getter_calls": 1,
635
+ "input": {
636
+ "code": 7,
637
+ "count": 4,
638
+ "disconnected": 0,
639
+ "follow": 0,
640
+ "health": 1,
641
+ "marker": 1,
642
+ "mode": 8,
643
+ "other_only": 0,
644
+ "payload": "426f6d622073697465",
645
+ "profile": 10,
646
+ "success": 0,
647
+ "team": 2,
648
+ "tick": 10000
649
+ },
650
+ "marker": [
651
+ 13500,
652
+ 1
653
+ ]
654
+ },
655
+ {
656
+ "commands": [
657
+ {
658
+ "slot": 1,
659
+ "text": "727361792032202d3120372022426f6d62207369746522"
660
+ },
661
+ {
662
+ "slot": 2,
663
+ "text": "727361792032202d3120372022426f6d62207369746522"
664
+ }
665
+ ],
666
+ "execution": {
667
+ "stop": 193827,
668
+ "trace_length": 441,
669
+ "trace_sha256": "e6643bd2eac48e88c79830d6b406504b7688bc507ee4f6b4f972440153417cfa"
670
+ },
671
+ "getter_calls": 1,
672
+ "input": {
673
+ "code": 7,
674
+ "count": 4,
675
+ "disconnected": 0,
676
+ "follow": 0,
677
+ "health": 1,
678
+ "marker": 1,
679
+ "mode": 8,
680
+ "other_only": 0,
681
+ "payload": "426f6d622073697465",
682
+ "profile": 10,
683
+ "success": 1,
684
+ "team": 2,
685
+ "tick": 10000
686
+ },
687
+ "marker": [
688
+ 13500,
689
+ 1
690
+ ]
691
+ },
692
+ {
693
+ "commands": [],
694
+ "execution": {
695
+ "stop": 193827,
696
+ "trace_length": 62,
697
+ "trace_sha256": "64efa55586f0921ecda2dcfa2ed026fba4f14187ccb43a292082a7081082330b"
698
+ },
699
+ "getter_calls": 1,
700
+ "input": {
701
+ "code": 7,
702
+ "count": 0,
703
+ "disconnected": 0,
704
+ "follow": 0,
705
+ "health": 1,
706
+ "marker": 1,
707
+ "mode": 8,
708
+ "other_only": 0,
709
+ "payload": "502271",
710
+ "profile": 11,
711
+ "success": 0,
712
+ "team": 1,
713
+ "tick": 10000
714
+ },
715
+ "marker": [
716
+ 17,
717
+ 18
718
+ ]
719
+ },
720
+ {
721
+ "commands": [],
722
+ "execution": {
723
+ "stop": 193827,
724
+ "trace_length": 59,
725
+ "trace_sha256": "14474cf6130f42f410f4325eb3236660cccbc7bd02cbc128c8c50d45d33390fe"
726
+ },
727
+ "getter_calls": 1,
728
+ "input": {
729
+ "code": 7,
730
+ "count": 0,
731
+ "disconnected": 0,
732
+ "follow": 0,
733
+ "health": 1,
734
+ "marker": 1,
735
+ "mode": 8,
736
+ "other_only": 0,
737
+ "payload": "502271",
738
+ "profile": 11,
739
+ "success": 1,
740
+ "team": 1,
741
+ "tick": 10000
742
+ },
743
+ "marker": [
744
+ 17,
745
+ 18
746
+ ]
747
+ },
748
+ {
749
+ "commands": [
750
+ {
751
+ "slot": 0,
752
+ "text": "727361792032202d312037202222"
753
+ },
754
+ {
755
+ "slot": 2,
756
+ "text": "727361792032202d312037202222"
757
+ },
758
+ {
759
+ "slot": 4,
760
+ "text": "727361792032202d312037202222"
761
+ },
762
+ {
763
+ "slot": 6,
764
+ "text": "727361792032202d312037202222"
765
+ },
766
+ {
767
+ "slot": 8,
768
+ "text": "727361792032202d312037202222"
769
+ },
770
+ {
771
+ "slot": 10,
772
+ "text": "727361792032202d312037202222"
773
+ },
774
+ {
775
+ "slot": 12,
776
+ "text": "727361792032202d312037202222"
777
+ },
778
+ {
779
+ "slot": 14,
780
+ "text": "727361792032202d312037202222"
781
+ },
782
+ {
783
+ "slot": 16,
784
+ "text": "727361792032202d312037202222"
785
+ },
786
+ {
787
+ "slot": 18,
788
+ "text": "727361792032202d312037202222"
789
+ },
790
+ {
791
+ "slot": 20,
792
+ "text": "727361792032202d312037202222"
793
+ },
794
+ {
795
+ "slot": 22,
796
+ "text": "727361792032202d312037202222"
797
+ },
798
+ {
799
+ "slot": 24,
800
+ "text": "727361792032202d312037202222"
801
+ },
802
+ {
803
+ "slot": 26,
804
+ "text": "727361792032202d312037202222"
805
+ },
806
+ {
807
+ "slot": 28,
808
+ "text": "727361792032202d312037202222"
809
+ },
810
+ {
811
+ "slot": 30,
812
+ "text": "727361792032202d312037202222"
813
+ },
814
+ {
815
+ "slot": 32,
816
+ "text": "727361792032202d312037202222"
817
+ },
818
+ {
819
+ "slot": 34,
820
+ "text": "727361792032202d312037202222"
821
+ },
822
+ {
823
+ "slot": 36,
824
+ "text": "727361792032202d312037202222"
825
+ },
826
+ {
827
+ "slot": 38,
828
+ "text": "727361792032202d312037202222"
829
+ },
830
+ {
831
+ "slot": 40,
832
+ "text": "727361792032202d312037202222"
833
+ },
834
+ {
835
+ "slot": 42,
836
+ "text": "727361792032202d312037202222"
837
+ },
838
+ {
839
+ "slot": 44,
840
+ "text": "727361792032202d312037202222"
841
+ },
842
+ {
843
+ "slot": 46,
844
+ "text": "727361792032202d312037202222"
845
+ },
846
+ {
847
+ "slot": 48,
848
+ "text": "727361792032202d312037202222"
849
+ },
850
+ {
851
+ "slot": 50,
852
+ "text": "727361792032202d312037202222"
853
+ },
854
+ {
855
+ "slot": 52,
856
+ "text": "727361792032202d312037202222"
857
+ },
858
+ {
859
+ "slot": 54,
860
+ "text": "727361792032202d312037202222"
861
+ },
862
+ {
863
+ "slot": 56,
864
+ "text": "727361792032202d312037202222"
865
+ },
866
+ {
867
+ "slot": 58,
868
+ "text": "727361792032202d312037202222"
869
+ },
870
+ {
871
+ "slot": 60,
872
+ "text": "727361792032202d312037202222"
873
+ },
874
+ {
875
+ "slot": 62,
876
+ "text": "727361792032202d312037202222"
877
+ }
878
+ ],
879
+ "execution": {
880
+ "stop": 193827,
881
+ "trace_length": 6216,
882
+ "trace_sha256": "89ff9024d15c5d5a1ee514c2afcdbb33847dc3285d283b202caa3ab958d28999"
883
+ },
884
+ "getter_calls": 1,
885
+ "input": {
886
+ "code": 7,
887
+ "count": 64,
888
+ "disconnected": 0,
889
+ "follow": 0,
890
+ "health": 1,
891
+ "marker": 1,
892
+ "mode": 8,
893
+ "other_only": 0,
894
+ "payload": "426f6d622073697465",
895
+ "profile": 12,
896
+ "success": 0,
897
+ "team": 1,
898
+ "tick": 10000
899
+ },
900
+ "marker": [
901
+ 13500,
902
+ 1
903
+ ]
904
+ },
905
+ {
906
+ "commands": [
907
+ {
908
+ "slot": 0,
909
+ "text": "727361792032202d3120372022426f6d62207369746522"
910
+ },
911
+ {
912
+ "slot": 2,
913
+ "text": "727361792032202d3120372022426f6d62207369746522"
914
+ },
915
+ {
916
+ "slot": 4,
917
+ "text": "727361792032202d3120372022426f6d62207369746522"
918
+ },
919
+ {
920
+ "slot": 6,
921
+ "text": "727361792032202d3120372022426f6d62207369746522"
922
+ },
923
+ {
924
+ "slot": 8,
925
+ "text": "727361792032202d3120372022426f6d62207369746522"
926
+ },
927
+ {
928
+ "slot": 10,
929
+ "text": "727361792032202d3120372022426f6d62207369746522"
930
+ },
931
+ {
932
+ "slot": 12,
933
+ "text": "727361792032202d3120372022426f6d62207369746522"
934
+ },
935
+ {
936
+ "slot": 14,
937
+ "text": "727361792032202d3120372022426f6d62207369746522"
938
+ },
939
+ {
940
+ "slot": 16,
941
+ "text": "727361792032202d3120372022426f6d62207369746522"
942
+ },
943
+ {
944
+ "slot": 18,
945
+ "text": "727361792032202d3120372022426f6d62207369746522"
946
+ },
947
+ {
948
+ "slot": 20,
949
+ "text": "727361792032202d3120372022426f6d62207369746522"
950
+ },
951
+ {
952
+ "slot": 22,
953
+ "text": "727361792032202d3120372022426f6d62207369746522"
954
+ },
955
+ {
956
+ "slot": 24,
957
+ "text": "727361792032202d3120372022426f6d62207369746522"
958
+ },
959
+ {
960
+ "slot": 26,
961
+ "text": "727361792032202d3120372022426f6d62207369746522"
962
+ },
963
+ {
964
+ "slot": 28,
965
+ "text": "727361792032202d3120372022426f6d62207369746522"
966
+ },
967
+ {
968
+ "slot": 30,
969
+ "text": "727361792032202d3120372022426f6d62207369746522"
970
+ },
971
+ {
972
+ "slot": 32,
973
+ "text": "727361792032202d3120372022426f6d62207369746522"
974
+ },
975
+ {
976
+ "slot": 34,
977
+ "text": "727361792032202d3120372022426f6d62207369746522"
978
+ },
979
+ {
980
+ "slot": 36,
981
+ "text": "727361792032202d3120372022426f6d62207369746522"
982
+ },
983
+ {
984
+ "slot": 38,
985
+ "text": "727361792032202d3120372022426f6d62207369746522"
986
+ },
987
+ {
988
+ "slot": 40,
989
+ "text": "727361792032202d3120372022426f6d62207369746522"
990
+ },
991
+ {
992
+ "slot": 42,
993
+ "text": "727361792032202d3120372022426f6d62207369746522"
994
+ },
995
+ {
996
+ "slot": 44,
997
+ "text": "727361792032202d3120372022426f6d62207369746522"
998
+ },
999
+ {
1000
+ "slot": 46,
1001
+ "text": "727361792032202d3120372022426f6d62207369746522"
1002
+ },
1003
+ {
1004
+ "slot": 48,
1005
+ "text": "727361792032202d3120372022426f6d62207369746522"
1006
+ },
1007
+ {
1008
+ "slot": 50,
1009
+ "text": "727361792032202d3120372022426f6d62207369746522"
1010
+ },
1011
+ {
1012
+ "slot": 52,
1013
+ "text": "727361792032202d3120372022426f6d62207369746522"
1014
+ },
1015
+ {
1016
+ "slot": 54,
1017
+ "text": "727361792032202d3120372022426f6d62207369746522"
1018
+ },
1019
+ {
1020
+ "slot": 56,
1021
+ "text": "727361792032202d3120372022426f6d62207369746522"
1022
+ },
1023
+ {
1024
+ "slot": 58,
1025
+ "text": "727361792032202d3120372022426f6d62207369746522"
1026
+ },
1027
+ {
1028
+ "slot": 60,
1029
+ "text": "727361792032202d3120372022426f6d62207369746522"
1030
+ },
1031
+ {
1032
+ "slot": 62,
1033
+ "text": "727361792032202d3120372022426f6d62207369746522"
1034
+ }
1035
+ ],
1036
+ "execution": {
1037
+ "stop": 193827,
1038
+ "trace_length": 6213,
1039
+ "trace_sha256": "4fa897ed8821459c467af647bbdc5b014d3b0a7365bb2068835b3c8a1e1cc8a7"
1040
+ },
1041
+ "getter_calls": 1,
1042
+ "input": {
1043
+ "code": 7,
1044
+ "count": 64,
1045
+ "disconnected": 0,
1046
+ "follow": 0,
1047
+ "health": 1,
1048
+ "marker": 1,
1049
+ "mode": 8,
1050
+ "other_only": 0,
1051
+ "payload": "426f6d622073697465",
1052
+ "profile": 12,
1053
+ "success": 1,
1054
+ "team": 1,
1055
+ "tick": 10000
1056
+ },
1057
+ "marker": [
1058
+ 13500,
1059
+ 1
1060
+ ]
1061
+ },
1062
+ {
1063
+ "commands": [],
1064
+ "execution": {
1065
+ "stop": 193827,
1066
+ "trace_length": 186,
1067
+ "trace_sha256": "c2d8b3486b576eb17e7386635e31cc2f79cb8bd43444bbbe39db43d84c3a00a2"
1068
+ },
1069
+ "getter_calls": 1,
1070
+ "input": {
1071
+ "code": 7,
1072
+ "count": 4,
1073
+ "disconnected": 1,
1074
+ "follow": 0,
1075
+ "health": 1,
1076
+ "marker": 1,
1077
+ "mode": 8,
1078
+ "other_only": 0,
1079
+ "payload": "502271",
1080
+ "profile": 13,
1081
+ "success": 0,
1082
+ "team": 1,
1083
+ "tick": 10000
1084
+ },
1085
+ "marker": [
1086
+ 17,
1087
+ 18
1088
+ ]
1089
+ },
1090
+ {
1091
+ "commands": [],
1092
+ "execution": {
1093
+ "stop": 193827,
1094
+ "trace_length": 183,
1095
+ "trace_sha256": "e80958f6532a737a94a558e3491e1f279ea41cef5907371d92ec67cc6a4145f4"
1096
+ },
1097
+ "getter_calls": 1,
1098
+ "input": {
1099
+ "code": 7,
1100
+ "count": 4,
1101
+ "disconnected": 1,
1102
+ "follow": 0,
1103
+ "health": 1,
1104
+ "marker": 1,
1105
+ "mode": 8,
1106
+ "other_only": 0,
1107
+ "payload": "502271",
1108
+ "profile": 13,
1109
+ "success": 1,
1110
+ "team": 1,
1111
+ "tick": 10000
1112
+ },
1113
+ "marker": [
1114
+ 17,
1115
+ 18
1116
+ ]
1117
+ },
1118
+ {
1119
+ "commands": [
1120
+ {
1121
+ "slot": 2,
1122
+ "text": "727361792032202d312037202222"
1123
+ }
1124
+ ],
1125
+ "execution": {
1126
+ "stop": 193827,
1127
+ "trace_length": 378,
1128
+ "trace_sha256": "e3ffba4ae44e2d73548573b46e600e86aeae9b06b6a2fce61237951a7a53abc2"
1129
+ },
1130
+ "getter_calls": 1,
1131
+ "input": {
1132
+ "code": 7,
1133
+ "count": 4,
1134
+ "disconnected": 0,
1135
+ "follow": 0,
1136
+ "health": 1,
1137
+ "marker": 1,
1138
+ "mode": 8,
1139
+ "other_only": 1,
1140
+ "payload": "426f6d622073697465",
1141
+ "profile": 14,
1142
+ "success": 0,
1143
+ "team": 1,
1144
+ "tick": 10000
1145
+ },
1146
+ "marker": [
1147
+ 13500,
1148
+ 1
1149
+ ]
1150
+ },
1151
+ {
1152
+ "commands": [
1153
+ {
1154
+ "slot": 2,
1155
+ "text": "727361792032202d3120372022426f6d62207369746522"
1156
+ }
1157
+ ],
1158
+ "execution": {
1159
+ "stop": 193827,
1160
+ "trace_length": 375,
1161
+ "trace_sha256": "e66ae92f53420ff9107f8843e9fc24e4f0f8b9cc367d994e91f1fa4ffe78a1a8"
1162
+ },
1163
+ "getter_calls": 1,
1164
+ "input": {
1165
+ "code": 7,
1166
+ "count": 4,
1167
+ "disconnected": 0,
1168
+ "follow": 0,
1169
+ "health": 1,
1170
+ "marker": 1,
1171
+ "mode": 8,
1172
+ "other_only": 1,
1173
+ "payload": "426f6d622073697465",
1174
+ "profile": 14,
1175
+ "success": 1,
1176
+ "team": 1,
1177
+ "tick": 10000
1178
+ },
1179
+ "marker": [
1180
+ 13500,
1181
+ 1
1182
+ ]
1183
+ },
1184
+ {
1185
+ "commands": [
1186
+ {
1187
+ "slot": 0,
1188
+ "text": "727361792032202d312037202222"
1189
+ },
1190
+ {
1191
+ "slot": 2,
1192
+ "text": "727361792032202d312037202222"
1193
+ }
1194
+ ],
1195
+ "execution": {
1196
+ "stop": 193827,
1197
+ "trace_length": 390,
1198
+ "trace_sha256": "694fd4a74495a541354704315d49d03592a8387a459c643c18eeb3836e1d24e8"
1199
+ },
1200
+ "getter_calls": 1,
1201
+ "input": {
1202
+ "code": 7,
1203
+ "count": 4,
1204
+ "disconnected": 0,
1205
+ "follow": 0,
1206
+ "health": 1,
1207
+ "marker": 0,
1208
+ "mode": 8,
1209
+ "other_only": 0,
1210
+ "payload": "502271",
1211
+ "profile": 15,
1212
+ "success": 0,
1213
+ "team": 1,
1214
+ "tick": 10000
1215
+ },
1216
+ "marker": [
1217
+ 17,
1218
+ 18
1219
+ ]
1220
+ },
1221
+ {
1222
+ "commands": [
1223
+ {
1224
+ "slot": 0,
1225
+ "text": "727361792032202d312037202250227122"
1226
+ },
1227
+ {
1228
+ "slot": 2,
1229
+ "text": "727361792032202d312037202250227122"
1230
+ }
1231
+ ],
1232
+ "execution": {
1233
+ "stop": 193827,
1234
+ "trace_length": 387,
1235
+ "trace_sha256": "3153473940c5ace828e34c8c1dd4e513b191c1803cccb1bfc7f0c6d928b8b13f"
1236
+ },
1237
+ "getter_calls": 1,
1238
+ "input": {
1239
+ "code": 7,
1240
+ "count": 4,
1241
+ "disconnected": 0,
1242
+ "follow": 0,
1243
+ "health": 1,
1244
+ "marker": 0,
1245
+ "mode": 8,
1246
+ "other_only": 0,
1247
+ "payload": "502271",
1248
+ "profile": 15,
1249
+ "success": 1,
1250
+ "team": 1,
1251
+ "tick": 10000
1252
+ },
1253
+ "marker": [
1254
+ 17,
1255
+ 18
1256
+ ]
1257
+ },
1258
+ {
1259
+ "commands": [
1260
+ {
1261
+ "slot": 0,
1262
+ "text": "727361792032202d312037202222"
1263
+ },
1264
+ {
1265
+ "slot": 2,
1266
+ "text": "727361792032202d312037202222"
1267
+ }
1268
+ ],
1269
+ "execution": {
1270
+ "stop": 193827,
1271
+ "trace_length": 444,
1272
+ "trace_sha256": "1eef637b6885effc1ad5557cabea1c457f867f8d10843c57ddb220f698b760b4"
1273
+ },
1274
+ "getter_calls": 1,
1275
+ "input": {
1276
+ "code": 7,
1277
+ "count": 4,
1278
+ "disconnected": 0,
1279
+ "follow": 0,
1280
+ "health": 1,
1281
+ "marker": 1,
1282
+ "mode": 8,
1283
+ "other_only": 0,
1284
+ "payload": "426f6d622073697465",
1285
+ "profile": 16,
1286
+ "success": 0,
1287
+ "team": 1,
1288
+ "tick": 4294967295
1289
+ },
1290
+ "marker": [
1291
+ 3499,
1292
+ 1
1293
+ ]
1294
+ },
1295
+ {
1296
+ "commands": [
1297
+ {
1298
+ "slot": 0,
1299
+ "text": "727361792032202d3120372022426f6d62207369746522"
1300
+ },
1301
+ {
1302
+ "slot": 2,
1303
+ "text": "727361792032202d3120372022426f6d62207369746522"
1304
+ }
1305
+ ],
1306
+ "execution": {
1307
+ "stop": 193827,
1308
+ "trace_length": 441,
1309
+ "trace_sha256": "28170e105ace76ef81d62ba9d1453d14f4a0a8ac541651e04c81ecc3d752bd60"
1310
+ },
1311
+ "getter_calls": 1,
1312
+ "input": {
1313
+ "code": 7,
1314
+ "count": 4,
1315
+ "disconnected": 0,
1316
+ "follow": 0,
1317
+ "health": 1,
1318
+ "marker": 1,
1319
+ "mode": 8,
1320
+ "other_only": 0,
1321
+ "payload": "426f6d622073697465",
1322
+ "profile": 16,
1323
+ "success": 1,
1324
+ "team": 1,
1325
+ "tick": 4294967295
1326
+ },
1327
+ "marker": [
1328
+ 3499,
1329
+ 1
1330
+ ]
1331
+ }
1332
+ ],
1333
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1334
+ "source": {
1335
+ "archive": "zUrT43_qvm.pk3",
1336
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
1337
+ "member": {
1338
+ "bytes": 983300,
1339
+ "comment_hex": "",
1340
+ "compressed_bytes": 246560,
1341
+ "compression": 8,
1342
+ "crc32": "98ea1768",
1343
+ "create_system": 0,
1344
+ "create_version": 63,
1345
+ "date_time": [
1346
+ 2018,
1347
+ 6,
1348
+ 18,
1349
+ 22,
1350
+ 11,
1351
+ 50
1352
+ ],
1353
+ "directory": false,
1354
+ "entry_index": 2,
1355
+ "external_attr": 32,
1356
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
1357
+ "extract_version": 20,
1358
+ "flags": 0,
1359
+ "header_offset": 221309,
1360
+ "internal_attr": 0,
1361
+ "occurrence": 0,
1362
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
1363
+ "path": "vm/qagame.qvm",
1364
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1365
+ "type": "member",
1366
+ "volume": 0
1367
+ }
1368
+ }
1369
+ }
scripts/analyze_qvm_effect_radio.py ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Verified original movement-context source contract."""
2
+ from pathlib import Path
3
+ from analyze_qvm import write_json
4
+ from qvm_research_support import source
5
+ from qvm_effect_feedback_support import seed,radio,radio_fixtures
6
+
7
+ def main():
8
+ q,raw,h,ins=source();probes=[]
9
+ for a in radio_fixtures():
10
+ m,b=seed(raw,h,a);m,p,b=radio(ins,m,b,a);p['input']=a;probes.append(p)
11
+ write_json(Path('docs/research/qvm-effect-radio.json'),dict(source=q['source'],sha256=q['sha256'],probes=probes,limits='Actual193620 with actual33715 classification. Location text supplied, fixed rsay integer/string formatting modeled, native-18 send captured. No direct audio playback or runtime network conformance.'))
12
+ if __name__=='__main__':main()
scripts/qvm_effect_feedback_oracle.py CHANGED
@@ -2,3 +2,17 @@
2
  def counter(a):
3
  counters=[100+j for j in range(15)];counters[a['index']]=(a['value']+1)&0xffffffff
4
  return dict(counters=counters,guards=[0xaabbccdd,0x11223344])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  def counter(a):
3
  counters=[100+j for j in range(15)];counters[a['index']]=(a['value']+1)&0xffffffff
4
  return dict(counters=counters,guards=[0xaabbccdd,0x11223344])
5
+
6
+ from qvm_move_callbacks_oracle import signed
7
+
8
+ def radio(a):
9
+ from qvm_effect_feedback_support import radio_clients
10
+ active=not a['follow'] and signed(a['health'])>0 and a['team']!=3;commands=[]
11
+ if active:
12
+ mode=signed(a['mode']);team_mode=mode>=3 and mode not in [9,11]
13
+ payload=bytes.fromhex(a['payload']) if a['success'] else b''
14
+ text=(b'rsay 2 -1 '+str(signed(a['code'])).encode()+b' "'+payload+b'"').hex()
15
+ for j,(connection,team) in enumerate(radio_clients(a)[:a['count']]):
16
+ if j==2:team=a['team']
17
+ if connection==2 and (team_mode or mode==9) and team==a['team']:commands.append(dict(slot=j,text=text))
18
+ return dict(commands=commands,getter_calls=int(active),marker=[(a['tick']+3500)&0xffffffff,1] if commands and a['marker'] else [17,18])
scripts/qvm_effect_feedback_support.py CHANGED
@@ -20,3 +20,45 @@ def counter(ins,m,b,a):
20
  m[CLIENT+3036+4*a['index']]=a['value'];m[CLIENT+3032]=0xaabbccdd;m[CLIENT+3096]=0x11223344
21
  m,v,p,b=run(ins,m,283463,283486,12,{8:ENTITY,12:a['index']},b,base=BASE)
22
  return m,dict(counters=[m[CLIENT+3036+4*j]&0xffffffff for j in range(15)],guards=[m[CLIENT+3032]&0xffffffff,m[CLIENT+3096]&0xffffffff],execution=p['execution']),b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  m[CLIENT+3036+4*a['index']]=a['value'];m[CLIENT+3032]=0xaabbccdd;m[CLIENT+3096]=0x11223344
21
  m,v,p,b=run(ins,m,283463,283486,12,{8:ENTITY,12:a['index']},b,base=BASE)
22
  return m,dict(counters=[m[CLIENT+3036+4*j]&0xffffffff for j in range(15)],guards=[m[CLIENT+3032]&0xffffffff,m[CLIENT+3096]&0xffffffff],execution=p['execution']),b
23
+
24
+ MARK=ROOT+0x160000
25
+ TEXT=ROOT+0x170000
26
+ RADIO=ROOT+0x140000
27
+
28
+ def radio_fixtures():
29
+ profiles=[{},dict(follow=1),dict(health=0),dict(health=0xffffffff),dict(team=3),dict(mode=0),dict(mode=3),dict(mode=9),dict(mode=11),dict(mode=0xffffffff),dict(team=2),dict(count=0),dict(count=64),dict(disconnected=1),dict(other_only=1),dict(marker=0),dict(tick=0xffffffff)]
30
+ rows=[]
31
+ for j,changes in enumerate(profiles):
32
+ for success in [0,1]:rows.append(dict(dict(mode=8,follow=0,health=1,team=1,count=4,disconnected=0,other_only=0,marker=1,tick=10000,code=7,payload=(b'P"q' if j%2 else b'Bomb site').hex()),**changes,success=success,profile=j))
33
+ return rows
34
+
35
+ def radio_clients(a):
36
+ return [[0 if a['disconnected'] else 2 if j%4!=3 or j==63 else 1,2 if a['other_only'] else (1 if j%2==0 else 2)] for j in range(max(3,a['count']))]
37
+
38
+ def radio_seed(m,b,a):
39
+ m.update({ENTITY+520:CLIENT,CLIENT+4324:a['follow'],CLIENT+208:a['health'],CLIENT+3096:a['team'],CLIENT+140:2,CLIENT+6168:MARK if a['marker'] else 0,34090788:a['mode'],34992524:a['count'],34992532:a['tick'],MARK+84:17,MARK+204:18})
40
+ for j,(connection,team) in enumerate(radio_clients(a)):
41
+ c=CPOOL+6336*j;m[POOL+880*j+520]=c;m[c+468]=connection;m[c+3096]=team
42
+ # Sender team shares the same client word traversed by the recipient loop.
43
+ m[CLIENT+3096]=a['team']
44
+ write_bytes(m,b,{RADIO+32+j:77 for j in range(156)})
45
+
46
+ def radio_run(ins,m,b,code,payload,success):
47
+ commands=[];getters=[]
48
+ def location(i,m,args,bs):
49
+ assert args[8]==ENTITY and args[12]==RADIO+32 and args[16]==150
50
+ data=bytes(payload)+b'\0'+b'\0'*4;changes={args[12]+j:v for j,v in enumerate(data)};write_bytes(m,dict(bs),changes);getters.append(1)
51
+ return m,success,{'supplied_location':True,'child_memory_bytes':changes}
52
+ def classify(i,m,args,bs):
53
+ m,v,p,b=run(i,m,33715,33738,12,args,dict(bs),base=ROOT+0x150000);return m,v,{'actual_source_child':33715}
54
+ def format_(i,m,args,bs):
55
+ assert cstring(m,bs,args[8])==b'rsay %d %d %d "%s"'
56
+ ints=[((args[o]&0xffffffff)-2**32 if args[o]&0x80000000 else args[o]) for o in [12,16,20]]
57
+ data=('rsay %d %d %d "'%tuple(ints)).encode()+cstring(m,bs,args[24])+b'"\0'+b'\0'*4
58
+ changes={TEXT+j:v for j,v in enumerate(data)};write_bytes(m,dict(bs),changes)
59
+ return m,TEXT,{'modeled_integer_string_formatter':True,'child_memory_bytes':changes}
60
+ def send(i,m,args,bs):commands.append(dict(slot=args[8],text=cstring(m,bs,args[12]).hex()));return m,0,{'captured_native_send':True}
61
+ m,v,p,b=run(ins,m,193620,193827,204,{8:code,12:ENTITY},b,{268637:location,33715:classify,70458:format_,-18:send},base=RADIO)
62
+ return m,dict(commands=commands,getter_calls=len(getters),marker=[m[MARK+84]&0xffffffff,m[MARK+204]&0xffffffff],execution=p['execution']),b
63
+
64
+ def radio(ins,m,b,a):radio_seed(m,b,a);return radio_run(ins,m,b,a['code'],bytes.fromhex(a['payload']),a['success'])
scripts/test_qvm_effect_radio.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from qvm_effect_feedback_oracle import radio
4
+ class OriginalTests(unittest.TestCase):
5
+ def test_original_contract(self):
6
+ rows=json.loads(Path('docs/research/qvm-effect-radio.json').read_text())['probes'];self.assertEqual(len(rows),34)
7
+ for p in rows:
8
+ with self.subTest(input=p['input']):
9
+ for k,v in radio(p['input']).items():self.assertEqual(p[k],v,k)
10
+ def test_fixture_identity_and_trace(self):
11
+ r=json.loads(Path('docs/research/qvm-effect-radio.json').read_text());self.assertEqual(len(r['sha256']),64)
12
+ self.assertTrue(all(p['execution']['trace_length']>0 for p in r['probes']))
13
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -4356,3 +4356,7 @@ edge crates/urt-gameplay/src/score.rs scripts/analyze_rust_effect_counter.py
4356
  edge crates/urt-gameplay/src/transition.rs scripts/analyze_rust_effect_counter.py
4357
  edge crates/urt-gameplay/src/effect_feedback.rs scripts/analyze_rust_health_impulse.py
4358
  edge crates/urt-gameplay/src/bin/urt-effect-feedback.rs scripts/analyze_rust_health_impulse.py
 
 
 
 
 
4356
  edge crates/urt-gameplay/src/transition.rs scripts/analyze_rust_effect_counter.py
4357
  edge crates/urt-gameplay/src/effect_feedback.rs scripts/analyze_rust_health_impulse.py
4358
  edge crates/urt-gameplay/src/bin/urt-effect-feedback.rs scripts/analyze_rust_health_impulse.py
4359
+ report scripts/analyze_qvm_effect_radio.py docs/research/qvm-effect-radio.json
4360
+ edge docs/research/qvm-effect-radio.json scripts/test_qvm_effect_radio.py
4361
+ group qvm-effect-radio scripts/analyze_qvm_effect_radio.py
4362
+ edge scripts/analyze_qvm_effect_radio.py scripts/analyze_qvm_resumer_audit.py