Skip to content

docs(issues): record the intermittent mobile-root CLS that failed Lighthouse budget - #2232

Merged
BigSimmo merged 2 commits into
mainfrom
claude/repo-cleanup-audit-42o63t
Aug 21, 2026
Merged

docs(issues): record the intermittent mobile-root CLS that failed Lighthouse budget#2232
BigSimmo merged 2 commits into
mainfrom
claude/repo-cleanup-audit-42o63t

Conversation

@BigSimmo

Copy link
Copy Markdown
Owner

Summary

One inbox record, orphaned by the #2204 merge. It was committed while the Lighthouse budget re-run was still in flight and deliberately held back so pushing would not cancel that run. The re-run answered the question and #2204 merged in the same window, so the record never reached main. Re-applied here on the merged base.

Why it is worth keeping. The same Lighthouse job ran three times on identical code, across two heads of #2204 whose only difference was deleting one JSON file under docs/outstanding-issues-inbox/ — no source, asset, route or style change:

headresult
c8b7bcddPASS
09ff450cFAILmobile-root cls +0.207 vs baseline (max +0.02)
09ff450c (re-run, same commit)PASS

0.223 measured against a 0.016 baseline. Every other cell was comfortably inside tolerance on the failing run: mobile-root LCP 2261 vs 2253 and TBT 312 vs 296, mobile-documents-search LCP 2274 vs 2272, desktop-root LCP 815 vs 822.

That last detail matters. An earlier version of this record accused mobile-documents-search LCP and TBT, inferred from a local run the grader had explicitly refused to score for browser drift (Chromium 141 against a baseline captured on 151). CI showed those cells were fine, so that record was withdrawn during #2204. This one replaces it with the measurement CI actually produced.

Two problems, recorded as one row because they share a cause:

  • A required check inside pr-required flips pass/fail on a diff that cannot influence it, so it can block any PR at random. The grader already re-confirms an out-of-budget cell twice and takes the majority, so the instability is wider than a single spike.
  • 0.223 is a 10× overshoot of the budget, not a marginal wobble. Something on the mobile home route sometimes shifts layout badly during load — a font swap, an unreserved image, or late-hydrating chrome are the obvious candidates, and the phone composer reserve is a known-sensitive area per docs/search-chrome-behaviour.md. A phone user would feel it.

The record says explicitly not to widen the CLS tolerance or re-baseline to absorb 0.223, since that would encode a user-visible shift as acceptable, and points at the retained artifact (9447841108) whose per-run reports name the shifting elements. It also captures the triage caution that main never exercises this job at all (path-scoped to perf changes), so a green main run is not evidence either way.

Verification

  • npm run check:ledger-write-disciplinepassed for 5db9d1817675..HEAD
  • npm run check:outstanding-issues411 rows (61 open, 350 archived) … no ids deleted from base 5db9d1817675

Single added JSON file under docs/outstanding-issues-inbox/. No source, test, config, schema or asset change, so no behavioural gate applies. Run npm run issues:reconcile from a dedicated ledger branch after this lands.

Risk and rollout

  • Risk: none. One additive inbox record; the canonical ledger is untouched.
  • Rollback:git revert of the single commit.
  • Provider or production effects: none.
  • RAG impact: none — no RAG surface is touched.

Generated by Claude Code

…hthouse budget
Orphaned by the #2204 merge: this record was committed while the Lighthouse
re-run was still in flight and deliberately held back so the push would not
cancel it. The re-run answered the question and the PR merged in the same
window, so the record never reached main. Re-applied here on the merged base.
The same Lighthouse job ran three times on identical code across two heads of
#2204 whose only difference was deleting one JSON file under
docs/outstanding-issues-inbox/ -- no source, asset, route or style change:
head c8b7bcd PASS
head 09ff450 FAIL mobile-root cls +0.207 vs baseline (max +0.02)
head 09ff450 PASS (re-run of the same commit)
0.223 against a 0.016 baseline. Every other cell was comfortably inside
tolerance on the failing run, including the mobile-documents-search LCP and TBT
cells an earlier, withdrawn record had wrongly accused from an ungradeable
local measurement.
Two problems in one row because they share a cause. A required check inside
pr-required flips pass/fail on a diff that cannot influence it, so it can block
any PR at random -- and the grader already re-confirms an out-of-budget cell
twice and takes the majority, so the instability is wider than one spike. And
0.223 is a 10x overshoot of the budget, not a wobble: something on the mobile
home route sometimes shifts layout badly during load. A phone user would feel
it when it happens.
The record says explicitly not to widen the tolerance or re-baseline to absorb
0.223, and points at the retained artifact (9447841108) whose per-run reports
name the shifting elements.
Verification: check:ledger-write-discipline and check:outstanding-issues pass
against the merged base.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SKbNfTZM1vzUTRsuAS4Mxv
@supabase

