Repository navigation
fix(sim): leave game time unscaled under Set Slow Motion - #139
Conversation
Three runs agree: Set Slow Motion leaves Total Time Elapsed, Wait and the Inspector clock unscaled. The hypothesis of a scaled tick is a mismatch.
P8 (three agreeing client runs) shows the slow-motion rate scales the whole simulation, the Inspector clock included. Total Time Elapsed stays 16 ms per tick and Wait rounds to whole ticks at 50% and 90% as at 100%. Drop the clock scaling and the not_modeled gates on Wait and Wait Until under a non-100 factor. Set Slow Motion still records a matchClock change.
Add the P8 fixture over the three captures and a wake test under a non-100 factor. Limit the measured claim to the clocks a rule can read; the wall-clock ratio and the cause stay unmeasured.
P8 reads only Total Time Elapsed and Wait with Ignore Condition. Say so, keep the other timers as modeled not measured, and state the cause of the unchanged readings as unmeasured. Add a test for the Wait Until timeout under a non-100 factor and fix a stale timeline comment.
Wait Until timeouts and the other wait behaviors stay modeled under a non-100 Set Slow Motion factor. The owner approved this exception to the NotModeled rule.
|
Verdict: CHANGES REQUESTED Verified against the P8 capture (the independent authority). Tests and clippy are clean; the two findings below are about the exception record and the factor scope.
Checked, no finding:
Verification run in a clean worktree at 6388a66:
|
The clock, Wait and Wait Until ran as unscaled 16 ms ticks under any Set Slow Motion factor. P8 measured only 100, 50 and 90. Any other factor now ends the run not_modeled at the next tick or at a Wait or Wait Until, so no resume path runs on a stale schedule. The measured set lives in one constant in clock.rs. Remove the owner-approved exception wording from the docs and state the measured scope. Add tests for each wait and resume arm.
|
Addressed in efe302c. Re-review requested.
Checks: |
|
Verdict: LGTM Head reviewed: efe302c. All three round-1 findings are fixed; one non-blocking test gap below. Round 1 closure:
Resume arms without a gate (the implementer's argument holds):
Mutation checks (worktree, restored with
Non-blocking finding (test gap): the Other judgments:
Commands in a clean worktree at efe302c: |
Keep the P8 fixture test beside the now-enabled P7 fixture test. Assert the unmeasured Wait and Wait Until stop in the setting tick.
|
Updated to 23c3cbe. Re-review requested.
|
|
Verdict: LGTM Head reviewed: 23c3cbe (merge of origin/main b1275ea, #140, into the branch). No findings. Merge check:
Mutation (worktree, restored with Commands at 23c3cbe: |
Summary
Total Time Elapsedstill advanced 16 ms per tick andWait(.., Ignore Condition)rounded up to whole 16 ms ticks, as at 100%. The scaled-tick hypothesis is amismatch. The cause of the unchanged readings is not measured, and neither is the wall-clock ratio.athena-simto match what P8 measured: at factors 100, 50 and 90 the clock,WaitandWait Untilrun on unscaled 16 ms ticks. Any other factor ends the runnot_modeledat the next tick,WaitorWait Until, including a wait that suspended before the factor changed. The measured set is one constant inclock.rs.Set Slow Motionstill records amatchClockchange.architecture.md,findings.mdandtrace-format.md. There is no exception to theNotModeledrule.Verification
cargo test,cargo clippy --all-targets -- -D warnings,cargo fmt --checkpass.Wait(0.1)takes 112 ms) at 50 and 90, and that factors 10 and 200 stopnot_modeledon theWaitandWait Untilarms and on the ongoing, event and subroutine resume paths.wrightpins athenav0.13.0; it picks this up with the next athena release.