test(render) Campaign FW1: moving-tail state + falsified hypotheses recorded

The moving driver gains adjacent-pose tolerance (the marker-lag capture
artifact) and stays parked: the four moving fixtures diverge at
punch-edge frames under BOTH adjacent poses. FALSIFIED this round and
reverted: the raw-decode + flipped-gates convention (it broke three
still fixtures - the inverted-decode convention stands, six still
fixtures frame-exact). Remaining instruments in the Skip note: znear,
per-view punch ordering inside DrawMesh, exit-view precision.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-30 11:12:22 +02:00
parent 66f9e0d459
commit 17ee543cb1

View file

@ -124,12 +124,13 @@ public sealed class WalkTraceConformanceTests
$"walk diverged from retail ({fixture})\nEXPECTED: {expected}\nACTUAL: {actual}"); $"walk diverged from retail ({fixture})\nEXPECTED: {expected}\nACTUAL: {actual}");
} }
[Theory(Skip = "FW1 moving-fixture tail (2026-08-30): the six STILL fixtures are " [Theory(Skip = "FW1 moving tail (2026-08-30 v2): six still fixtures frame-exact; "
+ "fully conformant; the moving four diverge only at punch-edge frames " + "the moving four diverge at punch-edge frames under BOTH adjacent poses "
+ "(walkout/transitions F2: retail punches 001e where the replay does " + "(walkout/transitions F2 - retail punches 001e from deeper in the "
+ "not; walkabout diverges at F9, foundry-entry at F67) - pose-timing/" + "cottage; walkabout F9; foundry-entry F67). FALSIFIED: pose-lag "
+ "threshold sensitivity to adjudicate next (the exact pose-application " + "pairing, gate polarity swaps (raw+flipped-gates broke 3 still "
+ "point within the frame).")] + "fixtures - reverted). Next: znear (CY d guess 0.1), per-view punch "
+ "ordering inside DrawMesh, and exit-view precision at edge angles.")]
[InlineData("posed/holtburg-walkout")] [InlineData("posed/holtburg-walkout")]
[InlineData("posed/holtburg-transitions")] [InlineData("posed/holtburg-transitions")]
[InlineData("posed/holtburg-walkabout")] [InlineData("posed/holtburg-walkabout")]
@ -152,29 +153,42 @@ public sealed class WalkTraceConformanceTests
for (int n = 1; n < frames.Count - 1; n++) for (int n = 1; n < frames.Count - 1; n++)
{ {
WalkOracleFrame frame = frames[n]; WalkOracleFrame frame = frames[n];
WalkOraclePose pose = frames[n + 1].Pose!;
Assert.NotNull(pose);
WalkLandscapeDatBuilder.SetViewer(world.Landscape, pose.CellId, pose.Origin);
var ctx = new WalkTraceReplayContext(pose, world.Cells)
{
Buildings = world.Buildings,
};
WalkCell? camera = null;
if ((pose.CellId & 0xFFFFu) >= 0x100)
{
Assert.True(
world.Cells.TryGetValue(pose.CellId, out camera),
$"frame {frame.Number}: interior camera cell {pose.CellId:x8} not loaded");
}
var recorder = new Recorder();
walk.WalkFrame(pose.CellId, camera, world.Landscape, ctx, recorder);
string expected = WalkTraceReplayContext.Signature(frame); string expected = WalkTraceReplayContext.Signature(frame);
string actual = WalkTraceReplayContext.Signature(recorder.Events); // The marker dumps the PREVIOUS frame's camera, so frame N's
// true camera state lies between pose(N) and pose(N+1) — a
// capture artifact, not a port ambiguity. A frame passes when
// the replay matches under either adjacent pose.
string? firstActual = null;
bool matched = false;
foreach (WalkOraclePose pose in new[] { frames[n + 1].Pose!, frame.Pose! })
{
Assert.NotNull(pose);
WalkLandscapeDatBuilder.SetViewer(world.Landscape, pose.CellId, pose.Origin);
var ctx = new WalkTraceReplayContext(pose, world.Cells)
{
Buildings = world.Buildings,
};
WalkCell? camera = null;
if ((pose.CellId & 0xFFFFu) >= 0x100)
{
Assert.True(
world.Cells.TryGetValue(pose.CellId, out camera),
$"frame {frame.Number}: interior camera cell {pose.CellId:x8} not loaded");
}
var recorder = new Recorder();
walk.WalkFrame(pose.CellId, camera, world.Landscape, ctx, recorder);
string actual = WalkTraceReplayContext.Signature(recorder.Events);
firstActual ??= actual;
if (actual == expected)
{
matched = true;
break;
}
}
Assert.True( Assert.True(
expected == actual, matched,
$"frame {frame.Number} diverged ({fixture})\nEXPECTED: {expected}\nACTUAL: {actual}"); $"frame {frame.Number} diverged under both adjacent poses ({fixture})\n"
+ $"EXPECTED: {expected}\nACTUAL: {firstActual}");
} }
} }