Tighten real-web expectation to Chromium parity + interactivity (isu issue 271) master
The Phase 23 real-web soak previously asserted each scenario against a frozen capture of we's own historical render — that's a regression guard, not a correctness bar. Tighten the documented expectation so the golden is a Chromium-captured reference at the same viewport, and so each scenario must exercise at least one user-driven interaction (not just first paint). This commit ships the policy + tooling; the actual per-scenario migration is filed as isu issues 273-279 and lands one merge per follow-up. - PLAN.md Phase 23: new "Golden screenshot policy" and "Interactivity policy" paragraphs; matching exit-criteria lines. - crates/e2e/real-web/README.md: new directory-layout entry for `<domain>.<viewport>.chromium.expected.png`, new "Golden screenshot policy" and "Interactivity policy" sections, refreshed soak iteration workflow, refreshed exit-criteria checklist. - crates/e2e/scenarios/real-web/.gitignore: keep `*.chromium.png` / `*.firefox.png` throwaway captures gitignored; commit the canonical `*.chromium.expected.png` golden. - tests/popular-sites/compare.py: new `--write-golden` flag that writes the canonical golden (`<scenario>.<viewport>.chromium.expected.png`) rather than the throwaway reference. Only `--browser chromium` is accepted with it (Chromium is the parity bar). - tests/popular-sites/test_compare.py: cover the new naming. - tests/popular-sites/README.md: document `--write-golden`. The legacy `<domain>.<viewport>.expected.png` files are left in place for now; they will be deleted in each per-scenario migration commit (isu issues 274-278). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>