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:
parent
66f9e0d459
commit
17ee543cb1
1 changed files with 41 additions and 27 deletions
|
|
@ -124,12 +124,13 @@ public sealed class WalkTraceConformanceTests
|
|||
$"walk diverged from retail ({fixture})\nEXPECTED: {expected}\nACTUAL: {actual}");
|
||||
}
|
||||
|
||||
[Theory(Skip = "FW1 moving-fixture tail (2026-08-30): the six STILL fixtures are "
|
||||
+ "fully conformant; the moving four diverge only at punch-edge frames "
|
||||
+ "(walkout/transitions F2: retail punches 001e where the replay does "
|
||||
+ "not; walkabout diverges at F9, foundry-entry at F67) - pose-timing/"
|
||||
+ "threshold sensitivity to adjudicate next (the exact pose-application "
|
||||
+ "point within the frame).")]
|
||||
[Theory(Skip = "FW1 moving tail (2026-08-30 v2): six still fixtures frame-exact; "
|
||||
+ "the moving four diverge at punch-edge frames under BOTH adjacent poses "
|
||||
+ "(walkout/transitions F2 - retail punches 001e from deeper in the "
|
||||
+ "cottage; walkabout F9; foundry-entry F67). FALSIFIED: pose-lag "
|
||||
+ "pairing, gate polarity swaps (raw+flipped-gates broke 3 still "
|
||||
+ "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-transitions")]
|
||||
[InlineData("posed/holtburg-walkabout")]
|
||||
|
|
@ -152,29 +153,42 @@ public sealed class WalkTraceConformanceTests
|
|||
for (int n = 1; n < frames.Count - 1; 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 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(
|
||||
expected == actual,
|
||||
$"frame {frame.Number} diverged ({fixture})\nEXPECTED: {expected}\nACTUAL: {actual}");
|
||||
matched,
|
||||
$"frame {frame.Number} diverged under both adjacent poses ({fixture})\n"
|
||||
+ $"EXPECTED: {expected}\nACTUAL: {firstActual}");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue