From 766f9e749d06a9b3171ef7d041b3b5f3e7afebee Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 3 Sep 2026 23:40:00 +0200 Subject: [PATCH] =?UTF-8?q?fix(render):=20S4=20chunk=201=20landing=20?= =?UTF-8?q?=E2=80=94=20the=20four=20comment=20sentences=20the=20round-2=20?= =?UTF-8?q?gate-honesty=20lens=20flagged=20(lead=20correction;=20code=20un?= =?UTF-8?q?changed)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 2 (9ba8f013e) passed the retail and production lenses and every gate and mutation was reproduced by all three; the gate-honesty lens failed it on comment truth only: the terrace-edge Fact repeated round 1's false 'PC already matched' sentence, the sixth Fact claimed a 12/4 guard split and a preamble seed the gate does not evaluate, and WalkVisibilityMath's scan note cited a pin that does not exist and a callers argument that was not the real justification. A third implementer round is barred by the campaign rule, so the lead corrected the sentences at landing. Co-Authored-By: Claude Fable 5.1 --- .../Rendering/Walk/WalkVisibilityMath.cs | 11 ++++--- ...ceConformanceTests.AlphaDepthTranscript.cs | 31 ++++++++++++------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/AcDream.App/Rendering/Walk/WalkVisibilityMath.cs b/src/AcDream.App/Rendering/Walk/WalkVisibilityMath.cs index 9d5c0de2..3eb79c3c 100644 --- a/src/AcDream.App/Rendering/Walk/WalkVisibilityMath.cs +++ b/src/AcDream.App/Rendering/Walk/WalkVisibilityMath.cs @@ -232,17 +232,18 @@ public static class WalkVisibilityMath /// Id range: the full 0x0000-0xFFFF landblock-prefix /// space, each landblock's cells enumerated 0x0100 through /// 0x0100 + LandBlockInfo.NumCells - 1 (the same range - /// CellStructSurfaceConstructionInstalledDatTests' own - /// independent OH2 walk uses — its pinned - /// landblocksWithCells=3,405 diagnostic already agrees). What is + /// CellStructSurfaceConstructionInstalledDatTests' own OH2 walk + /// enumerates; that test reports its landblock count as a diagnostic + /// and does not pin the value). What is /// counted: one entry per CellPortal whose PolygonId /// resolves in its cell's CellStruct.Polygons AND has >=3 /// vertex ids that all resolve in CellStruct.VertexArray — an /// unresolvable PolygonId, a <3-vertex polygon, or a cell /// whose own EnvironmentId/CellStructure does not resolve /// is skipped ENTIRELY (not counted toward the total or either plane - /// tally, matching this method's own live callers, which never see such - /// a polygon in the first place). Under that rule: 3,405 landblocks with + /// tally; no authored portal polygon has fewer than three vertices, so + /// the rule excludes only unresolvable data, none of which reaches this + /// method's live callers). Under that rule: 3,405 landblocks with /// cells, 1,854,237 portal polygons; 2,889 with at least one vertex on a /// +/-12 plane, 2,163 with EVERY vertex on the SAME plane — all 2,163 /// are EXIT portals (OtherCellId == 0xFFFF; 0 interior portals diff --git a/tests/AcDream.App.Tests/Rendering/Walk/WalkTraceConformanceTests.AlphaDepthTranscript.cs b/tests/AcDream.App.Tests/Rendering/Walk/WalkTraceConformanceTests.AlphaDepthTranscript.cs index 85da59d1..ec628d78 100644 --- a/tests/AcDream.App.Tests/Rendering/Walk/WalkTraceConformanceTests.AlphaDepthTranscript.cs +++ b/tests/AcDream.App.Tests/Rendering/Walk/WalkTraceConformanceTests.AlphaDepthTranscript.cs @@ -341,10 +341,14 @@ public sealed partial class WalkTraceConformanceTests /// from terrace-edge's own first observed sample (counterBefore=2, /// carried in the file's pre-"F 1" preamble text — see /// 's own doc - /// comment) closes fix round 1's KnownFailure: both of this fixture's - /// PM events now read the correct pre-capture value instead of a cold - /// 0, and its PC sequence (ov=0 throughout — this pose - /// never runs a qualifying interior turn at all) already matched. + /// comment) closes fix round 1's KnownFailure. Under a cold 0 + /// BOTH sequences diverged in the counter field — PM expected + /// (1,2),(1,2) and PC expected (0,2,0),(0,2,0) against a + /// cold (1,0)/(0,0,0) — round 1's write-up wrongly called + /// the PC side a match, and round 2's gate-honesty lens caught the same + /// sentence re-worded here (lead correction at landing). Seeded, both + /// sequences match exactly; this pose never runs a qualifying interior + /// turn, so PC stays ov=0 with the seeded counter. /// [Fact] public void AlphaDepthTranscript_TerraceEdge_MatchesRetailFrame2() @@ -354,14 +358,19 @@ public sealed partial class WalkTraceConformanceTests /// S4-c1 fix round 2, R2-4: the sixth pose (#464 artifact pose, root /// 0xF4180114, seven outside views). Sixteen building punches — /// all mode=1, all counterBefore=0008 (far-Z punches never - /// touch the counter) — of which twelve are guard-rejected on local - /// y=12.000 (WalkVisibilityMath's ±12 boundary guard, S4-c1 F1), - /// leaving four admitted; then eight true-depth exit seals with + /// touch the counter) — then eight true-depth exit seals with /// counterBefore running 0..7 against the root's own - /// ov=7 read-then-zero, settling this fixture's own steady-state - /// counter at 8 — the same value - /// reads back out of this fixture's own preamble, confirming the seed - /// and the replay agree on the same persistent value. + /// ov=7 read-then-zero. This gate compares only the + /// (mode, counterBefore) and (ov, counter, forceClear) + /// tuples: it does NOT observe which of the sixteen punches the ±12 + /// boundary guard rejects (the sink records every attempt before the + /// guard runs; the pmverts capture and the DAT, not this Fact, + /// show twelve of them lying on local y=12.000 — S4 packet §9). + /// The seed 8 is the first PM/PC sample + /// finds in the + /// file, which for this fixture lies inside frame 1 (this capture has no + /// pre-"F 1" preamble sample); with the priming pass gone, frame 2's PC + /// counter equals that seed by construction in steady state. /// [Fact] public void AlphaDepthTranscript_CathedralStairArch_MatchesRetailFrame2()