Download docs/research/QVM_INTERMISSION_BATCH.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 4.96 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_INTERMISSION_BATCH.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/QVM_INTERMISSION_BATCH.md
-
curl -L -o QVM_INTERMISSION_BATCH.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_INTERMISSION_BATCH.md
Exit predicate and intermission composition: RE-834–843
This batch replaces four supplied children of the recovered exit body with original QVM instruction execution and matching Rust policies. It advances the bounded lifecycle model; it does not establish a running game or native runtime parity.
| Task | Original evidence or Rust port |
|---|---|
| RE-834 | 7662 tie predicate and 33715 classifier |
| RE-835 | Rust ranked tie predicate |
| RE-836 | 7525 readiness and timeout |
| RE-837 | Rust readiness policy |
| RE-838 | 6825 begin-intermission state |
| RE-839 | Rust begin state and intentions |
| RE-840 | 7367 exit logging and publication |
| RE-841 | Rust exit log projection |
| RE-842 | Continuous exit body with recovered children |
| RE-843 | Rust composed exit/intermission API |
Findings
The tie predicate uses signed mode classification: modes below 3 and modes 9/11 are not team-classified. It requires at least two playing clients and nonzero enabled state. Team-classified modes compare global scores; mode 9 compares ranked field 308, mode 11 field 696, and other modes field 248. There are 168 source fixtures.
Readiness scans configured slots, excludes disconnected clients and entity flag 8, counts nonzero ready fields and computes a first 16-slot mask. It uses signed comparisons against wrapped timestamp additions: blocked + 5000, then wait_start + 10000. An empty eligible set passes the all-ready test. The mask/counts are local values; this body does not publish them. There are 131 source fixtures.
Begin-intermission uses the raw blocked timestamp as a once-only guard. It stores the current clock, optionally sets ui_singlePlayerActive to 0 and requests additional setup, then visits connected collected clients. Mismatched IDs become field 6156; entity-client field 4324 clears before respawn/move intentions. Publication follows the loop. Zero current time leaves the raw guard zero. There are 39 source fixtures.
Exit logging writes pending=now−50, requests publication and configstring 22 before optional team scores and ranked rows. It caps the rank count at 32, excludes team 3 and non-state 2 records, and applies min(ping,999), preserving negative ping. The original strings identify Exit, red/blue scores, and score/ping/client/name rows. There are 83 source fixtures.
The final 150 source fixtures execute 7805 with actual 7662/33715,7525,6825 and7367, using isolated child frames and shared world memory. Independent tests check priority, exact nested request ABI/order and final world/client mutations. Rust composes these policies with the existing exit timers/limits, stages mutations atomically, and returns typed effect intentions.
Validation and dependency selection
Each task used a focused cargo xtask group before its own commit. Source and Rust reports regenerated twice; relevant Python tests and scoped gameplay Rust tests passed. Registry regression covers the intermission module and all five source-report-to-Rust dependencies. The single full-suite run after commit ten, cargo xtask test-full --since 5f7b2df8, passed: 1,648 Python tests and 137 Rust tests (assets 10, gameplay 99, xtask 28). All 45 affected report producers regenerated twice deterministically. Storage policy, links across 403 documentation files and whitespace checks passed. There was no generated report drift. Validation notes were amended into the tenth commit.
Focused group names: exit-predicate, rust-exit-predicate, intermission-ready, rust-intermission-ready, intermission-begin, rust-intermission-begin, exit-log, rust-exit-log, intermission-flow, rust-intermission-flow. Use cargo xtask test-group <name>.
Remaining boundaries and RE-844
- Recover 6939 next-map selection and command effects; readiness currently returns an exit intention.
- Recover 6717/156523/175123/6575 preparation, respawn and camera effects.
- Execute 6328 publication and lower-level logging/configstring/network work with verified formatting and state ownership.
- Recover 277695 event construction and allocation, including constructor flag ownership.
- Add pointer-alias and entity-client indirection fixtures. Current finite layouts seed entity-to-client pointers and readiness entity identities explicitly; typed Rust inputs require resolved entity flags and safe ranks/counts.
- Integrate ranking→exit/intermission→scoreboard publication into the runtime and compare actual game/native traces.
- Continue legacy trace audits and validate macOS/Linux Bevy/Solari gameplay and rendering. Neither platform runtime acceptance nor full-game completion is established by these policies.