docs: the #32 'fix failed' verdict is VOID — the tested binary never contained the fix
Some checks are pending
Headless portability / portable-headless (ubuntu-latest) (push) Waiting to run
Headless portability / portable-headless (windows-latest) (push) Waiting to run
Headless portability / linux-graphical (push) Waiting to run
Headless portability / linux-vulkan (push) Waiting to run

Two checkouts, one relative launch path. Edits and builds ran in the
main repo; every client launch ran from a PowerShell shell whose cwd was
still the session worktree, so 'dotnet run --project src\AcDream.App\...'
executed the worktree's 08-06 22:35 binary — #333 present, #32 fix,
InitContactPlane and every #338 probe absent. Byte-proof both ways: 0
occurrences of the fix strings in the worktree's Core.dll, both present
in the main repo's.

Everything the previous entry concluded is therefore void: the
byte-identical capture was the OLD code re-running (expected), the three
probe silences were one fact (the instrumented binary never ran), and
the 26,358-write attribution table is pre-fix baseline data of the old
binary only. #32's fix returns to UNTESTED, with no evidence against it.

The verification that was supposed to catch this confirmed the wrong
binary: the DLL byte-check ran against the OTHER checkout's bin. So the
self-report now prints typeof(PhysicsDiagnostics).Assembly.Location as
its second line — binary identity becomes a recorded fact inside every
capture instead of an inference from file timestamps afterwards. Memory
updated with the multi-checkout rule: absolute launch paths, verify each
shell's cwd before the first launch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-07 00:27:57 +02:00
parent ee4d328408
commit 9b9bb6515f
2 changed files with 64 additions and 1 deletions

View file

@ -2592,6 +2592,37 @@ public static class PhysicsDiagnostics
private static readonly object _stepHeightGate = new();
private static readonly Dictionary<string, (float Up, float Down)> _stepHeightSeen = new();
private static int _stepHeightAnnounced;
/// <summary>
/// #338 (TEMPORARY). Prints ONCE per process, regardless of the flag, from
/// the resolve site. Two placements of this probe produced no output at
/// all, and silence cannot distinguish "the site is never reached" from
/// "the flag is false" — so the instrument reports its own state rather
/// than leaving that to inference. Reaching this call proves the site
/// executes; the printed values say whether the flag and the player filter
/// would have let anything through.
/// </summary>
public static void AnnounceStepHeightProbeOnce(bool isPlayerMover)
{
if (System.Threading.Interlocked.Exchange(ref _stepHeightAnnounced, 1) != 0)
return;
Console.WriteLine(
$"[step-h] SELF-REPORT: resolve site reached. "
+ $"ProbeStepHeightsEnabled={ProbeStepHeightsEnabled} "
+ $"(ACDREAM_PROBE_STEP_HEIGHTS="
+ $"{Environment.GetEnvironmentVariable("ACDREAM_PROBE_STEP_HEIGHTS") ?? "<unset>"}) "
+ $"firstMoverIsPlayer={isPlayerMover}");
// Which BINARY is this? The 2026-08-07 wrong-checkout incident: two
// checkouts, a relative launch path, and every "test" of a fix ran a
// binary that did not contain it. Assembly identity belongs IN the
// capture, not inferred from bin timestamps afterwards.
Console.WriteLine(
$"[step-h] SELF-REPORT: assembly="
+ $"{typeof(PhysicsDiagnostics).Assembly.Location}");
}
/// <summary>
/// One <c>[step-h]</c> line. Self-guards on
/// <see cref="ProbeStepHeightsEnabled"/>, and is edge-triggered per site: