# Original formatter execution and exit-rule prefix RE-813–822; baseline `7c1c4082`. Ten tasks receive separate commits after focused `cargo xtask` checks. Full validation runs once after commit ten. Original assets remain unchanged. | Task | Result | Evidence | | --- | --- | --- | | RE-813 | Original string precision/null/trailing-padding helper | [Strings](QVM_FORMAT_STRING.md) | | RE-814 | Original decimal emitter, padding and signed-minimum quirks | [Integers](QVM_FORMAT_INTEGER.md) | | RE-815 | Original37914 dispatch and actual helper composition | [Formatter](QVM_FORMATTER.md) | | RE-816 | Original formatter inside scoreboard packet construction | [Source packets](QVM_SCOREBOARD_FORMATTER.md) | | RE-817 | Rust recovered byte formatter subset | [Rust formatter](RUST_QVM_FORMAT.md) | | RE-818 | Rust scoreboard bytes corrected to original formatter evidence | [Rust packets](RUST_SCOREBOARD_ORIGINAL.md) | | RE-819 | Original bounded/ring wrappers, clipping and diagnostics | [Source wrappers](QVM_FORMAT_WRAPPERS.md) | | RE-820 | Rust bounded/ring wrapper contracts | [Rust wrappers](RUST_FORMAT_WRAPPERS.md) | | RE-821 | Original7805 blocked/pending-clock prefix | [Source exit prefix](QVM_EXIT_PREFIX.md) | | RE-822 | Rust prefix priority and wrapped-clock transition policy | [Rust exit prefix](RUST_EXIT_PREFIX.md) | ## Findings and corrected claims The original formatter is not equivalent to host printf. String width pads on the right. A null string selects the source fallback and ignores supplied precision. Decimal zero padding precedes a negative sign; integer precision is ignored. Pointer conversion dispatches to decimal, and unrecognized conversions consume a word and emit its low byte. Character conversion can embed NUL while still increasing the rendered count. Under the bounded interpreter's 32-bit wrapping-negation/remainder semantics, INT_MIN produces noncanonical decimal bytes. The original integer instructions, central37914 and scoreboard caller all reproduce this behavior. The prior standard-decimal scoreboard model therefore differs on signed-minimum fixtures. That model remains explicitly labeled and hashed for differential review; the current Rust packet parity producer now references actual formatter execution and uses recovered decimal/format semantics. This is source-instruction evidence, not acceptance of the same behavior in every original native/JIT runtime. Too-narrow left-justified integer padding fails the bounded source execution and is rejected by the Rust contract. Float37498, malformed/uninitialized varargs, extreme width/output domains and fatal/error-side-effect behavior remain outside the recovered subset. A larger finite helper budget covers admitted1024-byte scoreboard payloads; it does not imply unrestricted VM execution. The actual70386 wrapper warns when rendered count is at least capacity, clips its return count to capacity-minus-one, and forces a terminal NUL through69338. Embedded NUL means the visible C string can be shorter than the reported count.70458 rotates between two output buffers and wraps its counter. Native-103 copying remains an explicit model,5123 warnings are captured/represented as flags, and native-18 sends remain captured. The7805 prefix prioritizes blocked handling, then checks a nonzero pending transition using signed wrapped elapsed time and1000/5000 thresholds. Only a ready transition clears the pending global. Ordinary state stops before mode-specific rules. Rust returns typed intentions;7525/6825 effects and complete exit rules are not implemented by this prefix contract. ## Validation Focused groups regenerate selected reports twice, run affected tests and check storage, documentation links and whitespace. Rust changes refresh scoped gameplay tests. The xtask registry regression covers both new Rust modules and explicit source-report parity edges. After exactly ten task commits, the single `cargo xtask test-full --since 7c1c4082` run passed **1,608 Python tests and 117 Rust tests** (10 assets,79 gameplay,28 xtask). All34 affected report producers regenerated twice byte-identically. Storage policy,381 documentation files and whitespace guards passed. Regeneration left a clean working tree with no additional report refreshes to review. Final validation notes are checked with documentation-only xtask selection and amended into commit ten without repeating the full suite. ## Next work — RE-823 - Recover float formatter37498 and remaining safe format domains, then compare original native/JIT output, especially signed minimum and padding edge cases. - Recover native-103 copy/error/overlap semantics, diagnostic/fatal effects and actual server-send ABI/messages. Current native copying and sends are still modeled/captured. - Recover remaining7805 mode-specific rules and7525/6825 transition effects. Compose complete exit handling before fresh recipient selection in ranking-to-broadcast runtime flows. - Continue legacy resumer/computed-range/dynamic-return and memory-legality audits; current finite coherent fixtures do not constitute a full VM. - Complete leaderboard/stat/lifecycle ownership, session/protocol integration and the Rust runtime; continue world collision, movement/combat, maps/models/materials/audio and rendering. - Validate native macOS/Linux builds, original-game comparisons and interactive Rust/Bevy/Solari acceptance. The full game remains incomplete.