feat(components): mine layout deviations from visual repetition - #408
feat(components): mine layout deviations from visual repetition#408wibus-wee wants to merge 2 commits into
Conversation
The authored contracts only find what a reviewer already wrote down, and they name their members by DOM shape — row family, role, accessible name. That hides the defects worth finding: a layout bug comes from two code paths rendering one visual thing differently, so it correlates with the structural difference, and a structural key files the two paths into different groups and never compares them. So group by what renders alike and mine the expected edge from what the run's best-supported level actually does. Nobody writes down that the indent step is 26px; it is counted. Bias is recall — candidates are ranked, never filtered — so a legitimate indent ladder comes back too and sorts below the stray, whose level has no company. Not wired to the capture run or the gate: a recall-first pass that blocks CI has one natural remedy, raising its thresholds, which destroys the recall it exists for. Model: claude-opus-5[1m] Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Model: gpt-5
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 545e26de06
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const axis = seriesAxis(group); | ||
| for (const run of splitIntoSeries(group, axis, seriesBreakRatio, minimumSeriesLength)) { |
There was a problem hiding this comment.
Infer orientation after isolating each visual series
When one signature occurs in multiple side-by-side vertical lists, seriesAxis(group) measures the entire page-wide group before those lists are separated; if their horizontal separation exceeds their vertical span, it classifies them as one horizontal series. splitIntoSeries then orders by X (often producing zero gaps for same-column atoms), emits false Y/pitch deviations for an otherwise regular grid, and never checks either list's X alignment. Partition local series before selecting an orientation for each one.
AGENTS.md reference: packages/components/src/lib/geometry-discovery/AGENTS.md:L46-L48
Useful? React with 👍 / 👎.
Summary
Testing
Stack