nmarshall commited on
Commit
9a625b4
·
1 Parent(s): 71f6200

qvm: recover assistance cleanup scan

Browse files
docs/FINDINGS.md CHANGED
@@ -1929,3 +1929,5 @@ RE-995: Rust ports meter f32 conversion, truncation, clamping, completion masks,
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).
1930
 
1931
  RE-997: Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. [Evidence](research/RUST_MOVE_SELF_RECOVERY.md).
 
 
 
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).
1930
 
1931
  RE-997: Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. [Evidence](research/RUST_MOVE_SELF_RECOVERY.md).
1932
+
1933
+ RE-998: Twenty-eight original-QVM fixtures recover152792 admission and its first entity-pool scan through152994. Protected self mask16384 clears own assistance mask8192, active6316 and target6320, then returns. Otherwise active helpers lose those fields when their target disconnects, dies or follows; healthy targets retain assistance. Loop order, zero/64 counts, absent entity/client, high-bit preservation and all self admission exits are covered. The subsequent distance/assistance search remains outside this boundary. [Evidence](research/QVM_MOVE_ASSIST_CLEANUP.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1986,3 +1986,5 @@ RE-974–983 completed routing, command rewrite, inactivity, movement-parameter
1986
  - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
1987
 
1988
  - [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
 
 
 
1986
  - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
1987
 
1988
  - [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
1989
+
1990
+ - [x] RE-998 Recover mode10 assistance admission and cleanup scan ([evidence](research/QVM_MOVE_ASSIST_CLEANUP.md)).
docs/RESEARCH_LEDGER.md CHANGED
@@ -2663,3 +2663,7 @@ Thirty-six original-QVM cases execute152673 with actual meter child152386. Entit
2663
  ## 2026-10-29 — RE-997 Port timed self-recovery with atomic state updates
2664
 
2665
  Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. Focused `cargo xtask test-group rust-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.
 
 
 
 
 
2663
  ## 2026-10-29 — RE-997 Port timed self-recovery with atomic state updates
2664
 
2665
  Rust ports actual self-recovery gates, wrapped signed elapsed time, staged f32 progress and the meter child across36 source cases. Admission exits preserve state without reading unused float configuration. Active invalid duration, nonfinite progress or unsupported conversion reject without advancing clock or committing meter/event changes. Unit tests cover wrapped elapsed time, inactive NaN preservation and late-error rollback. Focused `cargo xtask test-group rust-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.
2666
+
2667
+ ## 2026-10-29 — RE-998 Recover mode10 assistance admission and cleanup scan
2668
+
2669
+ Twenty-eight original-QVM fixtures recover152792 admission and its first entity-pool scan through152994. Protected self mask16384 clears own assistance mask8192, active6316 and target6320, then returns. Otherwise active helpers lose those fields when their target disconnects, dies or follows; healthy targets retain assistance. Loop order, zero/64 counts, absent entity/client, high-bit preservation and all self admission exits are covered. The subsequent distance/assistance search remains outside this boundary. Focused `cargo xtask test-group qvm-move-assist-cleanup` 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
@@ -2023,3 +2023,5 @@ RE-974–983 recover routing, command rewriting, inactivity and composed setup t
2023
  - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
2024
 
2025
  - [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
 
 
 
2023
  - [x] RE-996 Recover timed mode10 self-recovery ([evidence](research/QVM_MOVE_SELF_RECOVERY.md)).
2024
 
2025
  - [x] RE-997 Port timed self-recovery with atomic state updates ([evidence](research/RUST_MOVE_SELF_RECOVERY.md)).
2026
+
2027
+ - [x] RE-998 Recover mode10 assistance admission and cleanup scan ([evidence](research/QVM_MOVE_ASSIST_CLEANUP.md)).
docs/research/QVM_MOVE_ASSIST_CLEANUP.md ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # Recover mode10 assistance admission and cleanup scan
2
+
3
+ RE-998. Focused validation: `cargo xtask test-group qvm-move-assist-cleanup`. [Machine report](qvm-move-assist-cleanup.json).
4
+
5
+ Twenty-eight original-QVM fixtures recover152792 admission and its first entity-pool scan through152994. Protected self mask16384 clears own assistance mask8192, active6316 and target6320, then returns. Otherwise active helpers lose those fields when their target disconnects, dies or follows; healthy targets retain assistance. Loop order, zero/64 counts, absent entity/client, high-bit preservation and all self admission exits are covered. The subsequent distance/assistance search remains outside this boundary.
docs/research/README.md CHANGED
@@ -1557,3 +1557,5 @@ The extension collector adds five focused tests for native tail calls, command-r
1557
  - [RE-996: Recover timed mode10 self-recovery](QVM_MOVE_SELF_RECOVERY.md).
1558
 
1559
  - [RE-997: Port timed self-recovery with atomic state updates](RUST_MOVE_SELF_RECOVERY.md).
 
 
 
1557
  - [RE-996: Recover timed mode10 self-recovery](QVM_MOVE_SELF_RECOVERY.md).
1558
 
1559
  - [RE-997: Port timed self-recovery with atomic state updates](RUST_MOVE_SELF_RECOVERY.md).
1560
+
1561
+ - [RE-998: Recover mode10 assistance admission and cleanup scan](QVM_MOVE_ASSIST_CLEANUP.md).
docs/research/qvm-move-assist-cleanup.json ADDED
@@ -0,0 +1,1799 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "limits": "Actual152792 admission/first cleanup scan, stop152994 before assistance search or153417 return. Entity/client mappings supplied, no assistance-distance or nested thaw callbacks executed.",
3
+ "probes": [
4
+ {
5
+ "clients": [
6
+ [
7
+ 8192,
8
+ 1,
9
+ 1
10
+ ],
11
+ [
12
+ 0,
13
+ 0,
14
+ null
15
+ ],
16
+ [
17
+ 8192,
18
+ 1,
19
+ 1
20
+ ]
21
+ ],
22
+ "execution": {
23
+ "stop": 152994,
24
+ "trace_length": 233,
25
+ "trace_sha256": "d56b768baec13f1fa32a486725767e8b0b575f4a45f7bdf897118a63a258ee2d"
26
+ },
27
+ "input": {
28
+ "active": 1,
29
+ "client": 1,
30
+ "connection": 2,
31
+ "count": 3,
32
+ "entity": 1,
33
+ "extra": 0,
34
+ "follow": 0,
35
+ "health": 1,
36
+ "mode": 10,
37
+ "name": "normal",
38
+ "self_flags": 0,
39
+ "target_connection": 2,
40
+ "target_follow": 0,
41
+ "target_health": 1
42
+ },
43
+ "proceed": true
44
+ },
45
+ {
46
+ "clients": [
47
+ [
48
+ 2147491840,
49
+ 1,
50
+ 1
51
+ ],
52
+ [
53
+ 2147483648,
54
+ 0,
55
+ null
56
+ ],
57
+ [
58
+ 2147491840,
59
+ 1,
60
+ 1
61
+ ]
62
+ ],
63
+ "execution": {
64
+ "stop": 152994,
65
+ "trace_length": 233,
66
+ "trace_sha256": "d56b768baec13f1fa32a486725767e8b0b575f4a45f7bdf897118a63a258ee2d"
67
+ },
68
+ "input": {
69
+ "active": 1,
70
+ "client": 1,
71
+ "connection": 2,
72
+ "count": 3,
73
+ "entity": 1,
74
+ "extra": 2147483648,
75
+ "follow": 0,
76
+ "health": 1,
77
+ "mode": 10,
78
+ "name": "normal",
79
+ "self_flags": 0,
80
+ "target_connection": 2,
81
+ "target_follow": 0,
82
+ "target_health": 1
83
+ },
84
+ "proceed": true
85
+ },
86
+ {
87
+ "clients": [
88
+ [
89
+ 0,
90
+ 0,
91
+ null
92
+ ],
93
+ [
94
+ 0,
95
+ 0,
96
+ null
97
+ ],
98
+ [
99
+ 0,
100
+ 0,
101
+ null
102
+ ]
103
+ ],
104
+ "execution": {
105
+ "stop": 152994,
106
+ "trace_length": 283,
107
+ "trace_sha256": "8b874cb2ac6a75de1c7793b6fba3dea73520af608c88a4b54ea1a62c2b830091"
108
+ },
109
+ "input": {
110
+ "active": 1,
111
+ "client": 1,
112
+ "connection": 2,
113
+ "count": 3,
114
+ "entity": 1,
115
+ "extra": 0,
116
+ "follow": 0,
117
+ "health": 1,
118
+ "mode": 10,
119
+ "name": "dead-target",
120
+ "self_flags": 0,
121
+ "target_connection": 2,
122
+ "target_follow": 0,
123
+ "target_health": 0
124
+ },
125
+ "proceed": true
126
+ },
127
+ {
128
+ "clients": [
129
+ [
130
+ 2147483648,
131
+ 0,
132
+ null
133
+ ],
134
+ [
135
+ 2147483648,
136
+ 0,
137
+ null
138
+ ],
139
+ [
140
+ 2147483648,
141
+ 0,
142
+ null
143
+ ]
144
+ ],
145
+ "execution": {
146
+ "stop": 152994,
147
+ "trace_length": 283,
148
+ "trace_sha256": "8b874cb2ac6a75de1c7793b6fba3dea73520af608c88a4b54ea1a62c2b830091"
149
+ },
150
+ "input": {
151
+ "active": 1,
152
+ "client": 1,
153
+ "connection": 2,
154
+ "count": 3,
155
+ "entity": 1,
156
+ "extra": 2147483648,
157
+ "follow": 0,
158
+ "health": 1,
159
+ "mode": 10,
160
+ "name": "dead-target",
161
+ "self_flags": 0,
162
+ "target_connection": 2,
163
+ "target_follow": 0,
164
+ "target_health": 0
165
+ },
166
+ "proceed": true
167
+ },
168
+ {
169
+ "clients": [
170
+ [
171
+ 0,
172
+ 0,
173
+ null
174
+ ],
175
+ [
176
+ 0,
177
+ 0,
178
+ null
179
+ ],
180
+ [
181
+ 0,
182
+ 0,
183
+ null
184
+ ]
185
+ ],
186
+ "execution": {
187
+ "stop": 152994,
188
+ "trace_length": 263,
189
+ "trace_sha256": "9897b64d365fe8528494f4cc5a5dfd19b63cb304790268f5dccd171ef1ba1cf4"
190
+ },
191
+ "input": {
192
+ "active": 1,
193
+ "client": 1,
194
+ "connection": 2,
195
+ "count": 3,
196
+ "entity": 1,
197
+ "extra": 0,
198
+ "follow": 0,
199
+ "health": 1,
200
+ "mode": 10,
201
+ "name": "disconnected-target",
202
+ "self_flags": 0,
203
+ "target_connection": 1,
204
+ "target_follow": 0,
205
+ "target_health": 1
206
+ },
207
+ "proceed": true
208
+ },
209
+ {
210
+ "clients": [
211
+ [
212
+ 2147483648,
213
+ 0,
214
+ null
215
+ ],
216
+ [
217
+ 2147483648,
218
+ 0,
219
+ null
220
+ ],
221
+ [
222
+ 2147483648,
223
+ 0,
224
+ null
225
+ ]
226
+ ],
227
+ "execution": {
228
+ "stop": 152994,
229
+ "trace_length": 263,
230
+ "trace_sha256": "9897b64d365fe8528494f4cc5a5dfd19b63cb304790268f5dccd171ef1ba1cf4"
231
+ },
232
+ "input": {
233
+ "active": 1,
234
+ "client": 1,
235
+ "connection": 2,
236
+ "count": 3,
237
+ "entity": 1,
238
+ "extra": 2147483648,
239
+ "follow": 0,
240
+ "health": 1,
241
+ "mode": 10,
242
+ "name": "disconnected-target",
243
+ "self_flags": 0,
244
+ "target_connection": 1,
245
+ "target_follow": 0,
246
+ "target_health": 1
247
+ },
248
+ "proceed": true
249
+ },
250
+ {
251
+ "clients": [
252
+ [
253
+ 0,
254
+ 0,
255
+ null
256
+ ],
257
+ [
258
+ 0,
259
+ 0,
260
+ null
261
+ ],
262
+ [
263
+ 0,
264
+ 0,
265
+ null
266
+ ]
267
+ ],
268
+ "execution": {
269
+ "stop": 152994,
270
+ "trace_length": 303,
271
+ "trace_sha256": "6e51c04c44881601f6e003fbae45e6a812afebc855b471623de0953aeebe4deb"
272
+ },
273
+ "input": {
274
+ "active": 1,
275
+ "client": 1,
276
+ "connection": 2,
277
+ "count": 3,
278
+ "entity": 1,
279
+ "extra": 0,
280
+ "follow": 0,
281
+ "health": 1,
282
+ "mode": 10,
283
+ "name": "following-target",
284
+ "self_flags": 0,
285
+ "target_connection": 2,
286
+ "target_follow": 1,
287
+ "target_health": 1
288
+ },
289
+ "proceed": true
290
+ },
291
+ {
292
+ "clients": [
293
+ [
294
+ 2147483648,
295
+ 0,
296
+ null
297
+ ],
298
+ [
299
+ 2147483648,
300
+ 0,
301
+ null
302
+ ],
303
+ [
304
+ 2147483648,
305
+ 0,
306
+ null
307
+ ]
308
+ ],
309
+ "execution": {
310
+ "stop": 152994,
311
+ "trace_length": 303,
312
+ "trace_sha256": "6e51c04c44881601f6e003fbae45e6a812afebc855b471623de0953aeebe4deb"
313
+ },
314
+ "input": {
315
+ "active": 1,
316
+ "client": 1,
317
+ "connection": 2,
318
+ "count": 3,
319
+ "entity": 1,
320
+ "extra": 2147483648,
321
+ "follow": 0,
322
+ "health": 1,
323
+ "mode": 10,
324
+ "name": "following-target",
325
+ "self_flags": 0,
326
+ "target_connection": 2,
327
+ "target_follow": 1,
328
+ "target_health": 1
329
+ },
330
+ "proceed": true
331
+ },
332
+ {
333
+ "clients": [
334
+ [
335
+ 8192,
336
+ 0,
337
+ 1
338
+ ],
339
+ [
340
+ 0,
341
+ 0,
342
+ null
343
+ ],
344
+ [
345
+ 0,
346
+ 0,
347
+ null
348
+ ]
349
+ ],
350
+ "execution": {
351
+ "stop": 152994,
352
+ "trace_length": 218,
353
+ "trace_sha256": "1f63d134a24bfdbd2a083feaeed93187f3454a539b73a24230452051873bc9c2"
354
+ },
355
+ "input": {
356
+ "active": 0,
357
+ "client": 1,
358
+ "connection": 2,
359
+ "count": 3,
360
+ "entity": 1,
361
+ "extra": 0,
362
+ "follow": 0,
363
+ "health": 1,
364
+ "mode": 10,
365
+ "name": "inactive-helper",
366
+ "self_flags": 0,
367
+ "target_connection": 2,
368
+ "target_follow": 0,
369
+ "target_health": 0
370
+ },
371
+ "proceed": true
372
+ },
373
+ {
374
+ "clients": [
375
+ [
376
+ 2147491840,
377
+ 0,
378
+ 1
379
+ ],
380
+ [
381
+ 2147483648,
382
+ 0,
383
+ null
384
+ ],
385
+ [
386
+ 2147483648,
387
+ 0,
388
+ null
389
+ ]
390
+ ],
391
+ "execution": {
392
+ "stop": 152994,
393
+ "trace_length": 218,
394
+ "trace_sha256": "1f63d134a24bfdbd2a083feaeed93187f3454a539b73a24230452051873bc9c2"
395
+ },
396
+ "input": {
397
+ "active": 0,
398
+ "client": 1,
399
+ "connection": 2,
400
+ "count": 3,
401
+ "entity": 1,
402
+ "extra": 2147483648,
403
+ "follow": 0,
404
+ "health": 1,
405
+ "mode": 10,
406
+ "name": "inactive-helper",
407
+ "self_flags": 0,
408
+ "target_connection": 2,
409
+ "target_follow": 0,
410
+ "target_health": 0
411
+ },
412
+ "proceed": true
413
+ },
414
+ {
415
+ "clients": [
416
+ [
417
+ 8192,
418
+ 1,
419
+ 1
420
+ ],
421
+ [
422
+ 0,
423
+ 0,
424
+ null
425
+ ],
426
+ [
427
+ 16384,
428
+ 0,
429
+ null
430
+ ]
431
+ ],
432
+ "execution": {
433
+ "stop": 153417,
434
+ "trace_length": 84,
435
+ "trace_sha256": "a2b44bef539bef98d3913b1f327bfd286755201eb19b7e41279edd71662ca536"
436
+ },
437
+ "input": {
438
+ "active": 1,
439
+ "client": 1,
440
+ "connection": 2,
441
+ "count": 3,
442
+ "entity": 1,
443
+ "extra": 0,
444
+ "follow": 0,
445
+ "health": 1,
446
+ "mode": 10,
447
+ "name": "protected-self",
448
+ "self_flags": 16384,
449
+ "target_connection": 2,
450
+ "target_follow": 0,
451
+ "target_health": 0
452
+ },
453
+ "proceed": false
454
+ },
455
+ {
456
+ "clients": [
457
+ [
458
+ 2147491840,
459
+ 1,
460
+ 1
461
+ ],
462
+ [
463
+ 2147483648,
464
+ 0,
465
+ null
466
+ ],
467
+ [
468
+ 2147500032,
469
+ 0,
470
+ null
471
+ ]
472
+ ],
473
+ "execution": {
474
+ "stop": 153417,
475
+ "trace_length": 84,
476
+ "trace_sha256": "a2b44bef539bef98d3913b1f327bfd286755201eb19b7e41279edd71662ca536"
477
+ },
478
+ "input": {
479
+ "active": 1,
480
+ "client": 1,
481
+ "connection": 2,
482
+ "count": 3,
483
+ "entity": 1,
484
+ "extra": 2147483648,
485
+ "follow": 0,
486
+ "health": 1,
487
+ "mode": 10,
488
+ "name": "protected-self",
489
+ "self_flags": 16384,
490
+ "target_connection": 2,
491
+ "target_follow": 0,
492
+ "target_health": 0
493
+ },
494
+ "proceed": false
495
+ },
496
+ {
497
+ "clients": [
498
+ [
499
+ 8192,
500
+ 1,
501
+ 1
502
+ ],
503
+ [
504
+ 0,
505
+ 0,
506
+ null
507
+ ],
508
+ [
509
+ 8192,
510
+ 1,
511
+ 1
512
+ ]
513
+ ],
514
+ "execution": {
515
+ "stop": 153417,
516
+ "trace_length": 42,
517
+ "trace_sha256": "e291bebc85d17a8bc5d164eaa0dac3c29d367cfb78264c3e8e919f87463c0e16"
518
+ },
519
+ "input": {
520
+ "active": 1,
521
+ "client": 1,
522
+ "connection": 2,
523
+ "count": 3,
524
+ "entity": 1,
525
+ "extra": 0,
526
+ "follow": 0,
527
+ "health": 0,
528
+ "mode": 10,
529
+ "name": "dead-self",
530
+ "self_flags": 0,
531
+ "target_connection": 2,
532
+ "target_follow": 0,
533
+ "target_health": 0
534
+ },
535
+ "proceed": false
536
+ },
537
+ {
538
+ "clients": [
539
+ [
540
+ 2147491840,
541
+ 1,
542
+ 1
543
+ ],
544
+ [
545
+ 2147483648,
546
+ 0,
547
+ null
548
+ ],
549
+ [
550
+ 2147491840,
551
+ 1,
552
+ 1
553
+ ]
554
+ ],
555
+ "execution": {
556
+ "stop": 153417,
557
+ "trace_length": 42,
558
+ "trace_sha256": "e291bebc85d17a8bc5d164eaa0dac3c29d367cfb78264c3e8e919f87463c0e16"
559
+ },
560
+ "input": {
561
+ "active": 1,
562
+ "client": 1,
563
+ "connection": 2,
564
+ "count": 3,
565
+ "entity": 1,
566
+ "extra": 2147483648,
567
+ "follow": 0,
568
+ "health": 0,
569
+ "mode": 10,
570
+ "name": "dead-self",
571
+ "self_flags": 0,
572
+ "target_connection": 2,
573
+ "target_follow": 0,
574
+ "target_health": 0
575
+ },
576
+ "proceed": false
577
+ },
578
+ {
579
+ "clients": [
580
+ [
581
+ 8192,
582
+ 1,
583
+ 1
584
+ ],
585
+ [
586
+ 0,
587
+ 0,
588
+ null
589
+ ],
590
+ [
591
+ 8192,
592
+ 1,
593
+ 1
594
+ ]
595
+ ],
596
+ "execution": {
597
+ "stop": 153417,
598
+ "trace_length": 49,
599
+ "trace_sha256": "818087e917ad22d0dcbb8dce7d2b212ca947b0495046e4343757da5c364f913f"
600
+ },
601
+ "input": {
602
+ "active": 1,
603
+ "client": 1,
604
+ "connection": 2,
605
+ "count": 3,
606
+ "entity": 1,
607
+ "extra": 0,
608
+ "follow": 1,
609
+ "health": 1,
610
+ "mode": 10,
611
+ "name": "following-self",
612
+ "self_flags": 0,
613
+ "target_connection": 2,
614
+ "target_follow": 0,
615
+ "target_health": 0
616
+ },
617
+ "proceed": false
618
+ },
619
+ {
620
+ "clients": [
621
+ [
622
+ 2147491840,
623
+ 1,
624
+ 1
625
+ ],
626
+ [
627
+ 2147483648,
628
+ 0,
629
+ null
630
+ ],
631
+ [
632
+ 2147491840,
633
+ 1,
634
+ 1
635
+ ]
636
+ ],
637
+ "execution": {
638
+ "stop": 153417,
639
+ "trace_length": 49,
640
+ "trace_sha256": "818087e917ad22d0dcbb8dce7d2b212ca947b0495046e4343757da5c364f913f"
641
+ },
642
+ "input": {
643
+ "active": 1,
644
+ "client": 1,
645
+ "connection": 2,
646
+ "count": 3,
647
+ "entity": 1,
648
+ "extra": 2147483648,
649
+ "follow": 1,
650
+ "health": 1,
651
+ "mode": 10,
652
+ "name": "following-self",
653
+ "self_flags": 0,
654
+ "target_connection": 2,
655
+ "target_follow": 0,
656
+ "target_health": 0
657
+ },
658
+ "proceed": false
659
+ },
660
+ {
661
+ "clients": [
662
+ [
663
+ 8192,
664
+ 1,
665
+ 1
666
+ ],
667
+ [
668
+ 0,
669
+ 0,
670
+ null
671
+ ],
672
+ [
673
+ 8192,
674
+ 1,
675
+ 1
676
+ ]
677
+ ],
678
+ "execution": {
679
+ "stop": 153417,
680
+ "trace_length": 21,
681
+ "trace_sha256": "ce61020379f64e251cc94177c2ac7a119ee00ef2d44c458c3b5c7248a74ee9de"
682
+ },
683
+ "input": {
684
+ "active": 1,
685
+ "client": 1,
686
+ "connection": 2,
687
+ "count": 3,
688
+ "entity": 1,
689
+ "extra": 0,
690
+ "follow": 0,
691
+ "health": 1,
692
+ "mode": 9,
693
+ "name": "wrong-mode",
694
+ "self_flags": 0,
695
+ "target_connection": 2,
696
+ "target_follow": 0,
697
+ "target_health": 0
698
+ },
699
+ "proceed": false
700
+ },
701
+ {
702
+ "clients": [
703
+ [
704
+ 2147491840,
705
+ 1,
706
+ 1
707
+ ],
708
+ [
709
+ 2147483648,
710
+ 0,
711
+ null
712
+ ],
713
+ [
714
+ 2147491840,
715
+ 1,
716
+ 1
717
+ ]
718
+ ],
719
+ "execution": {
720
+ "stop": 153417,
721
+ "trace_length": 21,
722
+ "trace_sha256": "ce61020379f64e251cc94177c2ac7a119ee00ef2d44c458c3b5c7248a74ee9de"
723
+ },
724
+ "input": {
725
+ "active": 1,
726
+ "client": 1,
727
+ "connection": 2,
728
+ "count": 3,
729
+ "entity": 1,
730
+ "extra": 2147483648,
731
+ "follow": 0,
732
+ "health": 1,
733
+ "mode": 9,
734
+ "name": "wrong-mode",
735
+ "self_flags": 0,
736
+ "target_connection": 2,
737
+ "target_follow": 0,
738
+ "target_health": 0
739
+ },
740
+ "proceed": false
741
+ },
742
+ {
743
+ "clients": [
744
+ [
745
+ 8192,
746
+ 1,
747
+ 1
748
+ ],
749
+ [
750
+ 0,
751
+ 0,
752
+ null
753
+ ],
754
+ [
755
+ 8192,
756
+ 1,
757
+ 1
758
+ ]
759
+ ],
760
+ "execution": {
761
+ "stop": 153417,
762
+ "trace_length": 10,
763
+ "trace_sha256": "c418d7be306a53564d3e304917dee3ed3ee4cdd48ba3be6b0b6b15a3a93b7a83"
764
+ },
765
+ "input": {
766
+ "active": 1,
767
+ "client": 1,
768
+ "connection": 2,
769
+ "count": 3,
770
+ "entity": 0,
771
+ "extra": 0,
772
+ "follow": 0,
773
+ "health": 1,
774
+ "mode": 10,
775
+ "name": "null-entity",
776
+ "self_flags": 0,
777
+ "target_connection": 2,
778
+ "target_follow": 0,
779
+ "target_health": 0
780
+ },
781
+ "proceed": false
782
+ },
783
+ {
784
+ "clients": [
785
+ [
786
+ 2147491840,
787
+ 1,
788
+ 1
789
+ ],
790
+ [
791
+ 2147483648,
792
+ 0,
793
+ null
794
+ ],
795
+ [
796
+ 2147491840,
797
+ 1,
798
+ 1
799
+ ]
800
+ ],
801
+ "execution": {
802
+ "stop": 153417,
803
+ "trace_length": 10,
804
+ "trace_sha256": "c418d7be306a53564d3e304917dee3ed3ee4cdd48ba3be6b0b6b15a3a93b7a83"
805
+ },
806
+ "input": {
807
+ "active": 1,
808
+ "client": 1,
809
+ "connection": 2,
810
+ "count": 3,
811
+ "entity": 0,
812
+ "extra": 2147483648,
813
+ "follow": 0,
814
+ "health": 1,
815
+ "mode": 10,
816
+ "name": "null-entity",
817
+ "self_flags": 0,
818
+ "target_connection": 2,
819
+ "target_follow": 0,
820
+ "target_health": 0
821
+ },
822
+ "proceed": false
823
+ },
824
+ {
825
+ "clients": [
826
+ [
827
+ 8192,
828
+ 1,
829
+ 1
830
+ ],
831
+ [
832
+ 0,
833
+ 0,
834
+ null
835
+ ],
836
+ [
837
+ 8192,
838
+ 1,
839
+ 1
840
+ ]
841
+ ],
842
+ "execution": {
843
+ "stop": 153417,
844
+ "trace_length": 17,
845
+ "trace_sha256": "7c6e2996fef52a100896ac3fa9e293aa75bc5c5961cc48d64a484cd43beeb423"
846
+ },
847
+ "input": {
848
+ "active": 1,
849
+ "client": 0,
850
+ "connection": 2,
851
+ "count": 3,
852
+ "entity": 1,
853
+ "extra": 0,
854
+ "follow": 0,
855
+ "health": 1,
856
+ "mode": 10,
857
+ "name": "null-client",
858
+ "self_flags": 0,
859
+ "target_connection": 2,
860
+ "target_follow": 0,
861
+ "target_health": 0
862
+ },
863
+ "proceed": false
864
+ },
865
+ {
866
+ "clients": [
867
+ [
868
+ 2147491840,
869
+ 1,
870
+ 1
871
+ ],
872
+ [
873
+ 2147483648,
874
+ 0,
875
+ null
876
+ ],
877
+ [
878
+ 2147491840,
879
+ 1,
880
+ 1
881
+ ]
882
+ ],
883
+ "execution": {
884
+ "stop": 153417,
885
+ "trace_length": 17,
886
+ "trace_sha256": "7c6e2996fef52a100896ac3fa9e293aa75bc5c5961cc48d64a484cd43beeb423"
887
+ },
888
+ "input": {
889
+ "active": 1,
890
+ "client": 0,
891
+ "connection": 2,
892
+ "count": 3,
893
+ "entity": 1,
894
+ "extra": 2147483648,
895
+ "follow": 0,
896
+ "health": 1,
897
+ "mode": 10,
898
+ "name": "null-client",
899
+ "self_flags": 0,
900
+ "target_connection": 2,
901
+ "target_follow": 0,
902
+ "target_health": 0
903
+ },
904
+ "proceed": false
905
+ },
906
+ {
907
+ "clients": [
908
+ [
909
+ 8192,
910
+ 1,
911
+ 1
912
+ ],
913
+ [
914
+ 0,
915
+ 0,
916
+ null
917
+ ],
918
+ [
919
+ 8192,
920
+ 1,
921
+ 1
922
+ ]
923
+ ],
924
+ "execution": {
925
+ "stop": 153417,
926
+ "trace_length": 35,
927
+ "trace_sha256": "1b8e2af1e9a9f271f86e2457ccc8744e05740d4817642e5424e999e3f7debd5b"
928
+ },
929
+ "input": {
930
+ "active": 1,
931
+ "client": 1,
932
+ "connection": 1,
933
+ "count": 3,
934
+ "entity": 1,
935
+ "extra": 0,
936
+ "follow": 0,
937
+ "health": 1,
938
+ "mode": 10,
939
+ "name": "disconnected-self",
940
+ "self_flags": 0,
941
+ "target_connection": 2,
942
+ "target_follow": 0,
943
+ "target_health": 0
944
+ },
945
+ "proceed": false
946
+ },
947
+ {
948
+ "clients": [
949
+ [
950
+ 2147491840,
951
+ 1,
952
+ 1
953
+ ],
954
+ [
955
+ 2147483648,
956
+ 0,
957
+ null
958
+ ],
959
+ [
960
+ 2147491840,
961
+ 1,
962
+ 1
963
+ ]
964
+ ],
965
+ "execution": {
966
+ "stop": 153417,
967
+ "trace_length": 35,
968
+ "trace_sha256": "1b8e2af1e9a9f271f86e2457ccc8744e05740d4817642e5424e999e3f7debd5b"
969
+ },
970
+ "input": {
971
+ "active": 1,
972
+ "client": 1,
973
+ "connection": 1,
974
+ "count": 3,
975
+ "entity": 1,
976
+ "extra": 2147483648,
977
+ "follow": 0,
978
+ "health": 1,
979
+ "mode": 10,
980
+ "name": "disconnected-self",
981
+ "self_flags": 0,
982
+ "target_connection": 2,
983
+ "target_follow": 0,
984
+ "target_health": 0
985
+ },
986
+ "proceed": false
987
+ },
988
+ {
989
+ "clients": [
990
+ [
991
+ 8192,
992
+ 1,
993
+ 1
994
+ ],
995
+ [
996
+ 0,
997
+ 0,
998
+ null
999
+ ],
1000
+ [
1001
+ 8192,
1002
+ 1,
1003
+ 1
1004
+ ]
1005
+ ],
1006
+ "execution": {
1007
+ "stop": 152994,
1008
+ "trace_length": 66,
1009
+ "trace_sha256": "f7f792e3f01c8b990ef86038c084bec7ea2abdd78e3f5e484cb8f8c0f40cbb72"
1010
+ },
1011
+ "input": {
1012
+ "active": 1,
1013
+ "client": 1,
1014
+ "connection": 2,
1015
+ "count": 0,
1016
+ "entity": 1,
1017
+ "extra": 0,
1018
+ "follow": 0,
1019
+ "health": 1,
1020
+ "mode": 10,
1021
+ "name": "count-zero",
1022
+ "self_flags": 0,
1023
+ "target_connection": 2,
1024
+ "target_follow": 0,
1025
+ "target_health": 0
1026
+ },
1027
+ "proceed": true
1028
+ },
1029
+ {
1030
+ "clients": [
1031
+ [
1032
+ 2147491840,
1033
+ 1,
1034
+ 1
1035
+ ],
1036
+ [
1037
+ 2147483648,
1038
+ 0,
1039
+ null
1040
+ ],
1041
+ [
1042
+ 2147491840,
1043
+ 1,
1044
+ 1
1045
+ ]
1046
+ ],
1047
+ "execution": {
1048
+ "stop": 152994,
1049
+ "trace_length": 66,
1050
+ "trace_sha256": "f7f792e3f01c8b990ef86038c084bec7ea2abdd78e3f5e484cb8f8c0f40cbb72"
1051
+ },
1052
+ "input": {
1053
+ "active": 1,
1054
+ "client": 1,
1055
+ "connection": 2,
1056
+ "count": 0,
1057
+ "entity": 1,
1058
+ "extra": 2147483648,
1059
+ "follow": 0,
1060
+ "health": 1,
1061
+ "mode": 10,
1062
+ "name": "count-zero",
1063
+ "self_flags": 0,
1064
+ "target_connection": 2,
1065
+ "target_follow": 0,
1066
+ "target_health": 0
1067
+ },
1068
+ "proceed": true
1069
+ },
1070
+ {
1071
+ "clients": [
1072
+ [
1073
+ 0,
1074
+ 0,
1075
+ null
1076
+ ],
1077
+ [
1078
+ 0,
1079
+ 0,
1080
+ null
1081
+ ],
1082
+ [
1083
+ 0,
1084
+ 0,
1085
+ null
1086
+ ],
1087
+ [
1088
+ 0,
1089
+ 0,
1090
+ null
1091
+ ],
1092
+ [
1093
+ 0,
1094
+ 0,
1095
+ null
1096
+ ],
1097
+ [
1098
+ 0,
1099
+ 0,
1100
+ null
1101
+ ],
1102
+ [
1103
+ 0,
1104
+ 0,
1105
+ null
1106
+ ],
1107
+ [
1108
+ 0,
1109
+ 0,
1110
+ null
1111
+ ],
1112
+ [
1113
+ 0,
1114
+ 0,
1115
+ null
1116
+ ],
1117
+ [
1118
+ 0,
1119
+ 0,
1120
+ null
1121
+ ],
1122
+ [
1123
+ 0,
1124
+ 0,
1125
+ null
1126
+ ],
1127
+ [
1128
+ 0,
1129
+ 0,
1130
+ null
1131
+ ],
1132
+ [
1133
+ 0,
1134
+ 0,
1135
+ null
1136
+ ],
1137
+ [
1138
+ 0,
1139
+ 0,
1140
+ null
1141
+ ],
1142
+ [
1143
+ 0,
1144
+ 0,
1145
+ null
1146
+ ],
1147
+ [
1148
+ 0,
1149
+ 0,
1150
+ null
1151
+ ],
1152
+ [
1153
+ 0,
1154
+ 0,
1155
+ null
1156
+ ],
1157
+ [
1158
+ 0,
1159
+ 0,
1160
+ null
1161
+ ],
1162
+ [
1163
+ 0,
1164
+ 0,
1165
+ null
1166
+ ],
1167
+ [
1168
+ 0,
1169
+ 0,
1170
+ null
1171
+ ],
1172
+ [
1173
+ 0,
1174
+ 0,
1175
+ null
1176
+ ],
1177
+ [
1178
+ 0,
1179
+ 0,
1180
+ null
1181
+ ],
1182
+ [
1183
+ 0,
1184
+ 0,
1185
+ null
1186
+ ],
1187
+ [
1188
+ 0,
1189
+ 0,
1190
+ null
1191
+ ],
1192
+ [
1193
+ 0,
1194
+ 0,
1195
+ null
1196
+ ],
1197
+ [
1198
+ 0,
1199
+ 0,
1200
+ null
1201
+ ],
1202
+ [
1203
+ 0,
1204
+ 0,
1205
+ null
1206
+ ],
1207
+ [
1208
+ 0,
1209
+ 0,
1210
+ null
1211
+ ],
1212
+ [
1213
+ 0,
1214
+ 0,
1215
+ null
1216
+ ],
1217
+ [
1218
+ 0,
1219
+ 0,
1220
+ null
1221
+ ],
1222
+ [
1223
+ 0,
1224
+ 0,
1225
+ null
1226
+ ],
1227
+ [
1228
+ 0,
1229
+ 0,
1230
+ null
1231
+ ],
1232
+ [
1233
+ 0,
1234
+ 0,
1235
+ null
1236
+ ],
1237
+ [
1238
+ 0,
1239
+ 0,
1240
+ null
1241
+ ],
1242
+ [
1243
+ 0,
1244
+ 0,
1245
+ null
1246
+ ],
1247
+ [
1248
+ 0,
1249
+ 0,
1250
+ null
1251
+ ],
1252
+ [
1253
+ 0,
1254
+ 0,
1255
+ null
1256
+ ],
1257
+ [
1258
+ 0,
1259
+ 0,
1260
+ null
1261
+ ],
1262
+ [
1263
+ 0,
1264
+ 0,
1265
+ null
1266
+ ],
1267
+ [
1268
+ 0,
1269
+ 0,
1270
+ null
1271
+ ],
1272
+ [
1273
+ 0,
1274
+ 0,
1275
+ null
1276
+ ],
1277
+ [
1278
+ 0,
1279
+ 0,
1280
+ null
1281
+ ],
1282
+ [
1283
+ 0,
1284
+ 0,
1285
+ null
1286
+ ],
1287
+ [
1288
+ 0,
1289
+ 0,
1290
+ null
1291
+ ],
1292
+ [
1293
+ 0,
1294
+ 0,
1295
+ null
1296
+ ],
1297
+ [
1298
+ 0,
1299
+ 0,
1300
+ null
1301
+ ],
1302
+ [
1303
+ 0,
1304
+ 0,
1305
+ null
1306
+ ],
1307
+ [
1308
+ 0,
1309
+ 0,
1310
+ null
1311
+ ],
1312
+ [
1313
+ 0,
1314
+ 0,
1315
+ null
1316
+ ],
1317
+ [
1318
+ 0,
1319
+ 0,
1320
+ null
1321
+ ],
1322
+ [
1323
+ 0,
1324
+ 0,
1325
+ null
1326
+ ],
1327
+ [
1328
+ 0,
1329
+ 0,
1330
+ null
1331
+ ],
1332
+ [
1333
+ 0,
1334
+ 0,
1335
+ null
1336
+ ],
1337
+ [
1338
+ 0,
1339
+ 0,
1340
+ null
1341
+ ],
1342
+ [
1343
+ 0,
1344
+ 0,
1345
+ null
1346
+ ],
1347
+ [
1348
+ 0,
1349
+ 0,
1350
+ null
1351
+ ],
1352
+ [
1353
+ 0,
1354
+ 0,
1355
+ null
1356
+ ],
1357
+ [
1358
+ 0,
1359
+ 0,
1360
+ null
1361
+ ],
1362
+ [
1363
+ 0,
1364
+ 0,
1365
+ null
1366
+ ],
1367
+ [
1368
+ 0,
1369
+ 0,
1370
+ null
1371
+ ],
1372
+ [
1373
+ 0,
1374
+ 0,
1375
+ null
1376
+ ],
1377
+ [
1378
+ 0,
1379
+ 0,
1380
+ null
1381
+ ],
1382
+ [
1383
+ 0,
1384
+ 0,
1385
+ null
1386
+ ],
1387
+ [
1388
+ 0,
1389
+ 0,
1390
+ null
1391
+ ]
1392
+ ],
1393
+ "execution": {
1394
+ "stop": 152994,
1395
+ "trace_length": 2052,
1396
+ "trace_sha256": "f8f9978e024ea073f2ef147a7bf23722260f76addc3d001df38d80d4dd9c207c"
1397
+ },
1398
+ "input": {
1399
+ "active": 1,
1400
+ "client": 1,
1401
+ "connection": 2,
1402
+ "count": 64,
1403
+ "entity": 1,
1404
+ "extra": 0,
1405
+ "follow": 0,
1406
+ "health": 1,
1407
+ "mode": 10,
1408
+ "name": "full-pool",
1409
+ "self_flags": 0,
1410
+ "target_connection": 2,
1411
+ "target_follow": 0,
1412
+ "target_health": 0
1413
+ },
1414
+ "proceed": true
1415
+ },
1416
+ {
1417
+ "clients": [
1418
+ [
1419
+ 2147483648,
1420
+ 0,
1421
+ null
1422
+ ],
1423
+ [
1424
+ 2147483648,
1425
+ 0,
1426
+ null
1427
+ ],
1428
+ [
1429
+ 2147483648,
1430
+ 0,
1431
+ null
1432
+ ],
1433
+ [
1434
+ 2147483648,
1435
+ 0,
1436
+ null
1437
+ ],
1438
+ [
1439
+ 2147483648,
1440
+ 0,
1441
+ null
1442
+ ],
1443
+ [
1444
+ 2147483648,
1445
+ 0,
1446
+ null
1447
+ ],
1448
+ [
1449
+ 2147483648,
1450
+ 0,
1451
+ null
1452
+ ],
1453
+ [
1454
+ 2147483648,
1455
+ 0,
1456
+ null
1457
+ ],
1458
+ [
1459
+ 2147483648,
1460
+ 0,
1461
+ null
1462
+ ],
1463
+ [
1464
+ 2147483648,
1465
+ 0,
1466
+ null
1467
+ ],
1468
+ [
1469
+ 2147483648,
1470
+ 0,
1471
+ null
1472
+ ],
1473
+ [
1474
+ 2147483648,
1475
+ 0,
1476
+ null
1477
+ ],
1478
+ [
1479
+ 2147483648,
1480
+ 0,
1481
+ null
1482
+ ],
1483
+ [
1484
+ 2147483648,
1485
+ 0,
1486
+ null
1487
+ ],
1488
+ [
1489
+ 2147483648,
1490
+ 0,
1491
+ null
1492
+ ],
1493
+ [
1494
+ 2147483648,
1495
+ 0,
1496
+ null
1497
+ ],
1498
+ [
1499
+ 2147483648,
1500
+ 0,
1501
+ null
1502
+ ],
1503
+ [
1504
+ 2147483648,
1505
+ 0,
1506
+ null
1507
+ ],
1508
+ [
1509
+ 2147483648,
1510
+ 0,
1511
+ null
1512
+ ],
1513
+ [
1514
+ 2147483648,
1515
+ 0,
1516
+ null
1517
+ ],
1518
+ [
1519
+ 2147483648,
1520
+ 0,
1521
+ null
1522
+ ],
1523
+ [
1524
+ 2147483648,
1525
+ 0,
1526
+ null
1527
+ ],
1528
+ [
1529
+ 2147483648,
1530
+ 0,
1531
+ null
1532
+ ],
1533
+ [
1534
+ 2147483648,
1535
+ 0,
1536
+ null
1537
+ ],
1538
+ [
1539
+ 2147483648,
1540
+ 0,
1541
+ null
1542
+ ],
1543
+ [
1544
+ 2147483648,
1545
+ 0,
1546
+ null
1547
+ ],
1548
+ [
1549
+ 2147483648,
1550
+ 0,
1551
+ null
1552
+ ],
1553
+ [
1554
+ 2147483648,
1555
+ 0,
1556
+ null
1557
+ ],
1558
+ [
1559
+ 2147483648,
1560
+ 0,
1561
+ null
1562
+ ],
1563
+ [
1564
+ 2147483648,
1565
+ 0,
1566
+ null
1567
+ ],
1568
+ [
1569
+ 2147483648,
1570
+ 0,
1571
+ null
1572
+ ],
1573
+ [
1574
+ 2147483648,
1575
+ 0,
1576
+ null
1577
+ ],
1578
+ [
1579
+ 2147483648,
1580
+ 0,
1581
+ null
1582
+ ],
1583
+ [
1584
+ 2147483648,
1585
+ 0,
1586
+ null
1587
+ ],
1588
+ [
1589
+ 2147483648,
1590
+ 0,
1591
+ null
1592
+ ],
1593
+ [
1594
+ 2147483648,
1595
+ 0,
1596
+ null
1597
+ ],
1598
+ [
1599
+ 2147483648,
1600
+ 0,
1601
+ null
1602
+ ],
1603
+ [
1604
+ 2147483648,
1605
+ 0,
1606
+ null
1607
+ ],
1608
+ [
1609
+ 2147483648,
1610
+ 0,
1611
+ null
1612
+ ],
1613
+ [
1614
+ 2147483648,
1615
+ 0,
1616
+ null
1617
+ ],
1618
+ [
1619
+ 2147483648,
1620
+ 0,
1621
+ null
1622
+ ],
1623
+ [
1624
+ 2147483648,
1625
+ 0,
1626
+ null
1627
+ ],
1628
+ [
1629
+ 2147483648,
1630
+ 0,
1631
+ null
1632
+ ],
1633
+ [
1634
+ 2147483648,
1635
+ 0,
1636
+ null
1637
+ ],
1638
+ [
1639
+ 2147483648,
1640
+ 0,
1641
+ null
1642
+ ],
1643
+ [
1644
+ 2147483648,
1645
+ 0,
1646
+ null
1647
+ ],
1648
+ [
1649
+ 2147483648,
1650
+ 0,
1651
+ null
1652
+ ],
1653
+ [
1654
+ 2147483648,
1655
+ 0,
1656
+ null
1657
+ ],
1658
+ [
1659
+ 2147483648,
1660
+ 0,
1661
+ null
1662
+ ],
1663
+ [
1664
+ 2147483648,
1665
+ 0,
1666
+ null
1667
+ ],
1668
+ [
1669
+ 2147483648,
1670
+ 0,
1671
+ null
1672
+ ],
1673
+ [
1674
+ 2147483648,
1675
+ 0,
1676
+ null
1677
+ ],
1678
+ [
1679
+ 2147483648,
1680
+ 0,
1681
+ null
1682
+ ],
1683
+ [
1684
+ 2147483648,
1685
+ 0,
1686
+ null
1687
+ ],
1688
+ [
1689
+ 2147483648,
1690
+ 0,
1691
+ null
1692
+ ],
1693
+ [
1694
+ 2147483648,
1695
+ 0,
1696
+ null
1697
+ ],
1698
+ [
1699
+ 2147483648,
1700
+ 0,
1701
+ null
1702
+ ],
1703
+ [
1704
+ 2147483648,
1705
+ 0,
1706
+ null
1707
+ ],
1708
+ [
1709
+ 2147483648,
1710
+ 0,
1711
+ null
1712
+ ],
1713
+ [
1714
+ 2147483648,
1715
+ 0,
1716
+ null
1717
+ ],
1718
+ [
1719
+ 2147483648,
1720
+ 0,
1721
+ null
1722
+ ],
1723
+ [
1724
+ 2147483648,
1725
+ 0,
1726
+ null
1727
+ ],
1728
+ [
1729
+ 2147483648,
1730
+ 0,
1731
+ null
1732
+ ],
1733
+ [
1734
+ 2147483648,
1735
+ 0,
1736
+ null
1737
+ ]
1738
+ ],
1739
+ "execution": {
1740
+ "stop": 152994,
1741
+ "trace_length": 2052,
1742
+ "trace_sha256": "f8f9978e024ea073f2ef147a7bf23722260f76addc3d001df38d80d4dd9c207c"
1743
+ },
1744
+ "input": {
1745
+ "active": 1,
1746
+ "client": 1,
1747
+ "connection": 2,
1748
+ "count": 64,
1749
+ "entity": 1,
1750
+ "extra": 2147483648,
1751
+ "follow": 0,
1752
+ "health": 1,
1753
+ "mode": 10,
1754
+ "name": "full-pool",
1755
+ "self_flags": 0,
1756
+ "target_connection": 2,
1757
+ "target_follow": 0,
1758
+ "target_health": 0
1759
+ },
1760
+ "proceed": true
1761
+ }
1762
+ ],
1763
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1764
+ "source": {
1765
+ "archive": "zUrT43_qvm.pk3",
1766
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
1767
+ "member": {
1768
+ "bytes": 983300,
1769
+ "comment_hex": "",
1770
+ "compressed_bytes": 246560,
1771
+ "compression": 8,
1772
+ "crc32": "98ea1768",
1773
+ "create_system": 0,
1774
+ "create_version": 63,
1775
+ "date_time": [
1776
+ 2018,
1777
+ 6,
1778
+ 18,
1779
+ 22,
1780
+ 11,
1781
+ 50
1782
+ ],
1783
+ "directory": false,
1784
+ "entry_index": 2,
1785
+ "external_attr": 32,
1786
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
1787
+ "extract_version": 20,
1788
+ "flags": 0,
1789
+ "header_offset": 221309,
1790
+ "internal_attr": 0,
1791
+ "occurrence": 0,
1792
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
1793
+ "path": "vm/qagame.qvm",
1794
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
1795
+ "type": "member",
1796
+ "volume": 0
1797
+ }
1798
+ }
1799
+ }
docs/research/qvm-resumer-audit.json CHANGED
@@ -9226,6 +9226,66 @@
9226
  "repeated_calls_opt_in": false,
9227
  "repeated_calls_setting": "default_false"
9228
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9229
  {
9230
  "backward_conditional_branches": [],
9231
  "calls": [],
@@ -10318,8 +10378,8 @@
10318
  }
10319
  },
10320
  "summary": {
10321
- "call_expressions": 208,
10322
- "files": 160,
10323
  "legacy_expressions": 158,
10324
  "nonliteral_ranges": 29,
10325
  "unresolved_mode_expressions": 3
 
9226
  "repeated_calls_opt_in": false,
9227
  "repeated_calls_setting": "default_false"
9228
  },
9229
+ {
9230
+ "backward_conditional_branches": [
9231
+ 152993,
9232
+ 153416
9233
+ ],
9234
+ "calls": [
9235
+ {
9236
+ "dynamic_store_requires_review": false,
9237
+ "implicit_local_offset": 64,
9238
+ "instruction": 153091,
9239
+ "stores_result": true,
9240
+ "target": 65655
9241
+ },
9242
+ {
9243
+ "dynamic_store_requires_review": false,
9244
+ "implicit_local_offset": null,
9245
+ "instruction": 153166,
9246
+ "stores_result": false,
9247
+ "target": 152386
9248
+ },
9249
+ {
9250
+ "dynamic_store_requires_review": false,
9251
+ "implicit_local_offset": null,
9252
+ "instruction": 153247,
9253
+ "stores_result": false,
9254
+ "target": 278003
9255
+ },
9256
+ {
9257
+ "dynamic_store_requires_review": false,
9258
+ "implicit_local_offset": null,
9259
+ "instruction": 153280,
9260
+ "stores_result": false,
9261
+ "target": 7259
9262
+ },
9263
+ {
9264
+ "dynamic_store_requires_review": false,
9265
+ "implicit_local_offset": null,
9266
+ "instruction": 153342,
9267
+ "stores_result": false,
9268
+ "target": 278003
9269
+ },
9270
+ {
9271
+ "dynamic_store_requires_review": false,
9272
+ "implicit_local_offset": null,
9273
+ "instruction": 153404,
9274
+ "stores_result": false,
9275
+ "target": 278003
9276
+ }
9277
+ ],
9278
+ "explicit_result_offsets": null,
9279
+ "helper": "qvm_trace_support.resume",
9280
+ "line": 94,
9281
+ "literal_range": [
9282
+ 152793,
9283
+ 153418
9284
+ ],
9285
+ "path": "scripts/qvm_move_callbacks_support.py",
9286
+ "repeated_calls_opt_in": true,
9287
+ "repeated_calls_setting": "literal_true"
9288
+ },
9289
  {
9290
  "backward_conditional_branches": [],
9291
  "calls": [],
 
10378
  }
10379
  },
10380
  "summary": {
10381
+ "call_expressions": 209,
10382
+ "files": 161,
10383
  "legacy_expressions": 158,
10384
  "nonliteral_ranges": 29,
10385
  "unresolved_mode_expressions": 3
scripts/analyze_qvm_move_assist_cleanup.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,cleanup,cleanup_fixtures
6
+
7
+ def main():
8
+ q,raw,h,ins=source();probes=[]
9
+ for a in cleanup_fixtures():
10
+ m,b=seed(raw,h,a);m,p,b=cleanup(ins,m,b,a);p['input']=a;probes.append(p)
11
+ write_json(Path('docs/research/qvm-move-assist-cleanup.json'),dict(source=q['source'],sha256=q['sha256'],probes=probes,limits='Actual152792 admission/first cleanup scan, stop152994 before assistance search or153417 return. Entity/client mappings supplied, no assistance-distance or nested thaw callbacks executed.'))
12
+ if __name__=='__main__':main()
scripts/qvm_move_callbacks_oracle.py CHANGED
@@ -20,3 +20,14 @@ def self_recovery(a):
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
 
 
 
 
 
 
 
 
 
 
 
 
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
23
+
24
+ def cleanup(a):
25
+ rows=[[a['extra'],0,None] for _ in range(max(3,a['count']))];rows[0]=[a['extra']|8192,a['active'],1];rows[2]=[a['extra']|a['self_flags']|8192,1,1]
26
+ active=a['entity'] and a['client'] and a['mode']==10 and a['connection']==2 and signed(a['health'])>0 and not a['follow'];proceed=False
27
+ if active:
28
+ if rows[2][0]&16384:rows[2]=[rows[2][0]&~8192,0,None]
29
+ else:
30
+ for j in range(a['count']):
31
+ if rows[j][1] and (a['target_connection']!=2 or signed(a['target_health'])<=0 or a['target_follow']):rows[j]=[rows[j][0]&~8192,0,None]
32
+ proceed=True
33
+ return dict(clients=rows,proceed=proceed)
scripts/qvm_move_callbacks_support.py CHANGED
@@ -66,3 +66,30 @@ def self_recovery_run(ins,m,b,entity=ENTITY):
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)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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)
69
+
70
+ from qvm_client_processing_support import execute
71
+ from qvm_camera_world_support import POOL
72
+ from qvm_exit_rules_support import CPOOL
73
+
74
+ def cleanup_fixtures():
75
+ profiles=[('normal',{}),('dead-target',dict(target_health=0)),('disconnected-target',dict(target_connection=1)),('following-target',dict(target_follow=1)),('inactive-helper',dict(active=0,target_health=0)),('protected-self',dict(self_flags=16384,target_health=0)),('dead-self',dict(health=0,target_health=0)),('following-self',dict(follow=1,target_health=0)),('wrong-mode',dict(mode=9,target_health=0)),('null-entity',dict(entity=0,target_health=0)),('null-client',dict(client=0,target_health=0)),('disconnected-self',dict(connection=1,target_health=0)),('count-zero',dict(count=0,target_health=0)),('full-pool',dict(count=64,target_health=0))]
76
+ defaults=dict(entity=1,client=1,mode=10,connection=2,health=1,follow=0,self_flags=0,target_health=1,target_connection=2,target_follow=0,active=1,count=3)
77
+ return [dict(defaults,**changes,name=name,extra=extra) for name,changes in profiles for extra in [0,0x80000000]]
78
+
79
+ def cleanup_seed(m,a):
80
+ m.update({34090788:a['mode'],34992524:a['count'],ENTITY+520:CLIENT if a['client'] else 0})
81
+ # The loop traverses entity pointers, not a client array.
82
+ for j in range(max(3,a['count'])):
83
+ e=POOL+880*j;c=CPOOL+6336*j;m.update({e+520:c,c+468:2,c+208:1,c+4324:0,c+220:a['extra'],c+6316:0,c+6320:0})
84
+ m.update({ENTITY+520:CLIENT if a['client'] else 0,CLIENT+468:a['connection'],CLIENT+208:a['health'],CLIENT+4324:a['follow'],CLIENT+220:a['extra']|a['self_flags']|8192,CLIENT+6316:1,CLIENT+6320:POOL+880})
85
+ helper=CPOOL;m.update({helper+220:a['extra']|8192,helper+6316:a['active'],helper+6320:POOL+880,CPOOL+6336+468:a['target_connection'],CPOOL+6336+208:a['target_health'],CPOOL+6336+4324:a['target_follow']})
86
+
87
+ def cleanup_view(m,a):
88
+ return [[m[CPOOL+6336*j+220]&0xffffffff,m[CPOOL+6336*j+6316]&0xffffffff,None if not m[CPOOL+6336*j+6320] else (m[CPOOL+6336*j+6320]-POOL)//880] for j in range(max(3,a['count']))]
89
+
90
+ def cleanup(ins,m,b,a):
91
+ from qvm_string_memory_support import frame_args
92
+ from qvm_trace_support import resume
93
+ cleanup_seed(m,a);base=ROOT+0x70000;m,b=frame_args(m,b,{base+96:ENTITY if a['entity'] else 0})
94
+ m,p=resume(ins,152793,153418,m,base,boundaries=(152994,153417),byte_inputs=b,repeated_calls=True,sync_child_words=True,coherent_memory=True,byte_handlers=True,capture_byte_memory=True,limit=32768)
95
+ return m,dict(clients=cleanup_view(m,a),proceed=p['stop']==152994,execution={k:p[k] for k in ['stop','trace_length','trace_sha256']}),p['byte_memory']
scripts/test_qvm_move_assist_cleanup.py ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from qvm_move_callbacks_oracle import cleanup
4
+ class OriginalTests(unittest.TestCase):
5
+ def test_original_contract(self):
6
+ rows=json.loads(Path('docs/research/qvm-move-assist-cleanup.json').read_text())['probes'];self.assertEqual(len(rows),28)
7
+ for p in rows:
8
+ with self.subTest(input=p['input']):
9
+ for k,v in cleanup(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-assist-cleanup.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
@@ -3874,3 +3874,7 @@ edge crates/urt-gameplay/src/client_move_context.rs scripts/analyze_rust_move_se
3874
  edge crates/urt-gameplay/src/bin/urt-client-move-context.rs scripts/analyze_rust_move_self_recovery.py
3875
  edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_move_self_recovery.py
3876
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_move_self_recovery.py
 
 
 
 
 
3874
  edge crates/urt-gameplay/src/bin/urt-client-move-context.rs scripts/analyze_rust_move_self_recovery.py
3875
  edge crates/urt-gameplay/src/move_callbacks.rs scripts/analyze_rust_move_self_recovery.py
3876
  edge crates/urt-gameplay/src/bin/urt-move-callbacks.rs scripts/analyze_rust_move_self_recovery.py
3877
+ report scripts/analyze_qvm_move_assist_cleanup.py docs/research/qvm-move-assist-cleanup.json
3878
+ edge docs/research/qvm-move-assist-cleanup.json scripts/test_qvm_move_assist_cleanup.py
3879
+ group qvm-move-assist-cleanup scripts/analyze_qvm_move_assist_cleanup.py
3880
+ edge scripts/analyze_qvm_move_assist_cleanup.py scripts/analyze_qvm_resumer_audit.py