urt-rs / docs /research /QVM_REPORTING_RUST_BATCH.md
nmarshall's picture
gameplay: port recipient numeric payloads
799143f
|
Raw History Blame Contribute Delete
5.19 kB
# Totals, reporting and ranking setup batch
RE-758–767 continues from `27a7f96f` with ten independently committed tasks. The objective remains complete Rust/Bevy/Solari gameplay on macOS and Linux. This batch advances bounded QVM contracts and three Rust simulation primitives; it does not establish original executable parity or a playable runtime.
| Task | Scope | Evidence |
| --- | --- | --- |
| RE-758 | Complete statistic total functions and20-slot field inclusion | [Totals](QVM_STAT_TOTALS.md) |
| RE-759 | Complete divisor and normalized ratio publication with actual totals | [Ratios](QVM_STAT_RATIOS.md) |
| RE-760 | Complete same-team pair counters and participant gates | [Team counters](QVM_TEAM_COUNTERS.md) |
| RE-761 | Complete recent-record awards with timestamp/count/index64 aliases | [Awards](QVM_RECENT_AWARDS.md) |
| RE-762 | Single recipient numeric body, gates and cached ping | [Single payload](QVM_RECIPIENT_SINGLE.md) |
| RE-763 | Pair recipient numeric body, gates and cache aliases | [Pair payload](QVM_RECIPIENT_PAIR.md) |
| RE-764 | Ranking reset/client scan through the sorting boundary | [Ranking setup](QVM_RANKING_SETUP.md) |
| RE-765 | Rust totals, divisor and ratio primitives | [Rust totals](RUST_STAT_TOTALS.md) |
| RE-766 | Rust recent-record awards and log ID intents | [Rust awards](RUST_RECENT_AWARDS.md) |
| RE-767 | Rust recipient gates, numeric fields and cache effects | [Rust payload](RUST_RECIPIENT_PAYLOAD.md) |
The totals read20 slot counters although method classification currently maps19 slots. First legacy totals exclude indices13/17; second totals exclude17. Addition wraps. The divisor scans down from the signed maximum: mixed signs can still reduce, but a zero input or nonpositive signed maximum returns1. Rust uses Euclid with the same guards. Ratio publication preserves source float32 conversion/division order and zero-denominator behavior.
Recent-record awards accept index64 and preserve the alias between pair64 count and the3032 award word. Eligibility uses count at least40 and wrapped signed age at most30000, with no added nonnegative-age condition. Only64 recipient slots are scanned. Logs remain returned/captured intents rather than executed formatting.
Recipient numeric bodies cap ping above999, retain negative ping, optionally reuse follow-cache data and apply the entity-bit publication override after cache handling. Status precedence, wrapped elapsed minutes, signed packed fields and class bounds0..20 are independently checked. Pair aliases are processed in source order. Initial unaligned literal-copy setup is excluded from the source body boundaries; strlen lengths are supplied and copy/format/send effects remain captured. These are numeric payload/cache contracts, not serialized-text or networking parity.
Ranking5864 setup resets and counts clients, stores a scan-order enrolled list and the first two active slots, and stops before sorting35095/comparator5441. Sort ordering, tie handling, rank assignment and publication remain open. The first two active slots include entity-bit8 clients; human team counts exclude them.
## Validation cadence
Focused `cargo xtask test-group` checks precede each task commit. Selected reports regenerate twice, followed by affected tests, storage/link checks and whitespace guards. Single-recipient regression also checks compatibility of the shared pair helper. Rust gameplay groups run scoped package tests and ten parity reports. After commit ten, the single `cargo xtask test-full --since 27a7f96f` run passed1473 Python tests and80 Rust tests (10 assets,42 gameplay,28 xtask). Seventeen affected report producers regenerated twice byte-identically; storage, documentation links across326 files and whitespace guards passed. Generated outputs matched committed reports and the working tree was clean. This documentation-only result is recorded by amending the tenth commit.
## Remaining limits and next tasks
1. Recover sorting35095/comparator5441 and the remaining5864 ranking assignment/publication branches.
2. Execute the recipient literal/copy/strlen/formatting boundaries with original text, and verify exact serialized command payloads.
3. Recover283622 statistic leaderboard selection and its284555/284610 dependencies.
4. Compose actual279720/279586/285227 and recipient numeric bodies into the existing complete stat/lifecycle callers while retaining unresolved boundaries.
5. Compose actual protected completion from full health mutation, including null attacker and original low-page reads.
6. Extend actual health/contact/shared293732 and successful295018 pellet aggregation through all recovered lifecycle state.
7. Establish owned Rust counters, events, record lifetimes, recipient identities, inventory resets and obituary serialization in a runtime.
8. Continue original native executable/DLL/library parity and loader ownership.
9. Connect assets, simulation and world collision to macOS/Linux Bevy runtime validation.
10. Port rendering/materials to Solari and verify interactive full-game acceptance on both platforms.
RE-757 remains partially advanced. Native, Linux, rendering and full gameplay acceptance remain open.