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

@ -2286,34 +2286,9 @@ public sealed class MotionInterpreter : IMotionDoneSink
/// <param name="contextId">Retail <c>arg2</c> — <c>MotionNode.context_id</c>.</param>
/// <param name="motion">Retail <c>arg3</c> — <c>MotionNode.motion</c>.</param>
/// <param name="jumpErrorCode">Retail <c>arg4</c> — <c>MotionNode.jump_error_code</c>.</param>
// #170 temp drain diag (ACDREAM_MVTO_DIAG): aggregate add_to_queue vs
// MotionDone counts + this interp's pending depth — the apples-to-apples of
// the retail cdb drain trace (retail: add==done). Strip after #170.
private static readonly bool s_drainDiag =
System.Environment.GetEnvironmentVariable("ACDREAM_MVTO_DIAG") == "1";
private static int s_addCount;
private static int s_doneCount;
public void AddToQueue(uint contextId, uint motion, uint jumpErrorCode)
{
_pendingMotions.AddLast(new MotionNode(contextId, motion, jumpErrorCode));
if (s_drainDiag)
{
s_addCount++;
// Dump this interp's queue CONTENTS whenever a backlog is present
// (depth >= 2 = something isn't draining) so we can see WHICH motion
// lingers and keeps MotionsPending() true (blocking the chase turn).
if (_pendingMotions.Count >= 2)
{
var sb = new System.Text.StringBuilder();
foreach (var n in _pendingMotions) { sb.Append("0x"); sb.Append(n.Motion.ToString("X8")); sb.Append(' '); }
System.Console.WriteLine(System.FormattableString.Invariant(
$"[drainq] depth={_pendingMotions.Count} lag={s_addCount - s_doneCount} q=[{sb}]"));
}
else if (s_addCount % 50 == 0)
System.Console.WriteLine(System.FormattableString.Invariant(
$"[drain] add={s_addCount} done={s_doneCount} lag={s_addCount - s_doneCount} depth={_pendingMotions.Count}"));
}
}
/// <summary>
@ -2363,7 +2338,6 @@ public sealed class MotionInterpreter : IMotionDoneSink
if (head1 is not null)
{
_pendingMotions.RemoveFirst();
if (s_drainDiag) s_doneCount++;
}
}