nmarshall commited on
Commit
63d4cac
·
1 Parent(s): f6bc437

qvm: recover timed self-recovery callback

Browse files
docs/FINDINGS.md CHANGED
@@ -1925,3 +1925,5 @@ RE-984–993 batch validation passed:1,918 Python tests,289 Rust tests,116 deter
1925
  RE-994: 90 original-QVM fixtures execute152386: signed integer meter converts to f32, adds carry, truncates and clamps below zero; carry clears. At32000 or greater the meter resets, client mask16384 and flag104 mask16 clear, and movement type becomes0. Melt completion requests event107 then log; assisted completion requests teleport/reset, event108 then log. The supplied event receives owner168 and mask32. Optional receiver meter mirroring runs after completion. Nested teleport/reset effects remain captured. [Evidence](research/QVM_MOVE_METER.md).
1926
 
1927
  RE-995: Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. [Evidence](research/RUST_MOVE_METER.md).
 
 
 
1925
  RE-994: 90 original-QVM fixtures execute152386: signed integer meter converts to f32, adds carry, truncates and clamps below zero; carry clears. At32000 or greater the meter resets, client mask16384 and flag104 mask16 clear, and movement type becomes0. Melt completion requests event107 then log; assisted completion requests teleport/reset, event108 then log. The supplied event receives owner168 and mask32. Optional receiver meter mirroring runs after completion. Nested teleport/reset effects remain captured. [Evidence](research/QVM_MOVE_METER.md).
1926
 
1927
  RE-995: Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. [Evidence](research/RUST_MOVE_METER.md).
