diff --git a/docs/superpowers/plans/2026-05-31-phase-u4c-stabilize-portal-visibility.md b/docs/superpowers/plans/2026-05-31-phase-u4c-stabilize-portal-visibility.md index ad6cad7..dadf40b 100644 --- a/docs/superpowers/plans/2026-05-31-phase-u4c-stabilize-portal-visibility.md +++ b/docs/superpowers/plans/2026-05-31-phase-u4c-stabilize-portal-visibility.md @@ -219,7 +219,19 @@ Co-Authored-By: Claude Opus 4.8 (1M context) " --- -## Task 3: Layer 2 — ground set membership in the PVS (the fix; oracle-ported, gated by Task 1) +## Task 3: Layer 2 — port retail InitCell `portal_side` sidedness (the fix; oracle-ported) + +> **EVIDENCE UPDATE (2026-05-31, Task U.4c-1 ran):** the flap was characterized on real dat data — +> see [`docs/research/2026-05-31-u4c-flap-characterization.md`](../../research/2026-05-31-u4c-flap-characterization.md). +> The flap is a **direct `0xA9B40171→0xA9B40170` portal** side-test flip (the window cell is a +> direct neighbour, NOT multi-hop), and the evidence **selected H2 over H1**: our +> `CameraOnInteriorSide` derives the sidedness *sense* from the cell centroid, anti-correlated with +> the dat's authored per-portal `PortalSide` flag that retail's `InitCell` uses. The fix is to port +> the side test to use the dat `PortalSide` (in `portal.Flags`), not centroid-`InsideSide`. The +> stab_list PVS grounding (Layer 1 data, already plumbed in Task 2) stays as a correct improvement +> but is NOT the flap mechanism. The Task-1 synthetic test models the mechanism via a multi-hop +> `InsideSide` cull and must be re-authored to model the direct-portal `PortalSide`-vs-centroid +> divergence so it is a clean gate for the actual fix. This is the AC-algorithm port. **Read the oracle first, write pseudocode, then port** — do not invent the algorithm.