nmarshall commited on
Commit
63f9347
·
1 Parent(s): 243d687

qvm: recover intermission readiness

Browse files
docs/FINDINGS.md CHANGED
@@ -1505,3 +1505,6 @@ RE-813–822 replaces the scoreboard decimal assumption with actual37914 executi
1505
 
1506
 
1507
  **RE-835:** Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. [Evidence](research/RUST_EXIT_PREDICATE.md).
 
 
 
 
1505
 
1506
 
1507
  **RE-835:** Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. [Evidence](research/RUST_EXIT_PREDICATE.md).
1508
+
1509
+
1510
+ **RE-836:** 131 original 7525 cases recover connected/entity-flag8 exclusion, nonzero readiness, first16-slot mask and independent counts. Signed wrapped timestamp additions gate a five-second minimum and ten-second wait; all-ready includes an empty eligible set. Actual 6939 next-map transition remains captured. [Evidence](research/QVM_INTERMISSION_READY.md).
docs/PROVISIONAL_TODO.md CHANGED
@@ -1521,3 +1521,6 @@ RE-834: Actual 7662 and child 33715 execute across 168 cases. Playing count and
1521
 
1522
 
1523
  RE-835: Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. Full runtime completion remains open. [Evidence](research/RUST_EXIT_PREDICATE.md).
 
 
 
 
1521
 
1522
 
1523
  RE-835: Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. Full runtime completion remains open. [Evidence](research/RUST_EXIT_PREDICATE.md).
1524
+
1525
+
1526
+ RE-836: 131 original 7525 cases recover connected/entity-flag8 exclusion, nonzero readiness, first16-slot mask and independent counts. Signed wrapped timestamp additions gate a five-second minimum and ten-second wait; all-ready includes an empty eligible set. Actual 6939 next-map transition remains captured. Full runtime completion remains open. [Evidence](research/QVM_INTERMISSION_READY.md).
docs/RESEARCH_LEDGER.md CHANGED
@@ -1849,3 +1849,8 @@ Actual 7662 and child 33715 execute across 168 cases. Playing count and the enab
1849
  ## 2026-10-27 — RE-835 Rust ranked exit tie predicate
1850
 
1851
  Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. Focused `cargo xtask test-group rust-exit-predicate` 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.
 
 
 
 
 
 
1849
  ## 2026-10-27 — RE-835 Rust ranked exit tie predicate
1850
 
1851
  Rust matches all 168 source cases with typed signed mode classification, global-score and ranked-field selection, early gate handling and safe rank rejection. A separate scoped intermission adapter avoids rebuilding unrelated lifecycle fixtures; original runtime remains open. Focused `cargo xtask test-group rust-exit-predicate` 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.
1852
+
1853
+
1854
+ ## 2026-10-27 — RE-836 Original intermission readiness scan and timeout policy
1855
+
1856
+ 131 original 7525 cases recover connected/entity-flag8 exclusion, nonzero readiness, first16-slot mask and independent counts. Signed wrapped timestamp additions gate a five-second minimum and ten-second wait; all-ready includes an empty eligible set. Actual 6939 next-map transition remains captured. Focused `cargo xtask test-group intermission-ready` 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
@@ -1558,3 +1558,6 @@ Purpose: turn the supplied installation into an evidence-backed specification of
1558
 
1559
 
1560
  - [x] RE-835 Rust ranked exit tie predicate ([evidence](research/RUST_EXIT_PREDICATE.md)).
 
 
 
 
1558
 
1559
 
1560
  - [x] RE-835 Rust ranked exit tie predicate ([evidence](research/RUST_EXIT_PREDICATE.md)).
1561
+
1562
+
1563
+ - [x] RE-836 Original intermission readiness scan and timeout policy ([evidence](research/QVM_INTERMISSION_READY.md)).
docs/research/QVM_INTERMISSION_READY.md ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ # Original intermission readiness scan and timeout policy
2
+
3
+ RE-836. Reproduce with `python3 scripts/analyze_qvm_intermission_ready.py`; focused validation: `cargo xtask test-group intermission-ready`. [Machine report](qvm-intermission-ready.json).
4
+
5
+ 131 original 7525 cases recover connected/entity-flag8 exclusion, nonzero readiness, first16-slot mask and independent counts. Signed wrapped timestamp additions gate a five-second minimum and ten-second wait; all-ready includes an empty eligible set. Actual 6939 next-map transition remains captured.
6
+
7
+ Original executable/native runtime and complete Linux/macOS Rust/Bevy/Solari acceptance remain unverified.
docs/research/README.md CHANGED
@@ -1097,3 +1097,6 @@ The extension collector adds five focused tests for native tail calls, command-r
1097
 
1098
 
1099
  [RE-835: Rust ranked exit tie predicate](RUST_EXIT_PREDICATE.md).
 
 
 
 
1097
 
1098
 
1099
  [RE-835: Rust ranked exit tie predicate](RUST_EXIT_PREDICATE.md).
1100
+
1101
+
1102
+ [RE-836: Original intermission readiness scan and timeout policy](QVM_INTERMISSION_READY.md).
docs/research/qvm-intermission-ready.json ADDED
The diff for this file is too large to render. See raw diff
 
