nmarshall commited on
Commit
81414f0
·
1 Parent(s): 3e6cd09

qvm: recover leaderboard layout

Browse files
docs/ASSET_PIPELINE_TODO.md CHANGED
@@ -970,3 +970,6 @@ Research progress: RE-770 [report](research/QVM_RANK_SMALL_SORT.md); original as
970
 
971
 
972
  Research progress: RE-771 [report](research/QVM_RANKING_COMPLETE.md); original assets unchanged.
 
 
 
 
970
 
971
 
972
  Research progress: RE-771 [report](research/QVM_RANKING_COMPLETE.md); original assets unchanged.
973
+
974
+
975
+ Research progress: RE-772 [report](research/QVM_LEADERBOARD_LAYOUT.md); original assets unchanged.
docs/FINDINGS.md CHANGED
@@ -1316,3 +1316,6 @@ RE-725–734 batch: [health, contact and Rust impulse findings](research/QVM_HEA
1316
 
1317
 
1318
  **RE-771 — Complete finite ranking sort tie flags and publication requests:** 5864 now executes actual aligned small sorting and publishes team/individual rank words with tie bit16384 before explicit publication requests. [Evidence](research/QVM_RANKING_COMPLETE.md).
 
 
 
 
1316
 
1317
 
1318
  **RE-771 — Complete finite ranking sort tie flags and publication requests:** 5864 now executes actual aligned small sorting and publishes team/individual rank words with tie bit16384 before explicit publication requests. [Evidence](research/QVM_RANKING_COMPLETE.md).
1319
+
1320
+
1321
+ **RE-772 — Leaderboard slot mapping sparse layout and sentinels:** 278587 maps20 weapon-like identifiers to slots0..19;284555 initializes nine metric fields and preserves record holes. [Evidence](research/QVM_LEADERBOARD_LAYOUT.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1314,3 +1314,6 @@ Research progress: RE-770 [report](research/QVM_RANK_SMALL_SORT.md); full native
1314
 
1315
 
1316
  Research progress: RE-771 [report](research/QVM_RANKING_COMPLETE.md); full native/platform/game scope remains open.
 
 
 
 
1314
 
1315
 
1316
  Research progress: RE-771 [report](research/QVM_RANKING_COMPLETE.md); full native/platform/game scope remains open.
1317
+
1318
+
1319
+ Research progress: RE-772 [report](research/QVM_LEADERBOARD_LAYOUT.md); full native/platform/game scope remains open.
docs/RESEARCH_LEDGER.md CHANGED
@@ -1513,3 +1513,8 @@ Exactly ten task commits follow baseline `27a7f96f`. Every completed task passed
1513
  ## 2026-10-21 — RE-771 Complete finite ranking sort tie flags and publication requests
1514
 
1515
  5864 now executes actual aligned small sorting and publishes team/individual rank words with tie bit16384 before explicit publication requests. Focused `cargo xtask test-group ranking-complete` passes (3 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 334757 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
 
 
 
 
 
 
1513
  ## 2026-10-21 — RE-771 Complete finite ranking sort tie flags and publication requests
1514
 
1515
  5864 now executes actual aligned small sorting and publishes team/individual rank words with tie bit16384 before explicit publication requests. Focused `cargo xtask test-group ranking-complete` passes (3 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 334757 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
1516
+
1517
+
1518
+ ## 2026-10-21 — RE-772 Leaderboard slot mapping sparse layout and sentinels
1519
+
1520
+ 278587 maps20 weapon-like identifiers to slots0..19;284555 initializes nine metric fields and preserves record holes. Focused `cargo xtask test-group leaderboard-layout` passes (3 Python tests); selected reports regenerate twice byte-identically, with storage, links and whitespace guards. New report: 14920 bytes. Full-suite validation is deferred to the tenth batch commit. No original assets, Rust runtime or shared VM evaluator changed.
docs/REVERSE_ENGINEERING_TODO.md CHANGED
@@ -1360,3 +1360,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1360
 
1361
 
1362
  - [x] RE-771 Complete finite ranking sort tie flags and publication requests ([report](research/QVM_RANKING_COMPLETE.md)).
 
 
 
 
1360
 
1361
 
1362
  - [x] RE-771 Complete finite ranking sort tie flags and publication requests ([report](research/QVM_RANKING_COMPLETE.md)).
1363
+
1364
+
1365
+ - [x] RE-772 Leaderboard slot mapping sparse layout and sentinels ([report](research/QVM_LEADERBOARD_LAYOUT.md)).
docs/research/QVM_LEADERBOARD_LAYOUT.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Leaderboard slot mapping sparse layout and sentinels
2
+
3
+ RE-772. Reproduce with `python3 scripts/analyze_qvm_leaderboard_layout.py`; validate with `cargo xtask test-group leaderboard-layout`. See the [machine report](qvm-leaderboard-layout.json).
4
+
5
+ Recovered complete278587 and284555 using original table31236. The mapping differs from the method-stat classifier. Integer thresholds use-1 and float metric56 uses float32-1. Two record fill patterns independently verify sparse writes and untouched fields. Selector/category semantics and native publication remain open.
6
+
7
+ No original executable/full VM/native world collision or rendering runs. Supplied callback/native responses and fixture domains remain explicit; complete macOS/Linux Rust/Bevy/Solari gameplay remains open.
docs/research/README.md CHANGED
@@ -906,3 +906,6 @@ The extension collector adds five focused tests for native tail calls, command-r
906
 
907
 
908
  [RE-771: Complete finite ranking sort tie flags and publication requests](QVM_RANKING_COMPLETE.md).
 
 
 
 
906
 
907
 
908
  [RE-771: Complete finite ranking sort tie flags and publication requests](QVM_RANKING_COMPLETE.md).
909
+
910
+
911
+ [RE-772: Leaderboard slot mapping sparse layout and sentinels](QVM_LEADERBOARD_LAYOUT.md).
docs/research/qvm-leaderboard-layout.json ADDED
@@ -0,0 +1,613 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "initializers": [
3
+ {
4
+ "execution": {
5
+ "byte_writes": [],
6
+ "calls": [],
7
+ "children": [],
8
+ "return": null,
9
+ "stop": 284608,
10
+ "trace": null,
11
+ "trace_length": 52,
12
+ "trace_sha256": "edef15a280294e7811bacdee436fd7e15a310d5689355033a3bb2b85a785eb57"
13
+ },
14
+ "final": {
15
+ "0": 4294967295,
16
+ "12": 4294967295,
17
+ "16": 0,
18
+ "20": 0,
19
+ "24": 4294967295,
20
+ "28": 0,
21
+ "32": 0,
22
+ "36": 0,
23
+ "4": 4294967295,
24
+ "40": 4294967295,
25
+ "44": 0,
26
+ "48": 0,
27
+ "52": 0,
28
+ "56": 3212836864,
29
+ "60": 4294967295,
30
+ "64": 4294967295,
31
+ "68": 0,
32
+ "72": 0,
33
+ "8": 4294967295
34
+ },
35
+ "initial": {
36
+ "0": 0,
37
+ "12": 0,
38
+ "16": 0,
39
+ "20": 0,
40
+ "24": 0,
41
+ "28": 0,
42
+ "32": 0,
43
+ "36": 0,
44
+ "4": 0,
45
+ "40": 0,
46
+ "44": 0,
47
+ "48": 0,
48
+ "52": 0,
49
+ "56": 0,
50
+ "60": 0,
51
+ "64": 0,
52
+ "68": 0,
53
+ "72": 0,
54
+ "8": 0
55
+ }
56
+ },
57
+ {
58
+ "execution": {
59
+ "byte_writes": [],
60
+ "calls": [],
61
+ "children": [],
62
+ "return": null,
63
+ "stop": 284608,
64
+ "trace": null,
65
+ "trace_length": 52,
66
+ "trace_sha256": "edef15a280294e7811bacdee436fd7e15a310d5689355033a3bb2b85a785eb57"
67
+ },
68
+ "final": {
69
+ "0": 4294967295,
70
+ "12": 4294967295,
71
+ "16": 1431655765,
72
+ "20": 1431655765,
73
+ "24": 4294967295,
74
+ "28": 1431655765,
75
+ "32": 1431655765,
76
+ "36": 1431655765,
77
+ "4": 4294967295,
78
+ "40": 4294967295,
79
+ "44": 1431655765,
80
+ "48": 1431655765,
81
+ "52": 1431655765,
82
+ "56": 3212836864,
83
+ "60": 4294967295,
84
+ "64": 4294967295,
85
+ "68": 1431655765,
86
+ "72": 1431655765,
87
+ "8": 4294967295
88
+ },
89
+ "initial": {
90
+ "0": 1431655765,
91
+ "12": 1431655765,
92
+ "16": 1431655765,
93
+ "20": 1431655765,
94
+ "24": 1431655765,
95
+ "28": 1431655765,
96
+ "32": 1431655765,
97
+ "36": 1431655765,
98
+ "4": 1431655765,
99
+ "40": 1431655765,
100
+ "44": 1431655765,
101
+ "48": 1431655765,
102
+ "52": 1431655765,
103
+ "56": 1431655765,
104
+ "60": 1431655765,
105
+ "64": 1431655765,
106
+ "68": 1431655765,
107
+ "72": 1431655765,
108
+ "8": 1431655765
109
+ }
110
+ }
111
+ ],
112
+ "limits": "Complete278587 and284555. Numeric20-slot lookup differs from method-stat278733; sparse sentinel writes preserve holes. No selector, leaderboard publication, text/native/runtime parity in this contract.",
113
+ "probes": [
114
+ {
115
+ "execution": {
116
+ "byte_writes": [],
117
+ "calls": [],
118
+ "children": [],
119
+ "return": -1,
120
+ "stop": 278691,
121
+ "trace": null,
122
+ "trace_length": 10,
123
+ "trace_sha256": "dc099818a940b538aa02e5bc3d0d92f559d37ebbebfb01153770578a9fd3680f"
124
+ },
125
+ "input": -2147483648,
126
+ "slot": -1
127
+ },
128
+ {
129
+ "execution": {
130
+ "byte_writes": [],
131
+ "calls": [],
132
+ "children": [],
133
+ "return": -1,
134
+ "stop": 278691,
135
+ "trace": null,
136
+ "trace_length": 10,
137
+ "trace_sha256": "dc099818a940b538aa02e5bc3d0d92f559d37ebbebfb01153770578a9fd3680f"
138
+ },
139
+ "input": -1,
140
+ "slot": -1
141
+ },
142
+ {
143
+ "execution": {
144
+ "byte_writes": [],
145
+ "calls": [],
146
+ "children": [],
147
+ "return": -1,
148
+ "stop": 278691,
149
+ "trace": null,
150
+ "trace_length": 10,
151
+ "trace_sha256": "dc099818a940b538aa02e5bc3d0d92f559d37ebbebfb01153770578a9fd3680f"
152
+ },
153
+ "input": 0,
154
+ "slot": -1
155
+ },
156
+ {
157
+ "execution": {
158
+ "byte_writes": [],
159
+ "calls": [],
160
+ "children": [],
161
+ "return": -1,
162
+ "stop": 278691,
163
+ "trace": null,
164
+ "trace_length": 10,
165
+ "trace_sha256": "dc099818a940b538aa02e5bc3d0d92f559d37ebbebfb01153770578a9fd3680f"
166
+ },
167
+ "input": 1,
168
+ "slot": -1
169
+ },
170
+ {
171
+ "execution": {
172
+ "byte_writes": [],
173
+ "calls": [],
174
+ "children": [],
175
+ "return": 9,
176
+ "stop": 278691,
177
+ "trace": null,
178
+ "trace_length": 22,
179
+ "trace_sha256": "f251d0940ad478f5207e08875bbab3da1a05bbfd320d3a926abd165d9cb9a207"
180
+ },
181
+ "input": 2,
182
+ "slot": 9
183
+ },
184
+ {
185
+ "execution": {
186
+ "byte_writes": [],
187
+ "calls": [],
188
+ "children": [],
189
+ "return": 8,
190
+ "stop": 278691,
191
+ "trace": null,
192
+ "trace_length": 22,
193
+ "trace_sha256": "51b4f741abde765c63ed766cb3b5457f64c4f5adf88e5d35efacf7d380e0470a"
194
+ },
195
+ "input": 3,
196
+ "slot": 8
197
+ },
198
+ {
199
+ "execution": {
200
+ "byte_writes": [],
201
+ "calls": [],
202
+ "children": [],
203
+ "return": 11,
204
+ "stop": 278691,
205
+ "trace": null,
206
+ "trace_length": 22,
207
+ "trace_sha256": "cef4296be81fd830bdc1df4aee913f8471119c1e1ac1c8a0bc1f592eac59594b"
208
+ },
209
+ "input": 4,
210
+ "slot": 11
211
+ },
212
+ {
213
+ "execution": {
214
+ "byte_writes": [],
215
+ "calls": [],
216
+ "children": [],
217
+ "return": 4,
218
+ "stop": 278691,
219
+ "trace": null,
220
+ "trace_length": 22,
221
+ "trace_sha256": "d749e7ea6581c14c504201fb34b5dcb407e13f11ca3a1ae1d97a95a50961979d"
222
+ },
223
+ "input": 5,
224
+ "slot": 4
225
+ },
226
+ {
227
+ "execution": {
228
+ "byte_writes": [],
229
+ "calls": [],
230
+ "children": [],
231
+ "return": 5,
232
+ "stop": 278691,
233
+ "trace": null,
234
+ "trace_length": 22,
235
+ "trace_sha256": "7a855b2cc44fea97f9c68f9752066fefea84994789ef3ee165d267338558d0a4"
236
+ },
237
+ "input": 6,
238
+ "slot": 5
239
+ },
240
+ {
241
+ "execution": {
242
+ "byte_writes": [],
243
+ "calls": [],
244
+ "children": [],
245
+ "return": -1,
246
+ "stop": 278691,
247
+ "trace": null,
248
+ "trace_length": 22,
249
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
250
+ },
251
+ "input": 7,
252
+ "slot": -1
253
+ },
254
+ {
255
+ "execution": {
256
+ "byte_writes": [],
257
+ "calls": [],
258
+ "children": [],
259
+ "return": 2,
260
+ "stop": 278691,
261
+ "trace": null,
262
+ "trace_length": 22,
263
+ "trace_sha256": "5519f893964ac0fc489251a49ee7142095084db9453b253e8e1048500f963f3a"
264
+ },
265
+ "input": 8,
266
+ "slot": 2
267
+ },
268
+ {
269
+ "execution": {
270
+ "byte_writes": [],
271
+ "calls": [],
272
+ "children": [],
273
+ "return": 0,
274
+ "stop": 278691,
275
+ "trace": null,
276
+ "trace_length": 22,
277
+ "trace_sha256": "7c504d24e5a84538b23ee1ddaf389fa8029794d21d6edb242c3c16d1a72c4a99"
278
+ },
279
+ "input": 9,
280
+ "slot": 0
281
+ },
282
+ {
283
+ "execution": {
284
+ "byte_writes": [],
285
+ "calls": [],
286
+ "children": [],
287
+ "return": 7,
288
+ "stop": 278691,
289
+ "trace": null,
290
+ "trace_length": 22,
291
+ "trace_sha256": "15b9300639c72bb6a0c0b5c8561ea4c62867fabf76bc07168a1f61f9c9959eff"
292
+ },
293
+ "input": 10,
294
+ "slot": 7
295
+ },
296
+ {
297
+ "execution": {
298
+ "byte_writes": [],
299
+ "calls": [],
300
+ "children": [],
301
+ "return": -1,
302
+ "stop": 278691,
303
+ "trace": null,
304
+ "trace_length": 22,
305
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
306
+ },
307
+ "input": 11,
308
+ "slot": -1
309
+ },
310
+ {
311
+ "execution": {
312
+ "byte_writes": [],
313
+ "calls": [],
314
+ "children": [],
315
+ "return": -1,
316
+ "stop": 278691,
317
+ "trace": null,
318
+ "trace_length": 22,
319
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
320
+ },
321
+ "input": 12,
322
+ "slot": -1
323
+ },
324
+ {
325
+ "execution": {
326
+ "byte_writes": [],
327
+ "calls": [],
328
+ "children": [],
329
+ "return": -1,
330
+ "stop": 278691,
331
+ "trace": null,
332
+ "trace_length": 22,
333
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
334
+ },
335
+ "input": 13,
336
+ "slot": -1
337
+ },
338
+ {
339
+ "execution": {
340
+ "byte_writes": [],
341
+ "calls": [],
342
+ "children": [],
343
+ "return": 6,
344
+ "stop": 278691,
345
+ "trace": null,
346
+ "trace_length": 22,
347
+ "trace_sha256": "961c576544b6b6a6e9cbcc27aa724e5d397b8a3641f68e537fbdf70851b8e239"
348
+ },
349
+ "input": 14,
350
+ "slot": 6
351
+ },
352
+ {
353
+ "execution": {
354
+ "byte_writes": [],
355
+ "calls": [],
356
+ "children": [],
357
+ "return": 1,
358
+ "stop": 278691,
359
+ "trace": null,
360
+ "trace_length": 22,
361
+ "trace_sha256": "3f07a4f8ddc7b8bc590be65aaecbe6dd4bfb25993af7bf008d54698d6cc6a2c2"
362
+ },
363
+ "input": 15,
364
+ "slot": 1
365
+ },
366
+ {
367
+ "execution": {
368
+ "byte_writes": [],
369
+ "calls": [],
370
+ "children": [],
371
+ "return": -1,
372
+ "stop": 278691,
373
+ "trace": null,
374
+ "trace_length": 22,
375
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
376
+ },
377
+ "input": 16,
378
+ "slot": -1
379
+ },
380
+ {
381
+ "execution": {
382
+ "byte_writes": [],
383
+ "calls": [],
384
+ "children": [],
385
+ "return": 10,
386
+ "stop": 278691,
387
+ "trace": null,
388
+ "trace_length": 22,
389
+ "trace_sha256": "e902d3454457c47332551ced7648f400fe89ff380f1eb54939519fa711862b83"
390
+ },
391
+ "input": 17,
392
+ "slot": 10
393
+ },
394
+ {
395
+ "execution": {
396
+ "byte_writes": [],
397
+ "calls": [],
398
+ "children": [],
399
+ "return": -1,
400
+ "stop": 278691,
401
+ "trace": null,
402
+ "trace_length": 22,
403
+ "trace_sha256": "5ffbcb8391b58e46adb81c8d1d62f08d93749839948dc919196ec38821ff7906"
404
+ },
405
+ "input": 18,
406
+ "slot": -1
407
+ },
408
+ {
409
+ "execution": {
410
+ "byte_writes": [],
411
+ "calls": [],
412
+ "children": [],
413
+ "return": 3,
414
+ "stop": 278691,
415
+ "trace": null,
416
+ "trace_length": 22,
417
+ "trace_sha256": "980f41cfc81d317c877c72a7b5a97fc0686b796723a9d181b8021b32af7b3a9b"
418
+ },
419
+ "input": 19,
420
+ "slot": 3
421
+ },
422
+ {
423
+ "execution": {
424
+ "byte_writes": [],
425
+ "calls": [],
426
+ "children": [],
427
+ "return": 12,
428
+ "stop": 278691,
429
+ "trace": null,
430
+ "trace_length": 22,
431
+ "trace_sha256": "9f19729fc418321e744cbcbca32d7af59f3a73add23ea7cfefba4c68134f205f"
432
+ },
433
+ "input": 20,
434
+ "slot": 12
435
+ },
436
+ {
437
+ "execution": {
438
+ "byte_writes": [],
439
+ "calls": [],
440
+ "children": [],
441
+ "return": 13,
442
+ "stop": 278691,
443
+ "trace": null,
444
+ "trace_length": 22,
445
+ "trace_sha256": "4a6bf2f5a411ec04d09a8944259d97306f246dcaa858fb6eaab03a799023ccd9"
446
+ },
447
+ "input": 21,
448
+ "slot": 13
449
+ },
450
+ {
451
+ "execution": {
452
+ "byte_writes": [],
453
+ "calls": [],
454
+ "children": [],
455
+ "return": 14,
456
+ "stop": 278691,
457
+ "trace": null,
458
+ "trace_length": 22,
459
+ "trace_sha256": "5d6a7816edb16b8346369d4b76cc7c15c73e37ab05d26c6a83643983dddc1653"
460
+ },
461
+ "input": 22,
462
+ "slot": 14
463
+ },
464
+ {
465
+ "execution": {
466
+ "byte_writes": [],
467
+ "calls": [],
468
+ "children": [],
469
+ "return": 15,
470
+ "stop": 278691,
471
+ "trace": null,
472
+ "trace_length": 22,
473
+ "trace_sha256": "c60905345505c71f75422a2f6d0dc6ffad4466d37c95b779a92ae7697b1a4675"
474
+ },
475
+ "input": 23,
476
+ "slot": 15
477
+ },
478
+ {
479
+ "execution": {
480
+ "byte_writes": [],
481
+ "calls": [],
482
+ "children": [],
483
+ "return": 16,
484
+ "stop": 278691,
485
+ "trace": null,
486
+ "trace_length": 22,
487
+ "trace_sha256": "f2de68d69ce0e5efdeee74b7f5689fa9cbb9f96ba0bfb5ff782554b2e41e50b2"
488
+ },
489
+ "input": 24,
490
+ "slot": 16
491
+ },
492
+ {
493
+ "execution": {
494
+ "byte_writes": [],
495
+ "calls": [],
496
+ "children": [],
497
+ "return": 17,
498
+ "stop": 278691,
499
+ "trace": null,
500
+ "trace_length": 22,
501
+ "trace_sha256": "216c5d37218ee62e121e309345134b1d0bc98eda1246a5994c5611dca5d13a55"
502
+ },
503
+ "input": 25,
504
+ "slot": 17
505
+ },
506
+ {
507
+ "execution": {
508
+ "byte_writes": [],
509
+ "calls": [],
510
+ "children": [],
511
+ "return": 18,
512
+ "stop": 278691,
513
+ "trace": null,
514
+ "trace_length": 22,
515
+ "trace_sha256": "34839dd870afee349cdf4e209b8d842c84f9fabdf82c5b7ed0ed9070f2a13e5b"
516
+ },
517
+ "input": 26,
518
+ "slot": 18
519
+ },
520
+ {
521
+ "execution": {
522
+ "byte_writes": [],
523
+ "calls": [],
524
+ "children": [],
525
+ "return": 19,
526
+ "stop": 278691,
527
+ "trace": null,
528
+ "trace_length": 22,
529
+ "trace_sha256": "d7a6f62c51745bc69b0245a0ad4c95016002952916a0aadbe7869967120149ce"
530
+ },
531
+ "input": 27,
532
+ "slot": 19
533
+ },
534
+ {
535
+ "execution": {
536
+ "byte_writes": [],
537
+ "calls": [],
538
+ "children": [],
539
+ "return": -1,
540
+ "stop": 278691,
541
+ "trace": null,
542
+ "trace_length": 14,
543
+ "trace_sha256": "7eb06e54982a5f7ae4c17ee040ddceb79cfc2d27b334c67cd0143bf171816183"
544
+ },
545
+ "input": 28,
546
+ "slot": -1
547
+ },
548
+ {
549
+ "execution": {
550
+ "byte_writes": [],
551
+ "calls": [],
552
+ "children": [],
553
+ "return": -1,
554
+ "stop": 278691,
555
+ "trace": null,
556
+ "trace_length": 14,
557
+ "trace_sha256": "7eb06e54982a5f7ae4c17ee040ddceb79cfc2d27b334c67cd0143bf171816183"
558
+ },
559
+ "input": 29,
560
+ "slot": -1
561
+ },
562
+ {
563
+ "execution": {
564
+ "byte_writes": [],
565
+ "calls": [],
566
+ "children": [],
567
+ "return": -1,
568
+ "stop": 278691,
569
+ "trace": null,
570
+ "trace_length": 14,
571
+ "trace_sha256": "7eb06e54982a5f7ae4c17ee040ddceb79cfc2d27b334c67cd0143bf171816183"
572
+ },
573
+ "input": 2147483647,
574
+ "slot": -1
575
+ }
576
+ ],
577
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
578
+ "source": {
579
+ "archive": "zUrT43_qvm.pk3",
580
+ "archive_sha256": "b59bf0c5bedf11d50e0edd220da7eade96de40601e98ae14c54c819047df0796",
581
+ "member": {
582
+ "bytes": 983300,
583
+ "comment_hex": "",
584
+ "compressed_bytes": 246560,
585
+ "compression": 8,
586
+ "crc32": "98ea1768",
587
+ "create_system": 0,
588
+ "create_version": 63,
589
+ "date_time": [
590
+ 2018,
591
+ 6,
592
+ 18,
593
+ 22,
594
+ 11,
595
+ 50
596
+ ],
597
+ "directory": false,
598
+ "entry_index": 2,
599
+ "external_attr": 32,
600
+ "extra_hex": "0a0020000000000001001800d1e24e974007d40116dcbf962f1fd20116dcbf962f1fd201",
601
+ "extract_version": 20,
602
+ "flags": 0,
603
+ "header_offset": 221309,
604
+ "internal_attr": 0,
605
+ "occurrence": 0,
606
+ "output": "assets/extracted/zUrT43_qvm.pk3/members/000002/vm/qagame.qvm",
607
+ "path": "vm/qagame.qvm",
608
+ "sha256": "a589351dfe517470a1b121dd2164714987d9e4577bf00c6486e1540035d7a79d",
609
+ "type": "member",
610
+ "volume": 0
611
+ }
612
+ }
613
+ }
scripts/analyze_qvm_leaderboard_layout.py ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ """Leaderboard20-slot mapping and sparse metric sentinel writes."""
3
+ from pathlib import Path
4
+ from qvm_research_support import source
5
+ from qvm_leaderboard_support import mapping_seed,mapping,initialize,RECORD
6
+ from analyze_qvm import write_json
7
+
8
+ def main():
9
+ q,raw,h,ins=source();rows=[];initializers=[]
10
+ for method in [-2147483648,-1,*range(30),2147483647]:
11
+ _,v,e=mapping(ins,mapping_seed(raw,h),{8:method});rows.append({'input':method,'slot':v,'execution':e})
12
+ for value in [0,0x55555555]:
13
+ m={RECORD+o:value for o in range(0,76,4)};_,_,p=initialize(ins,m,{8:RECORD});initializers.append(p)
14
+ write_json(Path('docs/research/qvm-leaderboard-layout.json'),{'source':q['source'],'sha256':q['sha256'],'probes':rows,'initializers':initializers,'limits':'Complete278587 and284555. Numeric20-slot lookup differs from method-stat278733; sparse sentinel writes preserve holes. No selector, leaderboard publication, text/native/runtime parity in this contract.'})
15
+ if __name__=='__main__':main()
scripts/qvm_leaderboard_support.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """278587 slot lookup and284555 metric sentinel initialization."""
2
+ from qvm_health_effects_support import H
3
+ from qvm_research_support import constants
4
+ from qvm_trace_support import resume
5
+ MAP=H+0x1c0000
6
+ INIT=H+0x1d0000
7
+ RECORD=H+0x1e0000
8
+ INTEGER_FIELDS=[0,4,8,12,24,40,60,64]
9
+ FIELDS=[0,4,8,12,24,40,56,60,64]
10
+
11
+ def mapping_seed(raw,h):return constants(raw,h,range(31236+2*4,31236+28*4,4))
12
+
13
+ def mapping(ins,m,args):
14
+ m[MAP+20]=args[8];m,e=resume(ins,278588,278691,m,MAP);return m,e['return'],e
15
+
16
+ def initialize(ins,m,args):
17
+ m[INIT+16]=args[8];before={str(o):m[args[8]+o]&0xffffffff for o in range(0,76,4)};m,e=resume(ins,284556,284608,m,INIT)
18
+ return m,0,{'initial':before,'final':{str(o):m[args[8]+o]&0xffffffff for o in range(0,76,4)},'execution':e}
scripts/test_qvm_leaderboard_layout.py ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ SLOTS={2:9,3:8,4:11,5:4,6:5,8:2,9:0,10:7,14:6,15:1,17:10,19:3,20:12,21:13,22:14,23:15,24:16,25:17,26:18,27:19}
4
+ class LeaderboardLayoutTests(unittest.TestCase):
5
+ @classmethod
6
+ def setUpClass(cls):cls.r=json.loads(Path('docs/research/qvm-leaderboard-layout.json').read_text())
7
+ def test_independent_complete_slot_mapping(self):
8
+ self.assertEqual(len(self.r['probes']),33)
9
+ for p in self.r['probes']:self.assertEqual(p['slot'],SLOTS.get(p['input'],-1))
10
+ def test_sparse_sentinel_initialization_and_untouched_holes(self):
11
+ for p in self.r['initializers']:
12
+ r=dict(p['initial'])
13
+ for o in [0,4,8,12,24,40,60,64]:r[str(o)]=0xffffffff
14
+ r['56']=0xbf800000;self.assertEqual(p['final'],r);self.assertEqual(p['execution']['stop'],284608)
15
+ def test_twentieth_slot_and_no_children(self):
16
+ self.assertEqual({p['slot'] for p in self.r['probes']},set(range(-1,20)))
17
+ for p in self.r['probes']:self.assertEqual(p['execution']['calls'],[])
18
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -1332,3 +1332,6 @@ group rank-small-sort scripts/analyze_qvm_rank_small_sort.py
1332
  report scripts/analyze_qvm_ranking_complete.py docs/research/qvm-ranking-complete.json
1333
  edge docs/research/qvm-ranking-complete.json scripts/test_qvm_ranking_complete.py
1334
  group ranking-complete scripts/analyze_qvm_ranking_complete.py
 
 
 
 
1332
  report scripts/analyze_qvm_ranking_complete.py docs/research/qvm-ranking-complete.json
1333
  edge docs/research/qvm-ranking-complete.json scripts/test_qvm_ranking_complete.py
1334
  group ranking-complete scripts/analyze_qvm_ranking_complete.py
1335
+ report scripts/analyze_qvm_leaderboard_layout.py docs/research/qvm-leaderboard-layout.json
1336
+ edge docs/research/qvm-leaderboard-layout.json scripts/test_qvm_leaderboard_layout.py
1337
+ group leaderboard-layout scripts/analyze_qvm_leaderboard_layout.py