docs: file #429 — periodic local-player run hitch; GC/pack exonerated, prediction-vs-ACE speed snap is the lead

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-23 19:02:17 +02:00
parent 133be4d1a8
commit eb4544a031

View file

@ -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