supabaseBot commented Aug 21, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@coderabbitai

coderabbitaiBot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

Next review available in:7 minutes

Limit details: You’ve used the included review currently available. Your 87 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

How can I continue?

Wait for the limit to reset, then comment @coderabbitai review or push new commits to the PR.

An organization admin can change what happens after included review limits in Billing.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: afccba65-63e6-4228-86a6-ba1a1c877b7b

📥 Commits

Reviewing files that changed from the base of the PR and between f2cd088 and 6971771.

📒 Files selected for processing (1)
  • docs/outstanding-issues-inbox/30225672-82e8-4eac-9fb1-79f2448fdb8c.json

Comment @coderabbitai help to get the list of available commands.

@BigSimmo
BigSimmo marked this pull request as ready for review August 21, 2026 13:36
@BigSimmo
BigSimmo merged commit cb9445e into mainAug 21, 2026
24 checks passed
@BigSimmo
BigSimmo deleted the claude/repo-cleanup-audit-42o63t branch August 21, 2026 13:37

@chatgpt-codex-connectorchatgpt-codex-connectorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit:6971771d4e

ℹ️ 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".

Comment on lines +9 to +10
"summary": "Lighthouse budget mobile-root CLS is intermittent: 0.223 vs 0.016 baseline on one run, ~0.000 on the next, same code",
"detail": "MEASURED ON CI, NOT INFERRED. PR #2204 ran the same Lighthouse budget job on two consecutive heads whose only difference was deleting one JSON file under docs/outstanding-issues-inbox/ -- no source, asset, route or style change, nothing that can affect layout. Head c8b7bcdd PASSED. Head 09ff450c FAILED with exactly one metric out of tolerance: 'mobile-root cls +0.207 vs baseline (max +0.02)', measuring 0.223 against a 0.016 baseline (job 96780922258, run 32485431566). Every other cell was comfortably inside tolerance on the failing run: mobile-root LCP 2261 vs 2253, TBT 312 vs 296; mobile-documents-search LCP 2274 vs 2272, TBT 394 vs 348; desktop-documents-search LCP 804 vs 866; desktop-root LCP 815 vs 822. TWO SEPARATE PROBLEMS. (1) GATE RELIABILITY: a required check in pr-required flips pass/fail on a diff that cannot influence it, so it can block any PR at random. Note the grader already re-confirms an out-of-budget cell twice and takes the majority, so this survived that mechanism -- the instability is wider than a single spike. (2) PROBABLE REAL DEFECT ON THE MOBILE HOME ROUTE: 0.223 is not a marginal overshoot of a 0.02 tolerance, it is a large layout shift that sometimes occurs during load on '/' at mobile viewport and sometimes does not. Likely candidates are a webfont swap, an image or media element without reserved dimensions, or late-hydrating chrome (the phone composer/header reserve is a known-sensitive area per docs/search-chrome-behaviour.md). A user on a phone would feel this when it happens. Worth reproducing directly rather than only through the budget gate. DO NOT respond by widening the CLS tolerance or refreshing the baseline to absorb 0.223 -- that would encode an intermittent user-visible shift as acceptable. Diagnose which element shifts first. The Lighthouse artifact for the failing run is retained (artifact 9447841108) and contains the per-run reports, which identify the shifting elements. RELATED CAUTION FOR TRIAGE: main's CI runs do not exercise this job (path-scoped, perf scope only), so a green main run is not evidence the gate passes there -- the ci-triage bot correctly classified it 'not baselined'.",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Cancel the duplicate CLS ledger request

When the inbox is reconciled, this add is applied alongside the pre-existing docs/outstanding-issues-inbox/5f472de7-797f-49ba-8ba5-b5b6d4a7ad7a.json, which already tracks the same bistable mobile-root CLS values (0.016/0.223), CI-only reproduction, random Lighthouse failures, artifact investigation, and prohibition on widening the budget. Because the requests have distinct ULIDs and add/add conflicts are not deduplicated, applyRequestBatch accepts both and creates two canonical issues, splitting status and risking duplicate remediation. Cancel this request or merge its additional evidence into the earlier one; a two-request reconciliation simulation is the smallest check that exposes the duplicate rows.

AGENTS.md reference: AGENTS.md:L1060-L1066

Useful? React with 👍 / 👎.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@BigSimmo@claude