1928
+
1929
+ RE-996: Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. [Evidence](research/QVM_MOVE_SELF_RECOVERY.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1982,3 +1982,5 @@ RE-974–983 completed routing, command rewrite, inactivity, movement-parameter
1982
  - [x] RE-994 Recover meter completion and thaw event effects ([evidence](research/QVM_MOVE_METER.md)).
1983
 
1984
  - [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
 
 
 
1982
  - [x] RE-994 Recover meter completion and thaw event effects ([evidence](research/QVM_MOVE_METER.md)).
1983
 
1984
  - [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
1985
+
1986
+ - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2655,3 +2655,7 @@ Rust stages the complete movement-setup plan, applies pure supplied callback fee
2655
  ## 2026-10-29 — RE-995 Port meter completion and captured thaw effects
2656
 
2657
  Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. Focused `cargo xtask test-group rust-move-meter` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
 
 
 
 
 
2655
  ## 2026-10-29 — RE-995 Port meter completion and captured thaw effects
2656
 
2657
  Rust ports meter f32 conversion, truncation, clamping, completion masks, event ownership and optional receiver mirroring across ninety source cases. Completion effects preserve source ordering. Nonfinite/out-of-range conversion, invalid client indices and assisted completion without a receiver reject before state mutation. Teleport/reset/log/event allocation remain effect plans and supplied event state rather than native execution. Focused `cargo xtask test-group rust-move-meter` passes with deterministic report regeneration and selected regressions. Full suite deferred to task ten. Original assets unchanged; Python uses the flake-declared Nix runtime.
2658
+
2659
+ ## 2026-10-29 — RE-996 Recover timed mode10 self-recovery
2660
+
2661
+ Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured. Focused `cargo xtask test-group qvm-move-self-recovery` 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
@@ -2019,3 +2019,5 @@ RE-974–983 recover routing, command rewriting, inactivity and composed setup t
2019
  - [x] RE-994 Recover meter completion and thaw event effects ([evidence](research/QVM_MOVE_METER.md)).
2020
 
2021
  - [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
 
 
 
2019
  - [x] RE-994 Recover meter completion and thaw event effects ([evidence](research/QVM_MOVE_METER.md)).
2020
 
2021
  - [x] RE-995 Port meter completion and captured thaw effects ([evidence](research/RUST_MOVE_METER.md)).
2022
+
2023
+ - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
docs/research/QVM_MOVE_SELF_RECOVERY.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Recover timed mode10 self-recovery
2
+
3
+ RE-996. Focused validation: `cargo xtask test-group qvm-move-self-recovery`. [Machine report](qvm-move-self-recovery.json).
4
+
5
+ Thirty-six original-QVM cases execute152673 with actual meter child152386. Entity/client existence, mode10, connection2, positive signed health, zero follow and client mask16384 gate processing. Progress uses staged f32 operations32000/(seconds*1000)*signed wrapped elapsed, adds carry, advances clock6324, then runs self-melt completion. Negative elapsed/duration, wrapped ticks, fractional carry and all admission exits are covered. Early exits preserve clock and carry; event/log effects remain captured.
docs/research/README.md CHANGED
@@ -1553,3 +1553,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1553
  - [RE-994: Recover meter completion and thaw event effects](QVM_MOVE_METER.md).
1554
 
1555
  - [RE-995: Port meter completion and captured thaw effects](RUST_MOVE_METER.md).
 
 
 
1553
  - [RE-994: Recover meter completion and thaw event effects](QVM_MOVE_METER.md).
1554
 
1555
  - [RE-995: Port meter completion and captured thaw effects](RUST_MOVE_METER.md).
1556
+
1557
+ - [RE-996: Recover timed mode10 self-recovery](QVM_MOVE_SELF_RECOVERY.md).
docs/research/qvm-move-self-recovery.json ADDED
@@ -0,0 +1,1445 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Actual152673 through152789 with actual152386 child. Finite nonzero duration and in-range conversion; nested completion effects captured.",
3
+ "probes": [
4
+ {
5
+ "carry_bits": 0,
6
+ "event_entity": [
7
+ 7,
8
+ 2147483649
9
+ ],
10
+ "events": [],
11
+ "execution": {
12
+ "stop": 152790,
13
+ "trace_length": 106,
14
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
15
+ },
16
+ "flags104": 2147483666,
17
+ "flags220": 2147508226,
18
+ "input": {
19
+ "carry": 0.5,
20
+ "client": 1,
21
+ "connection": 2,
22
+ "entity": 1,
23
+ "flags104": 2147483666,
24
+ "flags220": 2147508226,
25
+ "follow": 0,
26
+ "health": 1,
27
+ "last": 9900,
28
+ "melt": 1,
29
+ "meter": 0,
30
+ "mirror": 0,
31
+ "mode": 10,
32
+ "name": "normal",
33
+ "pm_type": 4,
34
+ "seconds": 0.5,
35
+ "tick": 10000
36
+ },
37
+ "last": 10000,
38
+ "meter": 6400,
39
+ "pm_type": 4,
40
+ "receiver": 999
41
+ },
42
+ {
43
+ "carry_bits": 0,
44
+ "event_entity": [
45
+ 7,
46
+ 2147483649
47
+ ],
48
+ "events": [],
49
+ "execution": {
50
+ "stop": 152790,
51
+ "trace_length": 106,
52
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
53
+ },
54
+ "flags104": 2147483666,
55
+ "flags220": 2147508226,
56
+ "input": {
57
+ "carry": 0.5,
58
+ "client": 1,
59
+ "connection": 2,
60
+ "entity": 1,
61
+ "flags104": 2147483666,
62
+ "flags220": 2147508226,
63
+ "follow": 0,
64
+ "health": 1,
65
+ "last": 9900,
66
+ "melt": 1,
67
+ "meter": 0,
68
+ "mirror": 0,
69
+ "mode": 10,
70
+ "name": "normal",
71
+ "pm_type": 4,
72
+ "seconds": 2.0,
73
+ "tick": 10000
74
+ },
75
+ "last": 10000,
76
+ "meter": 1600,
77
+ "pm_type": 4,
78
+ "receiver": 999
79
+ },
80
+ {
81
+ "carry_bits": 0,
82
+ "event_entity": [
83
+ 7,
84
+ 2147483649
85
+ ],
86
+ "events": [],
87
+ "execution": {
88
+ "stop": 152790,
89
+ "trace_length": 106,
90
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
91
+ },
92
+ "flags104": 2147483666,
93
+ "flags220": 2147508226,
94
+ "input": {
95
+ "carry": 0.5,
96
+ "client": 1,
97
+ "connection": 2,
98
+ "entity": 1,
99
+ "flags104": 2147483666,
100
+ "flags220": 2147508226,
101
+ "follow": 0,
102
+ "health": 1,
103
+ "last": 9900,
104
+ "melt": 1,
105
+ "meter": 0,
106
+ "mirror": 0,
107
+ "mode": 10,
108
+ "name": "normal",
109
+ "pm_type": 4,
110
+ "seconds": -2.0,
111
+ "tick": 10000
112
+ },
113
+ "last": 10000,
114
+ "meter": 0,
115
+ "pm_type": 4,
116
+ "receiver": 999
117
+ },
118
+ {
119
+ "carry_bits": 1056964608,
120
+ "event_entity": [
121
+ 7,
122
+ 2147483649
123
+ ],
124
+ "events": [],
125
+ "execution": {
126
+ "stop": 152790,
127
+ "trace_length": 10,
128
+ "trace_sha256": "d36f610b8153ca9921cbcd9c73163671bdc21e71762b9059a3186e9f4fdb3bbf"
129
+ },
130
+ "flags104": 2147483666,
131
+ "flags220": 2147508226,
132
+ "input": {
133
+ "carry": 0.5,
134
+ "client": 1,
135
+ "connection": 2,
136
+ "entity": 0,
137
+ "flags104": 2147483666,
138
+ "flags220": 2147508226,
139
+ "follow": 0,
140
+ "health": 1,
141
+ "last": 9900,
142
+ "melt": 1,
143
+ "meter": 0,
144
+ "mirror": 0,
145
+ "mode": 10,
146
+ "name": "null-entity",
147
+ "pm_type": 4,
148
+ "seconds": 0.5,
149
+ "tick": 10000
150
+ },
151
+ "last": 9900,
152
+ "meter": 0,
153
+ "pm_type": 4,
154
+ "receiver": 999
155
+ },
156
+ {
157
+ "carry_bits": 1056964608,
158
+ "event_entity": [
159
+ 7,
160
+ 2147483649
161
+ ],
162
+ "events": [],
163
+ "execution": {
164
+ "stop": 152790,
165
+ "trace_length": 10,
166
+ "trace_sha256": "d36f610b8153ca9921cbcd9c73163671bdc21e71762b9059a3186e9f4fdb3bbf"
167
+ },
168
+ "flags104": 2147483666,
169
+ "flags220": 2147508226,
170
+ "input": {
171
+ "carry": 0.5,
172
+ "client": 1,
173
+ "connection": 2,
174
+ "entity": 0,
175
+ "flags104": 2147483666,
176
+ "flags220": 2147508226,
177
+ "follow": 0,
178
+ "health": 1,
179
+ "last": 9900,
180
+ "melt": 1,
181
+ "meter": 0,
182
+ "mirror": 0,
183
+ "mode": 10,
184
+ "name": "null-entity",
185
+ "pm_type": 4,
186
+ "seconds": 2.0,
187
+ "tick": 10000
188
+ },
189
+ "last": 9900,
190
+ "meter": 0,
191
+ "pm_type": 4,
192
+ "receiver": 999
193
+ },
194
+ {
195
+ "carry_bits": 1056964608,
196
+ "event_entity": [
197
+ 7,
198
+ 2147483649
199
+ ],
200
+ "events": [],
201
+ "execution": {
202
+ "stop": 152790,
203
+ "trace_length": 10,
204
+ "trace_sha256": "d36f610b8153ca9921cbcd9c73163671bdc21e71762b9059a3186e9f4fdb3bbf"
205
+ },
206
+ "flags104": 2147483666,
207
+ "flags220": 2147508226,
208
+ "input": {
209
+ "carry": 0.5,
210
+ "client": 1,
211
+ "connection": 2,
212
+ "entity": 0,
213
+ "flags104": 2147483666,
214
+ "flags220": 2147508226,
215
+ "follow": 0,
216
+ "health": 1,
217
+ "last": 9900,
218
+ "melt": 1,
219
+ "meter": 0,
220
+ "mirror": 0,
221
+ "mode": 10,
222
+ "name": "null-entity",
223
+ "pm_type": 4,
224
+ "seconds": -2.0,
225
+ "tick": 10000
226
+ },
227
+ "last": 9900,
228
+ "meter": 0,
229
+ "pm_type": 4,
230
+ "receiver": 999
231
+ },
232
+ {
233
+ "carry_bits": 1056964608,
234
+ "event_entity": [
235
+ 7,
236
+ 2147483649
237
+ ],
238
+ "events": [],
239
+ "execution": {
240
+ "stop": 152790,
241
+ "trace_length": 17,
242
+ "trace_sha256": "afeb2e87c387a5cd2739f2cb1bb061aa118f7975dd143108cc2cdbe5240309e6"
243
+ },
244
+ "flags104": 2147483666,
245
+ "flags220": 2147508226,
246
+ "input": {
247
+ "carry": 0.5,
248
+ "client": 0,
249
+ "connection": 2,
250
+ "entity": 1,
251
+ "flags104": 2147483666,
252
+ "flags220": 2147508226,
253
+ "follow": 0,
254
+ "health": 1,
255
+ "last": 9900,
256
+ "melt": 1,
257
+ "meter": 0,
258
+ "mirror": 0,
259
+ "mode": 10,
260
+ "name": "null-client",
261
+ "pm_type": 4,
262
+ "seconds": 0.5,
263
+ "tick": 10000
264
+ },
265
+ "last": 9900,
266
+ "meter": 0,
267
+ "pm_type": 4,
268
+ "receiver": 999
269
+ },
270
+ {
271
+ "carry_bits": 1056964608,
272
+ "event_entity": [
273
+ 7,
274
+ 2147483649
275
+ ],
276
+ "events": [],
277
+ "execution": {
278
+ "stop": 152790,
279
+ "trace_length": 17,
280
+ "trace_sha256": "afeb2e87c387a5cd2739f2cb1bb061aa118f7975dd143108cc2cdbe5240309e6"
281
+ },
282
+ "flags104": 2147483666,
283
+ "flags220": 2147508226,
284
+ "input": {
285
+ "carry": 0.5,
286
+ "client": 0,
287
+ "connection": 2,
288
+ "entity": 1,
289
+ "flags104": 2147483666,
290
+ "flags220": 2147508226,
291
+ "follow": 0,
292
+ "health": 1,
293
+ "last": 9900,
294
+ "melt": 1,
295
+ "meter": 0,
296
+ "mirror": 0,
297
+ "mode": 10,
298
+ "name": "null-client",
299
+ "pm_type": 4,
300
+ "seconds": 2.0,
301
+ "tick": 10000
302
+ },
303
+ "last": 9900,
304
+ "meter": 0,
305
+ "pm_type": 4,
306
+ "receiver": 999
307
+ },
308
+ {
309
+ "carry_bits": 1056964608,
310
+ "event_entity": [
311
+ 7,
312
+ 2147483649
313
+ ],
314
+ "events": [],
315
+ "execution": {
316
+ "stop": 152790,
317
+ "trace_length": 17,
318
+ "trace_sha256": "afeb2e87c387a5cd2739f2cb1bb061aa118f7975dd143108cc2cdbe5240309e6"
319
+ },
320
+ "flags104": 2147483666,
321
+ "flags220": 2147508226,
322
+ "input": {
323
+ "carry": 0.5,
324
+ "client": 0,
325
+ "connection": 2,
326
+ "entity": 1,
327
+ "flags104": 2147483666,
328
+ "flags220": 2147508226,
329
+ "follow": 0,
330
+ "health": 1,
331
+ "last": 9900,
332
+ "melt": 1,
333
+ "meter": 0,
334
+ "mirror": 0,
335
+ "mode": 10,
336
+ "name": "null-client",
337
+ "pm_type": 4,
338
+ "seconds": -2.0,
339
+ "tick": 10000
340
+ },
341
+ "last": 9900,
342
+ "meter": 0,
343
+ "pm_type": 4,
344
+ "receiver": 999
345
+ },
346
+ {
347
+ "carry_bits": 1056964608,
348
+ "event_entity": [
349
+ 7,
350
+ 2147483649
351
+ ],
352
+ "events": [],
353
+ "execution": {
354
+ "stop": 152790,
355
+ "trace_length": 21,
356
+ "trace_sha256": "59c437a3d0d6b81fcb1106f44fd5897aab6cb83d8080a629a40188608fdbcc89"
357
+ },
358
+ "flags104": 2147483666,
359
+ "flags220": 2147508226,
360
+ "input": {
361
+ "carry": 0.5,
362
+ "client": 1,
363
+ "connection": 2,
364
+ "entity": 1,
365
+ "flags104": 2147483666,
366
+ "flags220": 2147508226,
367
+ "follow": 0,
368
+ "health": 1,
369
+ "last": 9900,
370
+ "melt": 1,
371
+ "meter": 0,
372
+ "mirror": 0,
373
+ "mode": 9,
374
+ "name": "wrong-mode",
375
+ "pm_type": 4,
376
+ "seconds": 0.5,
377
+ "tick": 10000
378
+ },
379
+ "last": 9900,
380
+ "meter": 0,
381
+ "pm_type": 4,
382
+ "receiver": 999
383
+ },
384
+ {
385
+ "carry_bits": 1056964608,
386
+ "event_entity": [
387
+ 7,
388
+ 2147483649
389
+ ],
390
+ "events": [],
391
+ "execution": {
392
+ "stop": 152790,
393
+ "trace_length": 21,
394
+ "trace_sha256": "59c437a3d0d6b81fcb1106f44fd5897aab6cb83d8080a629a40188608fdbcc89"
395
+ },
396
+ "flags104": 2147483666,
397
+ "flags220": 2147508226,
398
+ "input": {
399
+ "carry": 0.5,
400
+ "client": 1,
401
+ "connection": 2,
402
+ "entity": 1,
403
+ "flags104": 2147483666,
404
+ "flags220": 2147508226,
405
+ "follow": 0,
406
+ "health": 1,
407
+ "last": 9900,
408
+ "melt": 1,
409
+ "meter": 0,
410
+ "mirror": 0,
411
+ "mode": 9,
412
+ "name": "wrong-mode",
413
+ "pm_type": 4,
414
+ "seconds": 2.0,
415
+ "tick": 10000
416
+ },
417
+ "last": 9900,
418
+ "meter": 0,
419
+ "pm_type": 4,
420
+ "receiver": 999
421
+ },
422
+ {
423
+ "carry_bits": 1056964608,
424
+ "event_entity": [
425
+ 7,
426
+ 2147483649
427
+ ],
428
+ "events": [],
429
+ "execution": {
430
+ "stop": 152790,
431
+ "trace_length": 21,
432
+ "trace_sha256": "59c437a3d0d6b81fcb1106f44fd5897aab6cb83d8080a629a40188608fdbcc89"
433
+ },
434
+ "flags104": 2147483666,
435
+ "flags220": 2147508226,
436
+ "input": {
437
+ "carry": 0.5,
438
+ "client": 1,
439
+ "connection": 2,
440
+ "entity": 1,
441
+ "flags104": 2147483666,
442
+ "flags220": 2147508226,
443
+ "follow": 0,
444
+ "health": 1,
445
+ "last": 9900,
446
+ "melt": 1,
447
+ "meter": 0,
448
+ "mirror": 0,
449
+ "mode": 9,
450
+ "name": "wrong-mode",
451
+ "pm_type": 4,
452
+ "seconds": -2.0,
453
+ "tick": 10000
454
+ },
455
+ "last": 9900,
456
+ "meter": 0,
457
+ "pm_type": 4,
458
+ "receiver": 999
459
+ },
460
+ {
461
+ "carry_bits": 1056964608,
462
+ "event_entity": [
463
+ 7,
464
+ 2147483649
465
+ ],
466
+ "events": [],
467
+ "execution": {
468
+ "stop": 152790,
469
+ "trace_length": 35,
470
+ "trace_sha256": "efeb51af17e13f0fd2e8997cfcc2535eafd90d8b8fe4adaeef7c442abdf0b65c"
471
+ },
472
+ "flags104": 2147483666,
473
+ "flags220": 2147508226,
474
+ "input": {
475
+ "carry": 0.5,
476
+ "client": 1,
477
+ "connection": 1,
478
+ "entity": 1,
479
+ "flags104": 2147483666,
480
+ "flags220": 2147508226,
481
+ "follow": 0,
482
+ "health": 1,
483
+ "last": 9900,
484
+ "melt": 1,
485
+ "meter": 0,
486
+ "mirror": 0,
487
+ "mode": 10,
488
+ "name": "unconnected",
489
+ "pm_type": 4,
490
+ "seconds": 0.5,
491
+ "tick": 10000
492
+ },
493
+ "last": 9900,
494
+ "meter": 0,
495
+ "pm_type": 4,
496
+ "receiver": 999
497
+ },
498
+ {
499
+ "carry_bits": 1056964608,
500
+ "event_entity": [
501
+ 7,
502
+ 2147483649
503
+ ],
504
+ "events": [],
505
+ "execution": {
506
+ "stop": 152790,
507
+ "trace_length": 35,
508
+ "trace_sha256": "efeb51af17e13f0fd2e8997cfcc2535eafd90d8b8fe4adaeef7c442abdf0b65c"
509
+ },
510
+ "flags104": 2147483666,
511
+ "flags220": 2147508226,
512
+ "input": {
513
+ "carry": 0.5,
514
+ "client": 1,
515
+ "connection": 1,
516
+ "entity": 1,
517
+ "flags104": 2147483666,
518
+ "flags220": 2147508226,
519
+ "follow": 0,
520
+ "health": 1,
521
+ "last": 9900,
522
+ "melt": 1,
523
+ "meter": 0,
524
+ "mirror": 0,
525
+ "mode": 10,
526
+ "name": "unconnected",
527
+ "pm_type": 4,
528
+ "seconds": 2.0,
529
+ "tick": 10000
530
+ },
531
+ "last": 9900,
532
+ "meter": 0,
533
+ "pm_type": 4,
534
+ "receiver": 999
535
+ },
536
+ {
537
+ "carry_bits": 1056964608,
538
+ "event_entity": [
539
+ 7,
540
+ 2147483649
541
+ ],
542
+ "events": [],
543
+ "execution": {
544
+ "stop": 152790,
545
+ "trace_length": 35,
546
+ "trace_sha256": "efeb51af17e13f0fd2e8997cfcc2535eafd90d8b8fe4adaeef7c442abdf0b65c"
547
+ },
548
+ "flags104": 2147483666,
549
+ "flags220": 2147508226,
550
+ "input": {
551
+ "carry": 0.5,
552
+ "client": 1,
553
+ "connection": 1,
554
+ "entity": 1,
555
+ "flags104": 2147483666,
556
+ "flags220": 2147508226,
557
+ "follow": 0,
558
+ "health": 1,
559
+ "last": 9900,
560
+ "melt": 1,
561
+ "meter": 0,
562
+ "mirror": 0,
563
+ "mode": 10,
564
+ "name": "unconnected",
565
+ "pm_type": 4,
566
+ "seconds": -2.0,
567
+ "tick": 10000
568
+ },
569
+ "last": 9900,
570
+ "meter": 0,
571
+ "pm_type": 4,
572
+ "receiver": 999
573
+ },
574
+ {
575
+ "carry_bits": 1056964608,
576
+ "event_entity": [
577
+ 7,
578
+ 2147483649
579
+ ],
580
+ "events": [],
581
+ "execution": {
582
+ "stop": 152790,
583
+ "trace_length": 42,
584
+ "trace_sha256": "4426ecb70491ac2d7b0a063e3469aa2c1e228082da9f5dc53d962efdbc7c841d"
585
+ },
586
+ "flags104": 2147483666,
587
+ "flags220": 2147508226,
588
+ "input": {
589
+ "carry": 0.5,
590
+ "client": 1,
591
+ "connection": 2,
592
+ "entity": 1,
593
+ "flags104": 2147483666,
594
+ "flags220": 2147508226,
595
+ "follow": 0,
596
+ "health": 0,
597
+ "last": 9900,
598
+ "melt": 1,
599
+ "meter": 0,
600
+ "mirror": 0,
601
+ "mode": 10,
602
+ "name": "dead",
603
+ "pm_type": 4,
604
+ "seconds": 0.5,
605
+ "tick": 10000
606
+ },
607
+ "last": 9900,
608
+ "meter": 0,
609
+ "pm_type": 4,
610
+ "receiver": 999
611
+ },
612
+ {
613
+ "carry_bits": 1056964608,
614
+ "event_entity": [
615
+ 7,
616
+ 2147483649
617
+ ],
618
+ "events": [],
619
+ "execution": {
620
+ "stop": 152790,
621
+ "trace_length": 42,
622
+ "trace_sha256": "4426ecb70491ac2d7b0a063e3469aa2c1e228082da9f5dc53d962efdbc7c841d"
623
+ },
624
+ "flags104": 2147483666,
625
+ "flags220": 2147508226,
626
+ "input": {
627
+ "carry": 0.5,
628
+ "client": 1,
629
+ "connection": 2,
630
+ "entity": 1,
631
+ "flags104": 2147483666,
632
+ "flags220": 2147508226,
633
+ "follow": 0,
634
+ "health": 0,
635
+ "last": 9900,
636
+ "melt": 1,
637
+ "meter": 0,
638
+ "mirror": 0,
639
+ "mode": 10,
640
+ "name": "dead",
641
+ "pm_type": 4,
642
+ "seconds": 2.0,
643
+ "tick": 10000
644
+ },
645
+ "last": 9900,
646
+ "meter": 0,
647
+ "pm_type": 4,
648
+ "receiver": 999
649
+ },
650
+ {
651
+ "carry_bits": 1056964608,
652
+ "event_entity": [
653
+ 7,
654
+ 2147483649
655
+ ],
656
+ "events": [],
657
+ "execution": {
658
+ "stop": 152790,
659
+ "trace_length": 42,
660
+ "trace_sha256": "4426ecb70491ac2d7b0a063e3469aa2c1e228082da9f5dc53d962efdbc7c841d"
661
+ },
662
+ "flags104": 2147483666,
663
+ "flags220": 2147508226,
664
+ "input": {
665
+ "carry": 0.5,
666
+ "client": 1,
667
+ "connection": 2,
668
+ "entity": 1,
669
+ "flags104": 2147483666,
670
+ "flags220": 2147508226,
671
+ "follow": 0,
672
+ "health": 0,
673
+ "last": 9900,
674
+ "melt": 1,
675
+ "meter": 0,
676
+ "mirror": 0,
677
+ "mode": 10,
678
+ "name": "dead",
679
+ "pm_type": 4,
680
+ "seconds": -2.0,
681
+ "tick": 10000
682
+ },
683
+ "last": 9900,
684
+ "meter": 0,
685
+ "pm_type": 4,
686
+ "receiver": 999
687
+ },
688
+ {
689
+ "carry_bits": 1056964608,
690
+ "event_entity": [
691
+ 7,
692
+ 2147483649
693
+ ],
694
+ "events": [],
695
+ "execution": {
696
+ "stop": 152790,
697
+ "trace_length": 49,
698
+ "trace_sha256": "6da0c4a526b93cd67a4a2190446183df6672551c41d2f9d525972d900fd48149"
699
+ },
700
+ "flags104": 2147483666,
701
+ "flags220": 2147508226,
702
+ "input": {
703
+ "carry": 0.5,
704
+ "client": 1,
705
+ "connection": 2,
706
+ "entity": 1,
707
+ "flags104": 2147483666,
708
+ "flags220": 2147508226,
709
+ "follow": 1,
710
+ "health": 1,
711
+ "last": 9900,
712
+ "melt": 1,
713
+ "meter": 0,
714
+ "mirror": 0,
715
+ "mode": 10,
716
+ "name": "following",
717
+ "pm_type": 4,
718
+ "seconds": 0.5,
719
+ "tick": 10000
720
+ },
721
+ "last": 9900,
722
+ "meter": 0,
723
+ "pm_type": 4,
724
+ "receiver": 999
725
+ },
726
+ {
727
+ "carry_bits": 1056964608,
728
+ "event_entity": [
729
+ 7,
730
+ 2147483649
731
+ ],
732
+ "events": [],
733
+ "execution": {
734
+ "stop": 152790,
735
+ "trace_length": 49,
736
+ "trace_sha256": "6da0c4a526b93cd67a4a2190446183df6672551c41d2f9d525972d900fd48149"
737
+ },
738
+ "flags104": 2147483666,
739
+ "flags220": 2147508226,
740
+ "input": {
741
+ "carry": 0.5,
742
+ "client": 1,
743
+ "connection": 2,
744
+ "entity": 1,
745
+ "flags104": 2147483666,
746
+ "flags220": 2147508226,
747
+ "follow": 1,
748
+ "health": 1,
749
+ "last": 9900,
750
+ "melt": 1,
751
+ "meter": 0,
752
+ "mirror": 0,
753
+ "mode": 10,
754
+ "name": "following",
755
+ "pm_type": 4,
756
+ "seconds": 2.0,
757
+ "tick": 10000
758
+ },
759
+ "last": 9900,
760
+ "meter": 0,
761
+ "pm_type": 4,
762
+ "receiver": 999
763
+ },
764
+ {
765
+ "carry_bits": 1056964608,
766
+ "event_entity": [
767
+ 7,
768
+ 2147483649
769
+ ],
770
+ "events": [],
771
+ "execution": {
772
+ "stop": 152790,
773
+ "trace_length": 49,
774
+ "trace_sha256": "6da0c4a526b93cd67a4a2190446183df6672551c41d2f9d525972d900fd48149"
775
+ },
776
+ "flags104": 2147483666,
777
+ "flags220": 2147508226,
778
+ "input": {
779
+ "carry": 0.5,
780
+ "client": 1,
781
+ "connection": 2,
782
+ "entity": 1,
783
+ "flags104": 2147483666,
784
+ "flags220": 2147508226,
785
+ "follow": 1,
786
+ "health": 1,
787
+ "last": 9900,
788
+ "melt": 1,
789
+ "meter": 0,
790
+ "mirror": 0,
791
+ "mode": 10,
792
+ "name": "following",
793
+ "pm_type": 4,
794
+ "seconds": -2.0,
795
+ "tick": 10000
796
+ },
797
+ "last": 9900,
798
+ "meter": 0,
799
+ "pm_type": 4,
800
+ "receiver": 999
801
+ },
802
+ {
803
+ "carry_bits": 1056964608,
804
+ "event_entity": [
805
+ 7,
806
+ 2147483649
807
+ ],
808
+ "events": [],
809
+ "execution": {
810
+ "stop": 152790,
811
+ "trace_length": 58,
812
+ "trace_sha256": "fb70777fd02b3a7d325db49a24ab2e5de71408fd48c8b58f9b2b5cd0e59a8860"
813
+ },
814
+ "flags104": 2147483666,
815
+ "flags220": 8192,
816
+ "input": {
817
+ "carry": 0.5,
818
+ "client": 1,
819
+ "connection": 2,
820
+ "entity": 1,
821
+ "flags104": 2147483666,
822
+ "flags220": 8192,
823
+ "follow": 0,
824
+ "health": 1,
825
+ "last": 9900,
826
+ "melt": 1,
827
+ "meter": 0,
828
+ "mirror": 0,
829
+ "mode": 10,
830
+ "name": "unflagged",
831
+ "pm_type": 4,
832
+ "seconds": 0.5,
833
+ "tick": 10000
834
+ },
835
+ "last": 9900,
836
+ "meter": 0,
837
+ "pm_type": 4,
838
+ "receiver": 999
839
+ },
840
+ {
841
+ "carry_bits": 1056964608,
842
+ "event_entity": [
843
+ 7,
844
+ 2147483649
845
+ ],
846
+ "events": [],
847
+ "execution": {
848
+ "stop": 152790,
849
+ "trace_length": 58,
850
+ "trace_sha256": "fb70777fd02b3a7d325db49a24ab2e5de71408fd48c8b58f9b2b5cd0e59a8860"
851
+ },
852
+ "flags104": 2147483666,
853
+ "flags220": 8192,
854
+ "input": {
855
+ "carry": 0.5,
856
+ "client": 1,
857
+ "connection": 2,
858
+ "entity": 1,
859
+ "flags104": 2147483666,
860
+ "flags220": 8192,
861
+ "follow": 0,
862
+ "health": 1,
863
+ "last": 9900,
864
+ "melt": 1,
865
+ "meter": 0,
866
+ "mirror": 0,
867
+ "mode": 10,
868
+ "name": "unflagged",
869
+ "pm_type": 4,
870
+ "seconds": 2.0,
871
+ "tick": 10000
872
+ },
873
+ "last": 9900,
874
+ "meter": 0,
875
+ "pm_type": 4,
876
+ "receiver": 999
877
+ },
878
+ {
879
+ "carry_bits": 1056964608,
880
+ "event_entity": [
881
+ 7,
882
+ 2147483649
883
+ ],
884
+ "events": [],
885
+ "execution": {
886
+ "stop": 152790,
887
+ "trace_length": 58,
888
+ "trace_sha256": "fb70777fd02b3a7d325db49a24ab2e5de71408fd48c8b58f9b2b5cd0e59a8860"
889
+ },
890
+ "flags104": 2147483666,
891
+ "flags220": 8192,
892
+ "input": {
893
+ "carry": 0.5,
894
+ "client": 1,
895
+ "connection": 2,
896
+ "entity": 1,
897
+ "flags104": 2147483666,
898
+ "flags220": 8192,
899
+ "follow": 0,
900
+ "health": 1,
901
+ "last": 9900,
902
+ "melt": 1,
903
+ "meter": 0,
904
+ "mirror": 0,
905
+ "mode": 10,
906
+ "name": "unflagged",
907
+ "pm_type": 4,
908
+ "seconds": -2.0,
909
+ "tick": 10000
910
+ },
911
+ "last": 9900,
912
+ "meter": 0,
913
+ "pm_type": 4,
914
+ "receiver": 999
915
+ },
916
+ {
917
+ "carry_bits": 0,
918
+ "event_entity": [
919
+ 7,
920
+ 2147483649
921
+ ],
922
+ "events": [],
923
+ "execution": {
924
+ "stop": 152790,
925
+ "trace_length": 106,
926
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
927
+ },
928
+ "flags104": 2147483666,
929
+ "flags220": 2147508226,
930
+ "input": {
931
+ "carry": 0.5,
932
+ "client": 1,
933
+ "connection": 2,
934
+ "entity": 1,
935
+ "flags104": 2147483666,
936
+ "flags220": 2147508226,
937
+ "follow": 0,
938
+ "health": 1,
939
+ "last": 10000,
940
+ "melt": 1,
941
+ "meter": 100,
942
+ "mirror": 0,
943
+ "mode": 10,
944
+ "name": "negative-elapsed",
945
+ "pm_type": 4,
946
+ "seconds": 0.5,
947
+ "tick": 9900
948
+ },
949
+ "last": 9900,
950
+ "meter": 0,
951
+ "pm_type": 4,
952
+ "receiver": 999
953
+ },
954
+ {
955
+ "carry_bits": 0,
956
+ "event_entity": [
957
+ 7,
958
+ 2147483649
959
+ ],
960
+ "events": [],
961
+ "execution": {
962
+ "stop": 152790,
963
+ "trace_length": 106,
964
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
965
+ },
966
+ "flags104": 2147483666,
967
+ "flags220": 2147508226,
968
+ "input": {
969
+ "carry": 0.5,
970
+ "client": 1,
971
+ "connection": 2,
972
+ "entity": 1,
973
+ "flags104": 2147483666,
974
+ "flags220": 2147508226,
975
+ "follow": 0,
976
+ "health": 1,
977
+ "last": 10000,
978
+ "melt": 1,
979
+ "meter": 100,
980
+ "mirror": 0,
981
+ "mode": 10,
982
+ "name": "negative-elapsed",
983
+ "pm_type": 4,
984
+ "seconds": 2.0,
985
+ "tick": 9900
986
+ },
987
+ "last": 9900,
988
+ "meter": 0,
989
+ "pm_type": 4,
990
+ "receiver": 999
991
+ },
992
+ {
993
+ "carry_bits": 0,
994
+ "event_entity": [
995
+ 7,
996
+ 2147483649
997
+ ],
998
+ "events": [],
999
+ "execution": {
1000
+ "stop": 152790,
1001
+ "trace_length": 106,
1002
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1003
+ },
1004
+ "flags104": 2147483666,
1005
+ "flags220": 2147508226,
1006
+ "input": {
1007
+ "carry": 0.5,
1008
+ "client": 1,
1009
+ "connection": 2,
1010
+ "entity": 1,
1011
+ "flags104": 2147483666,
1012
+ "flags220": 2147508226,
1013
+ "follow": 0,
1014
+ "health": 1,
1015
+ "last": 10000,
1016
+ "melt": 1,
1017
+ "meter": 100,
1018
+ "mirror": 0,
1019
+ "mode": 10,
1020
+ "name": "negative-elapsed",
1021
+ "pm_type": 4,
1022
+ "seconds": -2.0,
1023
+ "tick": 9900
1024
+ },
1025
+ "last": 9900,
1026
+ "meter": 1700,
1027
+ "pm_type": 4,
1028
+ "receiver": 999
1029
+ },
1030
+ {
1031
+ "carry_bits": 0,
1032
+ "event_entity": [
1033
+ 7,
1034
+ 2147483649
1035
+ ],
1036
+ "events": [],
1037
+ "execution": {
1038
+ "stop": 152790,
1039
+ "trace_length": 106,
1040
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1041
+ },
1042
+ "flags104": 2147483666,
1043
+ "flags220": 2147508226,
1044
+ "input": {
1045
+ "carry": 0.5,
1046
+ "client": 1,
1047
+ "connection": 2,
1048
+ "entity": 1,
1049
+ "flags104": 2147483666,
1050
+ "flags220": 2147508226,
1051
+ "follow": 0,
1052
+ "health": 1,
1053
+ "last": 4294967280,
1054
+ "melt": 1,
1055
+ "meter": 0,
1056
+ "mirror": 0,
1057
+ "mode": 10,
1058
+ "name": "wrapped-elapsed",
1059
+ "pm_type": 4,
1060
+ "seconds": 0.5,
1061
+ "tick": 10
1062
+ },
1063
+ "last": 10,
1064
+ "meter": 1664,
1065
+ "pm_type": 4,
1066
+ "receiver": 999
1067
+ },
1068
+ {
1069
+ "carry_bits": 0,
1070
+ "event_entity": [
1071
+ 7,
1072
+ 2147483649
1073
+ ],
1074
+ "events": [],
1075
+ "execution": {
1076
+ "stop": 152790,
1077
+ "trace_length": 106,
1078
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1079
+ },
1080
+ "flags104": 2147483666,
1081
+ "flags220": 2147508226,
1082
+ "input": {
1083
+ "carry": 0.5,
1084
+ "client": 1,
1085
+ "connection": 2,
1086
+ "entity": 1,
1087
+ "flags104": 2147483666,
1088
+ "flags220": 2147508226,
1089
+ "follow": 0,
1090
+ "health": 1,
1091
+ "last": 4294967280,
1092
+ "melt": 1,
1093
+ "meter": 0,
1094
+ "mirror": 0,
1095
+ "mode": 10,
1096
+ "name": "wrapped-elapsed",
1097
+ "pm_type": 4,
1098
+ "seconds": 2.0,
1099
+ "tick": 10
1100
+ },
1101
+ "last": 10,
1102
+ "meter": 416,
1103
+ "pm_type": 4,
1104
+ "receiver": 999
1105
+ },
1106
+ {
1107
+ "carry_bits": 0,
1108
+ "event_entity": [
1109
+ 7,
1110
+ 2147483649
1111
+ ],
1112
+ "events": [],
1113
+ "execution": {
1114
+ "stop": 152790,
1115
+ "trace_length": 106,
1116
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1117
+ },
1118
+ "flags104": 2147483666,
1119
+ "flags220": 2147508226,
1120
+ "input": {
1121
+ "carry": 0.5,
1122
+ "client": 1,
1123
+ "connection": 2,
1124
+ "entity": 1,
1125
+ "flags104": 2147483666,
1126
+ "flags220": 2147508226,
1127
+ "follow": 0,
1128
+ "health": 1,
1129
+ "last": 4294967280,
1130
+ "melt": 1,
1131
+ "meter": 0,
1132
+ "mirror": 0,
1133
+ "mode": 10,
1134
+ "name": "wrapped-elapsed",
1135
+ "pm_type": 4,
1136
+ "seconds": -2.0,
1137
+ "tick": 10
1138
+ },
1139
+ "last": 10,
1140
+ "meter": 0,
1141
+ "pm_type": 4,
1142
+ "receiver": 999
1143
+ },
1144
+ {
1145
+ "carry_bits": 0,
1146
+ "event_entity": [
1147
+ 7,
1148
+ 2147483649
1149
+ ],
1150
+ "events": [],
1151
+ "execution": {
1152
+ "stop": 152790,
1153
+ "trace_length": 106,
1154
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1155
+ },
1156
+ "flags104": 2147483666,
1157
+ "flags220": 2147508226,
1158
+ "input": {
1159
+ "carry": 0.75,
1160
+ "client": 1,
1161
+ "connection": 2,
1162
+ "entity": 1,
1163
+ "flags104": 2147483666,
1164
+ "flags220": 2147508226,
1165
+ "follow": 0,
1166
+ "health": 1,
1167
+ "last": 10000,
1168
+ "melt": 1,
1169
+ "meter": 31999,
1170
+ "mirror": 0,
1171
+ "mode": 10,
1172
+ "name": "boundary",
1173
+ "pm_type": 4,
1174
+ "seconds": 0.5,
1175
+ "tick": 10000
1176
+ },
1177
+ "last": 10000,
1178
+ "meter": 31999,
1179
+ "pm_type": 4,
1180
+ "receiver": 999
1181
+ },
1182
+ {
1183
+ "carry_bits": 0,
1184
+ "event_entity": [
1185
+ 7,
1186
+ 2147483649
1187
+ ],
1188
+ "events": [],
1189
+ "execution": {
1190
+ "stop": 152790,
1191
+ "trace_length": 106,
1192
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1193
+ },
1194
+ "flags104": 2147483666,
1195
+ "flags220": 2147508226,
1196
+ "input": {
1197
+ "carry": 0.75,
1198
+ "client": 1,
1199
+ "connection": 2,
1200
+ "entity": 1,
1201
+ "flags104": 2147483666,
1202
+ "flags220": 2147508226,
1203
+ "follow": 0,
1204
+ "health": 1,
1205
+ "last": 10000,
1206
+ "melt": 1,
1207
+ "meter": 31999,
1208
+ "mirror": 0,
1209
+ "mode": 10,
1210
+ "name": "boundary",
1211
+ "pm_type": 4,
1212
+ "seconds": 2.0,
1213
+ "tick": 10000
1214
+ },
1215
+ "last": 10000,
1216
+ "meter": 31999,
1217
+ "pm_type": 4,
1218
+ "receiver": 999
1219
+ },
1220
+ {
1221
+ "carry_bits": 0,
1222
+ "event_entity": [
1223
+ 7,
1224
+ 2147483649
1225
+ ],
1226
+ "events": [],
1227
+ "execution": {
1228
+ "stop": 152790,
1229
+ "trace_length": 106,
1230
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1231
+ },
1232
+ "flags104": 2147483666,
1233
+ "flags220": 2147508226,
1234
+ "input": {
1235
+ "carry": 0.75,
1236
+ "client": 1,
1237
+ "connection": 2,
1238
+ "entity": 1,
1239
+ "flags104": 2147483666,
1240
+ "flags220": 2147508226,
1241
+ "follow": 0,
1242
+ "health": 1,
1243
+ "last": 10000,
1244
+ "melt": 1,
1245
+ "meter": 31999,
1246
+ "mirror": 0,
1247
+ "mode": 10,
1248
+ "name": "boundary",
1249
+ "pm_type": 4,
1250
+ "seconds": -2.0,
1251
+ "tick": 10000
1252
+ },
1253
+ "last": 10000,
1254
+ "meter": 31999,
1255
+ "pm_type": 4,
1256
+ "receiver": 999
1257
+ },
1258
+ {
1259
+ "carry_bits": 0,
1260
+ "event_entity": [
1261
+ 305419896,
1262
+ 2147483681
1263
+ ],
1264
+ "events": [
1265
+ {
1266
+ "event": 107,
1267
+ "op": "event"
1268
+ },
1269
+ {
1270
+ "format": "436c69656e744d656c7465643a2025690a",
1271
+ "op": "log",
1272
+ "slots": [
1273
+ 2
1274
+ ]
1275
+ }
1276
+ ],
1277
+ "execution": {
1278
+ "stop": 152790,
1279
+ "trace_length": 106,
1280
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1281
+ },
1282
+ "flags104": 2147483650,
1283
+ "flags220": 2147491842,
1284
+ "input": {
1285
+ "carry": 1.25,
1286
+ "client": 1,
1287
+ "connection": 2,
1288
+ "entity": 1,
1289
+ "flags104": 2147483666,
1290
+ "flags220": 2147508226,
1291
+ "follow": 0,
1292
+ "health": 1,
1293
+ "last": 10000,
1294
+ "melt": 1,
1295
+ "meter": 31999,
1296
+ "mirror": 0,
1297
+ "mode": 10,
1298
+ "name": "complete",
1299
+ "pm_type": 4,
1300
+ "seconds": 0.5,
1301
+ "tick": 10000
1302
+ },
1303
+ "last": 10000,
1304
+ "meter": 0,
1305
+ "pm_type": 0,
1306
+ "receiver": 999
1307
+ },
1308
+ {
1309
+ "carry_bits": 0,
1310
+ "event_entity": [
1311
+ 305419896,
1312
+ 2147483681
1313
+ ],
1314
+ "events": [
1315
+ {
1316
+ "event": 107,
1317
+ "op": "event"
1318
+ },
1319
+ {
1320
+ "format": "436c69656e744d656c7465643a2025690a",
1321
+ "op": "log",
1322
+ "slots": [
1323
+ 2
1324
+ ]
1325
+ }
1326
+ ],
1327
+ "execution": {
1328
+ "stop": 152790,
1329
+ "trace_length": 106,
1330
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1331
+ },
1332
+ "flags104": 2147483650,
1333
+ "flags220": 2147491842,
1334
+ "input": {
1335
+ "carry": 1.25,
1336
+ "client": 1,
1337
+ "connection": 2,
1338
+ "entity": 1,
1339
+ "flags104": 2147483666,
1340
+ "flags220": 2147508226,
1341
+ "follow": 0,
1342
+ "health": 1,
1343
+ "last": 10000,
1344
+ "melt": 1,
1345
+ "meter": 31999,
1346
+ "mirror": 0,
1347
+ "mode": 10,
1348
+ "name": "complete",
1349
+ "pm_type": 4,
1350
+ "seconds": 2.0,
1351
+ "tick": 10000
1352
+ },
1353
+ "last": 10000,
1354
+ "meter": 0,
1355
+ "pm_type": 0,
1356
+ "receiver": 999
1357
+ },
1358
+ {
1359
+ "carry_bits": 0,
1360
+ "event_entity": [
1361
+ 305419896,
1362
+ 2147483681
1363
+ ],
1364
+ "events": [
1365
+ {
1366
+ "event": 107,
1367
+ "op": "event"
1368
+ },
1369
+ {
1370
+ "format": "436c69656e744d656c7465643a2025690a",
1371
+ "op": "log",
1372
+ "slots": [
1373
+ 2
1374
+ ]
1375
+ }
1376
+ ],
1377
+ "execution": {
1378
+ "stop": 152790,
1379
+ "trace_length": 106,
1380
+ "trace_sha256": "14812bfbb71b7d6ac000bc96485233458ef20c9923c9276406d3b5251bf6344f"
1381
+ },
1382
+ "flags104": 2147483650,
1383
+ "flags220": 2147491842,
1384
+ "input": {
1385
+ "carry": 1.25,
1386
+ "client": 1,
1387
+ "connection": 2,
1388
+ "entity": 1,
1389
+ "flags104": 2147483666,
1390
+ "flags220": 2147508226,
1391
+ "follow": 0,
1392
+ "health": 1,
1393
+ "last": 10000,
1394
+ "melt": 1,
1395
+ "meter": 31999,
1396
+ "mirror": 0,
1397
+ "mode": 10,
1398
+ "name": "complete",
1399
+ "pm_type": 4,
1400
+ "seconds": -2.0,
1401
+ "tick": 10000
1402
+ },
1403
+ "last": 10000,
1404
+ "meter": 0,
1405
+ "pm_type": 0,
1406
+ "receiver": 999
1407
+ }
1408
+ ],
1409
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1410
+ "source": {
1411
+ "archive": "zUrT43_qvm.pk3",
1412
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
1413
+ "member": {
1414
+ "bytes": 983300,
1415
+ "comment_hex": "",
1416
+ "compressed_bytes": 246560,
1417
+ "compression": 8,
1418
+ "crc32": "98ea1768",
1419
+ "create_system": 0,
1420
+ "create_version": 63,
1421
+ "date_time": [
1422
+ 2018,
1423
+ 6,
1424
+ 18,
1425
+ 22,
1426
+ 11,
1427
+ 50
1428
+ ],
1429
+ "directory": false,
1430
+ "entry_index": 2,
1431
+ "external_attr": 32,
1432
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
1433
+ "extract_version": 20,
1434
+ "flags": 0,
1435
+ "header_offset": 221309,
1436
+ "internal_attr": 0,
1437
+ "occurrence": 0,
1438
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
1439
+ "path": "vm/qagame.qvm",
1440
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1441
+ "type": "member",
1442
+ "volume": 0
1443
+ }
1444
+ }
1445
+ }
scripts/analyze_qvm_move_self_recovery.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_move_callbacks_support import seed,self_recovery,self_recovery_fixtures
6
+
7
+ def main():
8
+ q,raw,h,ins=source();probes=[]
9
+ for a in self_recovery_fixtures():
10
+ m,b=seed(raw,h,a);m,p,b=self_recovery(ins,m,b,a);p['input']=a;probes.append(p)
11
+ write_json(Path('docs/research/qvm-move-self-recovery.json'),dict(source=q['source'],sha256=q['sha256'],probes=probes,limits='Actual152673 through152789 with actual152386 child. Finite nonzero duration and in-range conversion; nested completion effects captured.'))
12
+ if __name__=='__main__':main()
scripts/qvm_move_callbacks_oracle.py CHANGED
@@ -12,3 +12,11 @@ def meter(a):
12
  if not a['melt']:events=[dict(op='teleport',slot=2),dict(op='reset',slot=2)]
13
  events += [dict(op='event',event=107 if a['melt'] else 108),dict(op='log',format=(b'ClientMelted: %i\n' if a['melt'] else b'ThawOutFinished: %i %i: %s thawed out %s\n').hex(),slots=[2] if a['melt'] else [3,2])]
14
  return dict(meter=value&0xffffffff,carry_bits=0,flags220=a['flags220']&~16384 if done else a['flags220'],flags104=a['flags104']&~16 if done else a['flags104'],pm_type=0 if done else a['pm_type'],receiver=value&0xffffffff if a['mirror'] else 999,event_entity=[0x12345678,0x80000021] if done else [7,0x80000001],events=events)
 
 
 
 
 
 
 
 
 
12
  if not a['melt']:events=[dict(op='teleport',slot=2),dict(op='reset',slot=2)]
13
  events += [dict(op='event',event=107 if a['melt'] else 108),dict(op='log',format=(b'ClientMelted: %i\n' if a['melt'] else b'ThawOutFinished: %i %i: %s thawed out %s\n').hex(),slots=[2] if a['melt'] else [3,2])]
14
  return dict(meter=value&0xffffffff,carry_bits=0,flags220=a['flags220']&~16384 if done else a['flags220'],flags104=a['flags104']&~16 if done else a['flags104'],pm_type=0 if done else a['pm_type'],receiver=value&0xffffffff if a['mirror'] else 999,event_entity=[0x12345678,0x80000021] if done else [7,0x80000001],events=events)
15
+
16
+ def self_recovery(a):
17
+ out=dict(meter=a['meter'],carry_bits=word(a['carry']),flags220=a['flags220'],flags104=a['flags104'],pm_type=a['pm_type'],receiver=999,event_entity=[7,0x80000001],events=[],last=a['last'])
18
+ active=a['entity'] and a['client'] and a['mode']==10 and a['connection']==2 and signed(a['health'])>0 and not a['follow'] and a['flags220']&16384
19
+ if active:
20
+ increment=f32(f32(32000./f32(f32(a['seconds'])*1000.))*f32(signed((a['tick']-a['last'])&0xffffffff)))
21
+ out.update(meter(dict(a,carry=f32(f32(a['carry'])+increment),melt=1,mirror=0)));out['last']=a['tick']
22
+ return out
scripts/qvm_move_callbacks_support.py CHANGED
@@ -47,3 +47,22 @@ def meter_run(ins,m,b,melt,mirror):
47
  return m,dict(**meter_view(m,events),execution=p['execution']),b
48
 
49
  def meter(ins,m,b,a):meter_seed(m,a);return meter_run(ins,m,b,a['melt'],a['mirror'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  return m,dict(**meter_view(m,events),execution=p['execution']),b
48
 
49
  def meter(ins,m,b,a):meter_seed(m,a);return meter_run(ins,m,b,a['melt'],a['mirror'])
50
+
51
+ def self_recovery_fixtures():
52
+ defaults=dict(entity=1,client=1,mode=10,connection=2,health=1,follow=0,flags220=0x80006002,flags104=0x80000012,pm_type=4,meter=0,carry=0.5,tick=10000,last=9900,melt=1,mirror=0)
53
+ profiles=[('normal',{}),('null-entity',dict(entity=0)),('null-client',dict(client=0)),('wrong-mode',dict(mode=9)),('unconnected',dict(connection=1)),('dead',dict(health=0)),('following',dict(follow=1)),('unflagged',dict(flags220=8192)),('negative-elapsed',dict(tick=9900,last=10000,meter=100)),('wrapped-elapsed',dict(tick=10,last=0xfffffff0)),('boundary',dict(meter=31999,last=10000,carry=0.75)),('complete',dict(meter=31999,carry=1.25,last=10000))]
54
+ return [dict(defaults,**changes,name=name,seconds=seconds) for name,changes in profiles for seconds in [0.5,2.,-2.]]
55
+
56
+ def self_recovery_seed(m,a):
57
+ meter_seed(m,a);m.update({ENTITY+520:CLIENT if a['client'] else 0,34090788:a['mode'],CLIENT+468:a['connection'],CLIENT+208:a['health'],CLIENT+4324:a['follow'],34062072:word(a['seconds']),34992532:a['tick'],CLIENT+6324:a['last']})
58
+
59
+ def self_recovery_run(ins,m,b,entity=ENTITY):
60
+ events=[]
61
+ def actual_meter(i,m,a,bs):
62
+ assert a[8]==ENTITY and a[12]==0 and a[16]==1
63
+ m,p,b=meter_run(i,m,dict(bs),1,0);events.extend(p['events']);return m,0,{'actual_source_child':152386}
64
+ m,v,p,b=run(ins,m,152673,152790,44,{8:entity},b,{152386:actual_meter},base=SELFBASE)
65
+ return m,dict(**meter_view(m,events),last=m[CLIENT+6324]&0xffffffff,execution=p['execution']),b
66
+
67
+ def self_recovery(ins,m,b,a):
68
+ self_recovery_seed(m,a);return self_recovery_run(ins,m,b,ENTITY if a['entity'] else 0)
scripts/test_qvm_move_self_recovery.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from qvm_move_callbacks_oracle import self_recovery
4
+ class OriginalTests(unittest.TestCase):
5
+ def test_original_contract(self):
6
+ rows=json.loads(Path('docs/research/qvm-move-self-recovery.json').read_text())['probes'];self.assertEqual(len(rows),36)
7
+ for p in rows:
8
+ with self.subTest(input=p['input']):
9
+ for k,v in self_recovery(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-move-self-recovery.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
@@ -3844,3 +3844,7 @@ edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_move_meter.p
3844
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_move_meter.py
3845
  edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_health_impulse.py
3846
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_health_impulse.py
 
 
 
 
 
3844
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_move_meter.py
3845
  edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_health_impulse.py
3846
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_health_impulse.py
3847
+ report scripts/analyze_qvm_move_self_recovery.py docs/research/qvm-move-self-recovery.json
3848
+ edge docs/research/qvm-move-self-recovery.json scripts/test_qvm_move_self_recovery.py
3849
+ group qvm-move-self-recovery scripts/analyze_qvm_move_self_recovery.py
3850
+ edge scripts/analyze_qvm_move_self_recovery.py scripts/analyze_qvm_resumer_audit.py