qvm: recover staged normal map reset
Browse files- docs/FINDINGS.md +3 -0
- docs/PROVISIONAL_TODO.md +3 -0
- docs/RESEARCH_LEDGER.md +5 -0
- docs/REVERSE_ENGINEERING_TODO.md +3 -0
- docs/research/QVM_NEXTMAP_RESET.md +7 -0
- docs/research/README.md +3 -0
- docs/research/qvm-nextmap-reset.json +0 -0
- scripts/analyze_qvm_nextmap_reset.py +25 -0
- scripts/test_qvm_nextmap_reset.py +18 -0
- xtask/checks.tsv +4 -0
docs/FINDINGS.md
CHANGED
|
@@ -1547,3 +1547,6 @@ RE-813–822 replaces the scoreboard decimal assumption with actual37914 executi
|
|
| 1547 |
|
| 1548 |
|
| 1549 |
**RE-849:** Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. [Evidence](research/RUST_NEXTMAP_SERIES.md).
|
|
|
|
|
|
|
|
|
|
|
|
| 1547 |
|
| 1548 |
|
| 1549 |
**RE-849:** Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. [Evidence](research/RUST_NEXTMAP_SERIES.md).
|
| 1550 |
+
|
| 1551 |
+
|
| 1552 |
+
**RE-850:** 48 original 6939 suffix cases recover round/blocked/global score clears, connected-client score resets, extra mode9 field304/308 resets, then connection2→1 after captured249007. A mid-call snapshot proves ordering; pending, phase, series flags and saved scores remain unchanged. Actual map/command children remain captured. [Evidence](research/QVM_NEXTMAP_RESET.md).
|
docs/PROVISIONAL_TODO.md
CHANGED
|
@@ -1566,3 +1566,6 @@ RE-848: 300 original 6939 cases recover the positive-phase/team-classified gate,
|
|
| 1566 |
|
| 1567 |
|
| 1568 |
RE-849: Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. Full runtime completion remains open. [Evidence](research/RUST_NEXTMAP_SERIES.md).
|
|
|
|
|
|
|
|
|
|
|
|
| 1566 |
|
| 1567 |
|
| 1568 |
RE-849: Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. Full runtime completion remains open. [Evidence](research/RUST_NEXTMAP_SERIES.md).
|
| 1569 |
+
|
| 1570 |
+
|
| 1571 |
+
RE-850: 48 original 6939 suffix cases recover round/blocked/global score clears, connected-client score resets, extra mode9 field304/308 resets, then connection2→1 after captured249007. A mid-call snapshot proves ordering; pending, phase, series flags and saved scores remain unchanged. Actual map/command children remain captured. Full runtime completion remains open. [Evidence](research/QVM_NEXTMAP_RESET.md).
|
docs/RESEARCH_LEDGER.md
CHANGED
|
@@ -1923,3 +1923,8 @@ Rust matches 36 original view-selection cases: supplied fallback/search results,
|
|
| 1923 |
## 2026-10-27 — RE-849 Rust team-series transition policy
|
| 1924 |
|
| 1925 |
Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. Focused `cargo xtask test-group rust-nextmap-series` passes (9 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1923 |
## 2026-10-27 — RE-849 Rust team-series transition policy
|
| 1924 |
|
| 1925 |
Rust matches 300 original series-branch cases, reusing the verified mode classifier and preserving restart priority, saved score order, raw flags and pending/blocked clearing. Formatting/configstring/map calls remain ordered intentions; the normal branch is left for its own policy. Focused `cargo xtask test-group rust-nextmap-series` passes (9 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
|
| 1926 |
+
|
| 1927 |
+
|
| 1928 |
+
## 2026-10-27 — RE-850 Original normal next-map reset staging and connection changes
|
| 1929 |
+
|
| 1930 |
+
48 original 6939 suffix cases recover round/blocked/global score clears, connected-client score resets, extra mode9 field304/308 resets, then connection2→1 after captured249007. A mid-call snapshot proves ordering; pending, phase, series flags and saved scores remain unchanged. Actual map/command children remain captured. Focused `cargo xtask test-group nextmap-reset` passes (5 Python tests); selected reports regenerate twice deterministically, with storage, documentation links and whitespace guards. Full suite deferred to task ten. Original assets unchanged; source fixtures do not establish complete native/runtime parity.
|
docs/REVERSE_ENGINEERING_TODO.md
CHANGED
|
@@ -1603,3 +1603,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
|
|
| 1603 |
|
| 1604 |
|
| 1605 |
- [x] RE-849 Rust team-series transition policy ([evidence](research/RUST_NEXTMAP_SERIES.md)).
|
|
|
|
|
|
|
|
|
|
|
|
| 1603 |
|
| 1604 |
|
| 1605 |
- [x] RE-849 Rust team-series transition policy ([evidence](research/RUST_NEXTMAP_SERIES.md)).
|
| 1606 |
+
|
| 1607 |
+
|
| 1608 |
+
- [x] RE-850 Original normal next-map reset staging and connection changes ([evidence](research/QVM_NEXTMAP_RESET.md)).
|
docs/research/QVM_NEXTMAP_RESET.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Original normal next-map reset staging and connection changes
|
| 2 |
+
|
| 3 |
+
RE-850. Reproduce with `python3 scripts/analyze_qvm_nextmap_reset.py`; focused validation: `cargo xtask test-group nextmap-reset`. [Machine report](qvm-nextmap-reset.json).
|
| 4 |
+
|
| 5 |
+
48 original 6939 suffix cases recover round/blocked/global score clears, connected-client score resets, extra mode9 field304/308 resets, then connection2→1 after captured249007. A mid-call snapshot proves ordering; pending, phase, series flags and saved scores remain unchanged. Actual map/command children remain captured.
|
| 6 |
+
|
| 7 |
+
Original executable/native runtime and complete Linux/macOS Rust/Bevy/Solari acceptance remain unverified.
|
docs/research/README.md
CHANGED
|
@@ -1141,3 +1141,6 @@ The extension collector adds five focused tests for native tail calls, command-r
|
|
| 1141 |
|
| 1142 |
|
| 1143 |
[RE-849: Rust team-series transition policy](RUST_NEXTMAP_SERIES.md).
|
|
|
|
|
|
|
|
|
|
|
|
| 1141 |
|
| 1142 |
|
| 1143 |
[RE-849: Rust team-series transition policy](RUST_NEXTMAP_SERIES.md).
|
| 1144 |
+
|
| 1145 |
+
|
| 1146 |
+
[RE-850: Original normal next-map reset staging and connection changes](QVM_NEXTMAP_RESET.md).
|
docs/research/qvm-nextmap-reset.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
scripts/analyze_qvm_nextmap_reset.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
import itertools
|
| 3 |
+
from pathlib import Path
|
| 4 |
+
from qvm_research_support import source
|
| 5 |
+
from qvm_transition_support import run,state_seed,state_words,CPOOL
|
| 6 |
+
from analyze_qvm import write_json
|
| 7 |
+
FIELDS=[248,304,308,468,696]
|
| 8 |
+
def snapshot(m,n):return [{str(o):m[CPOOL+6336*j+o]&0xffffffff for o in FIELDS} for j in range(n)]
|
| 9 |
+
def main():
|
| 10 |
+
q,raw,h,ins=source();rows=[]
|
| 11 |
+
for mode,count,phase,pattern in itertools.product([0,9,11],[0,1,3,4],[-1,2],[[2,2,2,2],[0,1,2,2]]):
|
| 12 |
+
a=dict(mode=mode,max_clients=count,phase=phase,flags=0xffffffff,option=1,first=5,second=-7);m=state_seed(**a);m[34089604]=count;m[34992496]=CPOOL
|
| 13 |
+
for j in range(4):
|
| 14 |
+
for o in FIELDS:m[CPOOL+6336*j+o]=pattern[j] if o==468 else (j+1)*100+o
|
| 15 |
+
before=snapshot(m,4);old=state_words(m);requests=[];middle=None
|
| 16 |
+
def capture(t):
|
| 17 |
+
def call(i,m,args):
|
| 18 |
+
nonlocal middle
|
| 19 |
+
requests.append({'target':t,'arguments':args})
|
| 20 |
+
if t==249007:middle=snapshot(m,4)
|
| 21 |
+
return m,0,{'effect_captured':True}
|
| 22 |
+
return call
|
| 23 |
+
m,p=run(ins,m,7069,7186,48,handlers={t:capture(t) for t in [122230,7188,249007]});p.update(input=a,before=old,clients_before=before,middle=middle,clients=snapshot(m,4),state=state_words(m),requests=requests);rows.append(p)
|
| 24 |
+
write_json(Path('docs/research/qvm-nextmap-reset.json'),{'source':q['source'],'sha256':q['sha256'],'probes':rows,'limits':'Actual6939 normal suffix7070..7185 over48 cases.122230/7188/249007 children captured without mutations; snapshot at249007 distinguishes score resets from later connection2->1 loop. No command/native-map integration or child mutation claim.'})
|
| 25 |
+
if __name__=='__main__':main()
|
scripts/test_qvm_nextmap_reset.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import json,unittest
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
class ResetTests(unittest.TestCase):
|
| 4 |
+
def test_scoped_score_resets_before_connection_drop(self):
|
| 5 |
+
rows=json.loads(Path('docs/research/qvm-nextmap-reset.json').read_text())['probes'];self.assertEqual(len(rows),48)
|
| 6 |
+
for p in rows:
|
| 7 |
+
a=p['input'];mid=[dict(v) for v in p['clients_before']]
|
| 8 |
+
for c in mid[:a['max_clients']]:
|
| 9 |
+
if c['468']==2:
|
| 10 |
+
c['248']=0
|
| 11 |
+
if a['mode']==9:c['304']=c['308']=0
|
| 12 |
+
end=[dict(v) for v in mid]
|
| 13 |
+
for c in end[:a['max_clients']]:
|
| 14 |
+
if c['468']==2:c['468']=1
|
| 15 |
+
self.assertEqual(p['middle'],mid);self.assertEqual(p['clients'],end);state=dict(p['before']);state.update(round=0,blocked=0,first=0,second=0);self.assertEqual(p['state'],state)
|
| 16 |
+
def test_external_request_order_and_preserved_pending(self):
|
| 17 |
+
for p in json.loads(Path('docs/research/qvm-nextmap-reset.json').read_text())['probes']:self.assertEqual(p['requests'],[{'target':t,'arguments':{}} for t in [122230,7188,249007]]);self.assertEqual(p['state']['pending'],p['before']['pending'])
|
| 18 |
+
if __name__=='__main__':unittest.main()
|
xtask/checks.tsv
CHANGED
|
@@ -2299,3 +2299,7 @@ report scripts/analyze_rust_nextmap_series.py docs/research/rust-nextmap-series.
|
|
| 2299 |
edge docs/research/rust-nextmap-series.json scripts/test_rust_nextmap_series.py
|
| 2300 |
group rust-nextmap-series scripts/analyze_rust_nextmap_series.py
|
| 2301 |
edge scripts/analyze_rust_nextmap_series.py scripts/analyze_qvm_resumer_audit.py
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2299 |
edge docs/research/rust-nextmap-series.json scripts/test_rust_nextmap_series.py
|
| 2300 |
group rust-nextmap-series scripts/analyze_rust_nextmap_series.py
|
| 2301 |
edge scripts/analyze_rust_nextmap_series.py scripts/analyze_qvm_resumer_audit.py
|
| 2302 |
+
report scripts/analyze_qvm_nextmap_reset.py docs/research/qvm-nextmap-reset.json
|
| 2303 |
+
edge docs/research/qvm-nextmap-reset.json scripts/test_qvm_nextmap_reset.py
|
| 2304 |
+
group nextmap-reset scripts/analyze_qvm_nextmap_reset.py
|
| 2305 |
+
edge scripts/analyze_qvm_nextmap_reset.py scripts/analyze_qvm_resumer_audit.py
|