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()