diff --git a/docs/ISSUES.md b/docs/ISSUES.md index b1d0239a..57b1b3ec 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -24,6 +24,56 @@ What does NOT go here: - Every session: scan OPEN issues at start; promote/close anything we touched during the session before ending. - Promoting to a Phase: mark as `DONE (promoted to Phase X)` + commit SHA where the Phase entry landed. +## #429 — Periodic hitch in the LOCAL player's own motion while running (~2-3 s cadence) + +**Status:** OPEN +**Severity:** MEDIUM (noticeable during ordinary play) +**Filed:** 2026-08-23 (owner report during the night-sky session) +**Component:** movement / prediction / server reconciliation + +**Symptom:** every ~2-3 seconds while RUNNING forward, the player's own +motion visibly hitches ("small lag, like spike"). Not present when walking +or strafing. Birds and every other world object stay perfectly smooth +through the hitch — so it is NOT a frame-time spike; it is the local +player's position stepping. + +**Evidence gathered at filing:** +- 45 s `dotnet-counters` capture while reproducing (Atmospheric pack ON): + Gen0 GC every ~6.3 s (cadence mismatch), gen1/gen2 zero, %time-in-GC ~0 + — GC exonerated for the 2-3 s cadence. (Separate finding: the pack path + allocates a steady ~8 MB/s ≈ 130 KB/frame where the base client runs + near zero — worth its own cleanup issue.) +- Pack GPU-timer readback is non-blocking by design (VulkanGpuTimerPool + tolerates NotReady) — not a stall source. +- The owner initially observed "pack off → gone"; after the walk/strafe/ + world-smooth discriminators this is more plausibly a VISIBILITY effect + (lower FPS with the pack makes a 2 s position snap read as a lag spike). + +**Leading hypothesis:** client-predicted run speed vs ACE-authoritative +speed mismatch at high runRate (the test character applies server stats +run=15230 — deep in the ==800-sentinel family, see #266: retail's ==800 vs +ACE's >=800 misread), accumulating drift that the AutoPos/correction loop +snaps back on its cadence. Walking (speed 1.0 both sides) and strafing +accumulate little or no drift — matching the report exactly. + +**Next probes (in order):** +1. `ACDREAM_DUMP_MOTION=1` + a temporary inbound-position log for the + LOCAL guid: does ACE send position sets for the local player every + ~2-3 s while running, and does acdream apply them? (Retail ignores + routine UpdatePosition for the autonomous local player; only + ForcePosition snaps — verify our projection split here.) +2. Compare `PlayerWeenie.InqRunRate(15230)` against ACE's computed + runRate for the same skill — a formula delta is the root cause if the + correction traffic confirms. +3. If no corrections arrive: instrument the local movement controller's + own periodic state (autorun latch, tracker send side-effects). + +**START at** `claude-memory/project_physics_collision_digest.md` (per-cell +DO-NOT-RETRY rules) and `claude-memory/project_retail_motion_outbound.md` +(TS-33 AutoPos tracker semantics) before instrumenting. + +--- + ## #428 — Sky lightning slot fired 3 CreateParticle hooks with no live pose after a TimeSync day-group flip **Status:** OPEN