chore(#170): strip the temp probes, close the issue (user visual gate PASSED)

Gate result: user side-by-side vs retail — "looks good, as close to retail
now as I can see". Telemetry from the gate session (launch-170-gate2.log):
BeginMoveForward ~1:1 with MoveToObject arms for every chasing creature
(pre-fix capture was 16:1), ZERO "SERVERVEL skips UseTime while armed"
occurrences, pending_motions depth 1 at last sample.

Stripped per the #170 close-out plan: s_mvtoDiag + all [mvto] prints
(MoveToManager), s_drainDiag + [drain]/[drainq] (MotionInterpreter), the
[npc-tick] branch prints and the "UM actions" inbound-action dump
(GameWindow). The durable ACDREAM_DUMP_MOTION family stays. The
RemoteChaseEndToEndHarnessTests + RemoteChaseDrainBisectTests conformance
suites stay as the permanent regression net for this pipeline.

ISSUES: #170 -> DONE + Recently-closed entry (fix SHAs 427332ac, d2ccc80e,
1051fc83). Memory topic + index flipped to CLOSED.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-04 22:31:00 +02:00
parent 1051fc83c6
commit 4cad626ff5
4 changed files with 27 additions and 85 deletions

View file

@ -4977,29 +4977,6 @@ public sealed class GameWindow : IDisposable
Speed: item.Speed));
}
ims.Actions = actionList;
// #170 capture aid (ACDREAM_DUMP_MOTION): dump the
// REMOTE inbound action list WITH stamps — the
// existing UM line only shows ForwardCommand, and the
// [CMD_LIST] dump is local-player only. This is what
// answers "do the attack stamps advance (variety) or
// repeat (uniform)?". Strip once #170 is understood.
if (Environment.GetEnvironmentVariable("ACDREAM_DUMP_MOTION") == "1")
{
var sb = new System.Text.StringBuilder();
sb.Append(System.FormattableString.Invariant(
$"UM ↳ actions guid=0x{update.Guid:X8} mt=0x{update.MotionState.MovementType:X2} fwd=0x{ims.ForwardCommand:X8} ["));
for (int ai = 0; ai < actionList.Count; ai++)
{
var a = actionList[ai];
var rt = AcDream.Core.Physics.AnimationCommandRouter.Classify(a.Command);
if (ai > 0) sb.Append(", ");
sb.Append(System.FormattableString.Invariant(
$"0x{a.Command:X8}({rt}) stamp={a.Stamp} auto={a.Autonomous} spd={a.Speed:F2}"));
}
sb.Append(']');
Console.WriteLine(sb.ToString());
}
}
// R2-Q5/R3-W4: funnel dispatches go STRAIGHT into the
@ -9986,9 +9963,6 @@ public sealed class GameWindow : IDisposable
{ MovementTypeState: not AcDream.Core.Physics.MovementType.Invalid };
if (!IsPlayerGuid(serverGuid) && rm.HasServerVelocity && !moveToArmed)
{
if (Environment.GetEnvironmentVariable("ACDREAM_MVTO_DIAG") == "1")
Console.WriteLine(System.FormattableString.Invariant(
$"[npc-tick] guid={serverGuid:X8} branch=SERVERVEL (skips UseTime) mtState={rm.MoveTo?.MovementTypeState}"));
double velocityAge = nowSec - rm.LastServerPosTime;
if (velocityAge > ServerControlledVelocityStaleSeconds)
{
@ -10015,9 +9989,6 @@ public sealed class GameWindow : IDisposable
// per-node locomotion (turn / RunForward) through the
// sink. That per-node dispatch is the only motion the
// per-tick update should issue for a remote.
if (Environment.GetEnvironmentVariable("ACDREAM_MVTO_DIAG") == "1")
Console.WriteLine(System.FormattableString.Invariant(
$"[npc-tick] guid={serverGuid:X8} branch=MOVETO (UseTime runs) mtState={rm.MoveTo?.MovementTypeState}"));
TickRemoteMoveTo(rm);
// #170 ROOT FIX (2026-07-04): the per-frame