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
RE-759 Complete divisor and normalized ratio publication with actual totals Ratios
RE-760 Complete same-team pair counters and participant gates Team counters
RE-761 Complete recent-record awards with timestamp/count/index64 aliases Awards
RE-762 Single recipient numeric body, gates and cached ping Single payload
RE-763 Pair recipient numeric body, gates and cache aliases Pair payload
RE-764 Ranking reset/client scan through the sorting boundary Ranking setup
RE-765 Rust totals, divisor and ratio primitives Rust totals
RE-766 Rust recent-record awards and log ID intents Rust awards
RE-767 Rust recipient gates, numeric fields and cache effects Rust payload

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.