|
Download docs/research/QVM_RUST_RANKING_PUBLICATION_BATCH.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 5.62 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_RUST_RANKING_PUBLICATION_BATCH.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/QVM_RUST_RANKING_PUBLICATION_BATCH.md
-
curl -L -o QVM_RUST_RANKING_PUBLICATION_BATCH.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_RUST_RANKING_PUBLICATION_BATCH.md
5.62 kB
| # Ranking caller composition, Rust sorting and scoreboard dispatch | |
| RE-791–800; baseline `c6b4a1eb`. Ten task commits, focused `cargo xtask` validation before each, one full-suite run after commit ten. Original assets remain unchanged. | |
| | Task | Result | Evidence | | |
| | --- | --- | --- | | |
| | RE-791 | Explicit child word-to-byte synchronization in corrected resumers | [Child memory](QVM_CHILD_WORD_MEMORY.md) | | |
| | RE-792 | Complete5864 with actual sort through64 eligible clients | [Large caller](QVM_RANKING_LARGE_CALLER.md) | | |
| | RE-793 | Mixed population counters and positional rank-prefix behavior | [Population](QVM_RANKING_POPULATION.md) | | |
| | RE-794 | Rust source-shaped aligned sort, including exact unstable ties | [Rust sort](RUST_RANK_SORT.md) | | |
| | RE-795 | Rust complete eligible ranking composition | [Rust caller](RUST_RANKING_COMPLETE.md) | | |
| | RE-796 | Rust collection and all eight source count globals | [Rust population](RUST_RANKING_POPULATION.md) | | |
| | RE-797 | Rust mixed population sorting and rank-word composition | [Rust mixed caller](RUST_RANKING_MIXED.md) | | |
| | RE-798 | Actual team counters and ratio refreshes inside method updates | [Stat composition](QVM_STAT_COMPOSITION.md) | | |
| | RE-799 | Actual6328 broadcast and full ranking caller gate | [Broadcast](QVM_SCOREBOARD_BROADCAST.md) | | |
| | RE-800 | Rust recipient policy and bounded publication plan | [Rust scoreboard](RUST_SCOREBOARD.md) | | |
| ## Findings | |
| The source sort's equal-key swaps are observable. Rust follows its insertion, pivot, median/ninther, partition, recursive and tail-loop paths, matching exact source permutations rather than substituting a stable host sort. The raw comparator is still not an Ord contract: connecting/deferred prefilters can be asymmetric. The mixed-population implementation executes the source-shaped algorithm without using Rust's sorting APIs. | |
| The source collects nonzero connection states, counts connected non-spectators separately from playing state2 records, and excludes bot-flagged records only from human/team-human totals. First-playing identifiers can name bots. Ordinary rank assignment writes a positional prefix of the sorted collected array; deferred fixtures demonstrate that this prefix can differ from the active-client set. Team modes assign every collected slot, including spectators/connecting clients. Inactive and other untouched rank words preserve caller state. | |
| Broadcast6328 filters only connection state2, so connected spectators receive requests even when playing count is zero. Full caller fixtures execute this dispatch after a captured7805 exit-rule call. Rust's publication plan has the same capture assumption: it does not implement7805 effects or179363 scoreboard formatting/sends. A runtime must apply exit-rule effects before reselecting recipients. | |
| Explicit child-word synchronization makes changed/new aligned words visible to subsequent byte loads while preserving unchanged parent byte overlays. It rejects unsupported/deleted words and requires corrected reentry. It does not unify every STORE1/LOAD4/child byte effect into a complete shared VM memory model. The asymmetric64-record source sort fixtures also require more than512 bounded segments; only that sort opts into4096, below the shared configurable cap8192. This allowance does not establish native runtime cost. | |
| ## Validation and selection | |
| Each focused group regenerates its selected reports twice, runs affected tests and checks storage, documentation links and whitespace. Scoped gameplay tests accompany Rust changes. Explicit source-report edges cover the formatted paths used by the new parity producers; the xtask registry regression checks every mapping as well as module-to-parity and scoped-test-metadata selection. | |
| After exactly ten task commits, the single `cargo xtask test-full --since c6b4a1eb` run passed **1,562 Python tests and 102 Rust tests** (10 assets, 64 gameplay, 28 xtask). All 226 affected report producers regenerated twice byte-identically. Storage policy, links across 359 documentation files and whitespace guards passed. Regeneration left the working tree clean, with no additional report refreshes to review. Final validation notes are checked with documentation-only xtask selection and included by amending the tenth commit; the full suite is not repeated. Native executable, Linux/macOS gameplay and interactive Bevy/Solari acceptance remain open. | |
| ## Next work — RE-801 | |
| - Continue auditing the remaining156 default/literal legacy resumer expressions and three unresolved mode expressions.22 computed ranges still require manual review; inventory categories overlap and are not counts of proven bugs. | |
| - Implement an explicit child byte-write interface and unify supported byte/word reads and writes before claiming a complete shared VM model. Retain fail-closed handling for unsupported overlap, deletion or callback boundaries. | |
| - Recover7805 exit-rule effects and179363 scoreboard body, formatting limits, native send ABI and actual serialized messages. Validate state changes between ranking and broadcast. | |
| - Extend stat-update compositions through awards285227 and leaderboard283622; bound divisor costs and integrate the resulting state with runtime entity/client ownership. | |
| - Recover byte/unaligned sort variants and validate native ABI/error domains. Expand original/native trace comparison beyond the finite synthetic QVM fixtures. | |
| - Connect the pure Rust contracts to the game runtime; continue world collision, movement, combat, protocol, maps/models/materials/audio and rendering. Validate native macOS/Linux builds and interactive Bevy/Solari acceptance. | |