scripts/analyze_qvm_intermission_ready.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python3
2
+ import itertools
3
+ from pathlib import Path
4
+ from qvm_research_support import source
5
+ from qvm_intermission_support import seed,execute,E
6
+ from analyze_qvm import write_json
7
+
8
+ def cases():
9
+ for n,pattern,elapsed,waiting in itertools.product([0,1,4,17],['all','none','mixed','excluded'],[4999,5000,14999,15000],[0,1]):
10
+ clients=[{'4036':1 if pattern=='all' or pattern=='mixed' and j%2==0 else 0,'entity_flags':8 if pattern=='excluded' else 0,'468':1 if pattern=='mixed' and j==1 else 2} for j in range(n)]
11
+ yield dict(blocked=1000,now=1000+elapsed,waiting=waiting,wait_start=6000,max_clients=n),clients
12
+ for a in [dict(blocked=2147483647,now=-2147483648),dict(blocked=-2147483648,now=2147483647),dict(blocked=1000,now=6000,waiting=-1,wait_start=2147483647)]:yield a,[{'4036':0}]
13
+
14
+ def main():
15
+ q,raw,h,ins=source();rows=[]
16
+ for a,c in cases():
17
+ m,p=execute(ins,seed(c,**a),7525,7660,28,targets=[6939]);p.update(input=a,clients=c,waiting=m[34999604]&0xffffffff,wait_start=m[34999608]&0xffffffff,ready_count=m[E+20],unready_count=m[E+16],mask=m[E+24]&0xffffffff);rows.append(p)
18
+ write_json(Path('docs/research/qvm-intermission-ready.json'),{'source':q['source'],'sha256':q['sha256'],'probes':rows,'limits':'Actual7525 readiness scan and signed wrapped timestamp-add gates across131 cases. Source computes first16-slot ready mask and counts but no network publication occurs here.6939 next-map child captured. Native runtime unverified.'})
19
+ if __name__=='__main__':main()
scripts/test_qvm_intermission_ready.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json,unittest
2
+ from pathlib import Path
3
+ from test_qvm_exit_complete import signed
4
+
5
+ def policy(a,c):
6
+ eligible=[(j,v) for j,v in enumerate(c[:a.get('max_clients',len(c))]) if v.get('468',2)==2 and not(v.get('entity_flags',0)&8)]
7
+ ready=[j for j,v in eligible if v.get('4036',0)!=0];unready=len(eligible)-len(ready);waiting=a.get('waiting',0);start=a.get('wait_start',0);exit=False
8
+ if signed(a.get('now',0))>=signed(a.get('blocked',0)+5000):
9
+ if unready==0:exit=True
10
+ else:
11
+ if waiting==0:waiting=1;start=a.get('now',0)
12
+ exit=signed(a.get('now',0))>=signed(start+10000)
13
+ return {'waiting':waiting&0xffffffff,'wait_start':start&0xffffffff,'exit':exit,'ready_count':len(ready),'unready_count':unready,'mask':sum(1<<j for j in ready if j<16)}
14
+ class ReadyTests(unittest.TestCase):
15
+ def test_counts_mask_and_timer_effects(self):
16
+ rows=json.loads(Path('docs/research/qvm-intermission-ready.json').read_text())['probes'];self.assertEqual(len(rows),131)
17
+ for p in rows:
18
+ e=policy(p['input'],p['clients'])
19
+ for k in ['waiting','wait_start','ready_count','unready_count','mask']:self.assertEqual(p[k],e[k])
20
+ self.assertEqual(p['requests'],[{'target':6939,'arguments':{},'native_effect_not_executed':True}] if e['exit'] else [])
21
+ def test_only_waiting_globals_change(self):
22
+ for p in json.loads(Path('docs/research/qvm-intermission-ready.json').read_text())['probes']:self.assertTrue(all(w['address'] in [34999604,34999608] for w in p['changes']))
23
+ if __name__=='__main__':unittest.main()
xtask/checks.tsv CHANGED
@@ -2174,3 +2174,8 @@ edge docs/research/rust-exit-predicate.json scripts/test_rust_exit_predicate.py
2174
  group rust-exit-predicate scripts/analyze_rust_exit_predicate.py
2175
  edge scripts/analyze_rust_exit_predicate.py scripts/analyze_qvm_resumer_audit.py
2176
  edge scripts/rust_intermission_support.py scripts/analyze_qvm_resumer_audit.py
 
 
 
 
 
 
2174
  group rust-exit-predicate scripts/analyze_rust_exit_predicate.py
2175
  edge scripts/analyze_rust_exit_predicate.py scripts/analyze_qvm_resumer_audit.py
2176
  edge scripts/rust_intermission_support.py scripts/analyze_qvm_resumer_audit.py
2177
+ report scripts/analyze_qvm_intermission_ready.py docs/research/qvm-intermission-ready.json
2178
+ edge docs/research/qvm-intermission-ready.json scripts/test_qvm_intermission_ready.py
2179
+ group intermission-ready scripts/analyze_qvm_intermission_ready.py
2180
+ edge scripts/analyze_qvm_intermission_ready.py scripts/analyze_qvm_resumer_audit.py
2181
+ edge scripts/analyze_rust_intermission_ready.py scripts/analyze_qvm_resumer_audit.py