feat(render) Campaign FW1: pin the camera basis; outdoor adjudication state

The moving-fixture sweep pinned the pose decode (quat storage w,x,y,z;
facing = rotated +X; the consistent triple right=-rot(Y), fwd=rot(X),
up=rot(Z) - mean 20.8 deg vs motion, alternatives >=52). With it the
street-outdoor BLD roster and order match retail EXACTLY except one
ring-1 boundary pair (aab50002 extra / a9b3003c missing). Look-in
punches fire at the wrong buildings under BOTH GfxObj plane-winding
conventions (retail punched only 001a and 0022 into the a9b4016x
cells) - the next adjudication targets the PortalRef.PortalIndex join
and the BuildingPortal side-flag decode via a per-building dump. The
driving diff test carries the state in its Skip note; the flip toggle
stays for the next arm.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-30 10:40:22 +02:00
parent e3f0c6a1a1
commit faba9be635
3 changed files with 25 additions and 6 deletions

View file

@ -32,9 +32,14 @@ public sealed class WalkTraceConformanceTests
return new DatCollection(datDir!, DatAccessType.Read);
}
[Fact(Skip = "FW1 adjudication in progress: the walk over-culls six traced "
+ "buildings (incl. block a9b3) and the look-in floods differ — see the "
+ "campaign memory. Re-enable as the outdoor gate once adjudicated.")]
[Fact(Skip = "FW1 outdoor adjudication (2026-08-30 state): with the pinned "
+ "camera basis the BLD roster+order match retail EXACTLY except one "
+ "ring-1 boundary pair (aab50002 extra / a9b3003c missing). The "
+ "look-in punches fire at the wrong buildings under BOTH GfxObj "
+ "plane-winding conventions (retail: only 001a and 0022, cells "
+ "a9b4016x) — adjudicate the PortalRef.PortalIndex join and the "
+ "BuildingPortal side-flag decode with a per-building dump next. "
+ "Re-enable as the outdoor gate when adjudicated.")]
public void Street_outdoor_first_frame_diff()
{
// The first landscape-involving conformance case: diff-first (the