P1-5 fix: 390px containment — consensus rows stack, pitcher line wraps

Phone audit: CONSENSUS VS MODEL bled off the right edge ('2 BO…', 'MO…') and
STARTING-pitcher lines truncated ('2.64 E…'). The M4 lock only hid the DOCUMENT
scroll (html/body overflow-x) — content still clipped inside cards. Now contained:
- .breadth-row stacks (flex-direction:column) at <430px, each field on its own
  line with overflow-wrap:anywhere — no bleed.
- the game-card starting-pitcher inner spans wrap + shrink (flexWrap + minWidth:0)
  so name/ERA/archetype flow onto a second line instead of clipping.
- STRENGTHENED the lock: vyndrParityQA now asserts the CONTAINMENT patterns
  (breadth-row stacks, pitcher spans wrap), not just document overflow.

MLB stat pills: the game-lines grid already scrolls-within-card (<640 M1); if
the audit still shows pill clipping elsewhere, it's a follow-up targeted pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kev
2026-07-17 01:19:48 -04:00
parent ff53f31bfc
commit 8b35fd06ec
4 changed files with 34 additions and 4 deletions
+16
View File
@@ -265,3 +265,19 @@ describe('P0-4 — mobile app bar is one line (ticker + heartbeat hidden)', () =
expect(css).toMatch(/\.slate-sticky-head\s*\{\s*top:\s*60px/);
});
});
// ── P1-5 lock — 390px containment (strengthened: content, not just doc scroll) ─
describe('P1-5 — dense rows CONTAIN at 390px (not just html overflow-x:hidden)', () => {
const css = read('app/globals.css');
it('consensus rows stack at <430px so they never bleed off the right edge', () => {
expect(css).toMatch(/@media\s*\(max-width:\s*430px\)\s*\{[^]*?\.breadth-row\s*\{[^}]*flex-direction:\s*column/);
expect(css).toMatch(/\.breadth-row\s*>\s*span\s*\{[^}]*overflow-wrap:\s*anywhere/);
expect(read('components/vyndr/MarketBreadth.tsx')).toMatch(/breadth-row/);
});
it('the starting-pitcher line wraps its name/ERA inside the card (no truncation)', () => {
const gc = read('components/vyndr/GameCard.tsx');
// the inner pitcher spans allow wrap + shrink so "2.64 ERA" never gets cut
expect(gc).toMatch(/g\.pitchers\.away\.era/);
expect((gc.match(/flexWrap: 'wrap', minWidth: 0/g) || []).length).toBeGreaterThanOrEqual(2);
});
});