Skip to content

issues: record the landed #1457 review and two #146 flake data points - #1481

Merged
BigSimmo merged 17 commits into
mainfrom
claude/global-search-mockups-mrgmzl
Jul 30, 2026
Merged

issues: record the landed #1457 review and two #146 flake data points#1481
BigSimmo merged 17 commits into
mainfrom
claude/global-search-mockups-mrgmzl

Conversation

@BigSimmo

@BigSimmoBigSimmo commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Summary

  • Appends two data points to #146 (ui-phone-scroll Services result anchor jumps on viewport shrink under CI load) rather than opening a duplicate. The test failed once more on mockup: adaptive refine bar for the global search results header #1457 head c739340 (anchorTop expected -138, received -7, 120 passed) and then passed on heads 9da02d9 and a6f2281 across all three shards with the spec byte-identical. That takes the row to six data points, two failures, shard 1 only — and both failures landed on a PR touching nothing but src/app/mockups/** plus one mockup test, which strengthens the row's existing unchanged-code reading. Also records that the 131px delta is roughly 2× the 64px viewport shrink rather than sub-pixel drift, which is a constraint for the element attribution #146 already asks for.
  • Records the prlanded verification for mockup: adaptive refine bar for the global search results header #1457 in docs/branch-review-ledger.md via npm run ledger:append: squash e79e499, content diff against the branch tip empty, and the late aria-live commit confirmed present on main rather than orphaned by the squash race.

Two ledger files, no new IDs allocated. No source, test, config or workflow file is touched.

What this PR no longer contains

It originally filed a new row claiming search-results-header-band.tsx announces a failed clinical search to nobody, because its count span sets aria-live={faulted ? "off" : "polite"}.

That claim was false and has been dropped entirely. The band does announce the failure — it mounts a fault panel with role="alert" carrying the title, body and Retry (search-results-header-band.tsx:407-414), the mute is deliberate and documented in place ("the freshly-mounted fault role="alert" below makes the single announcement, rather than both speaking"), and tests/search-results-header-band.dom.test.tsx already pins it with singular role queries that throw on duplicates. The proposed fix would have added a second alert — a duplicate announcement and a red test.

Credit to the Codex review on this PR for catching it. It is dropped rather than filed-and-withdrawn because the row never reached main: there is no false claim in the durable record to correct, so a withdrawal entry would be noise. The reasoning is preserved in the resolved review thread on this PR. Removing it also retires the ID allocation, so issues:next-id is untouched at 149 and this PR can no longer collide with concurrent sessions over IDs — which was the cause of every conflict it hit.

Verification

  • npm run verify:cheap — exit 0. 439 test files, 4602 passed, 4 skipped, including check:outstanding-issues ("146 rows (67 open, 79 archived), unique ids, next-id=149 above the highest, no merge driver") and check:branch-review-ledger.
  • npm run ledger:dedupe after each main merge, per the repo's ledger policy — "No exact duplicate records (193 unique dated rows)".

npm run verify:pr-local not run: this diff is two markdown ledgers, so the build, client-bundle scan and RAG fixture stages it adds over verify:cheap have no reachable surface here. UI verification not applicable — no component, route or style changed.

RAG impact: no retrieval behaviour change — documentation only, touching nothing under src/lib/rag/**, clinical-search, retrieval-selection, ranking-config, answer-ranking, the eval harness or the golden fixture.

Risk and rollout

  • Risk: None. Both files are append-oriented records with no runtime effect, and this PR now recommends no production change.
  • Rollback: Revert the merge commit.
  • Provider or production effects: None.

Notes

  • Every conflict on this branch was resolved by rebuilding docs/outstanding-issues.md from origin/main and re-applying only this branch's edit — never taking one side wholesale — so no concurrent session's rows were dropped. npm run check:outstanding-issues passes on the result.
  • The merged mockup: adaptive refine bar for the global search results header #1457 mockup needs no change. search-refine-adaptive-mockups.tsx has no fault panel, so there the count span is the only announcement channel and its role="alert" escalation is correct; it simply does not port to production.

…1457 review
Adds #147 — `search-results-header-band.tsx` sets aria-live="off" when faulted,
so a clinical search that fails while focus is elsewhere is announced to nobody
and the user is never told Retry appeared. Affects all twelve call sites that
render the band. Raised by Codex against the copied line on PR #1457, fixed
there, and confirmed to exist unchanged in production. The merged mockup carries
the proven pattern and a non-vacuous assertion to port.
Appends two further data points to #146 from PR #1457: the Services viewport
anchor failed once more on head c739340 (expected -138, received -7) and then
passed on two later heads with the diff byte-identical — six data points, two
failures, shard 1 only. Both failures landed on a PR touching only mockups,
which strengthens the unchanged-code reading. Notes that the 131px delta is
roughly 2x the 64px shrink rather than sub-pixel drift.
Records the prlanded verification for PR #1457 in the branch review ledger:
squash e79e499, content diff against the branch tip empty, and the late
aria-live/role="alert" commit confirmed present on main rather than orphaned by
the squash.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JdPa3mHCX5ZQZZvU5GHU3r
@supabase

supabaseBot commented Jul 30, 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 Jul 30, 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 recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in:51 minutes

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

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5ae83a63-4260-4c91-a363-2145d0bc7b29

📥 Commits

Reviewing files that changed from the base of the PR and between 447b104 and 9eb2e74.

📒 Files selected for processing (2)
  • docs/branch-review-ledger.md
  • docs/outstanding-issues.md

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

@BigSimmo
BigSimmo marked this pull request as ready for review July 30, 2026 17:23

@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:d95da393f8

ℹ️ 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 threaddocs/outstanding-issues.md Outdated
… was worse
Codex caught this on PR #1481 and it is correct. I filed #149 claiming a failed
clinical search is announced to nobody because the count span sets
aria-live="off" when faulted. I never checked whether another node makes the
announcement. It does.
search-results-header-band.tsx mounts a fault panel with role="alert" carrying
the failure title, body and Retry (lines 407-414), and the mute is deliberate,
documented in place: "While faulted the live region is silenced
(aria-live='off') and the freshly-mounted fault role='alert' below makes the
single announcement, rather than both speaking."
tests/search-results-header-band.dom.test.tsx already pins exactly that with
singular role queries that throw on duplicates.
Escalating the count span in production, as #149 recommended, would have added a
second alert beside the fault panel — a duplicate announcement and a broken
test. The row is withdrawn to the archive rather than deleted, with the reasoning
recorded so nobody re-files it.
The mockup is unaffected: search-refine-adaptive-mockups.tsx has no fault panel,
so there the count span is the only announcement channel and its escalation is
correct. It simply does not port to production.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JdPa3mHCX5ZQZZvU5GHU3r
@BigSimmoBigSimmo changed the title issues: capture the production live-region defect; record the landed #1457 reviewissues: withdraw a false live-region finding; record the landed #1457 reviewJul 30, 2026
…mockups-mrgmzl
# Conflicts:
#	docs/outstanding-issues.md
@BigSimmoBigSimmo changed the title issues: withdraw a false live-region finding; record the landed #1457 reviewissues: record the landed #1457 review and two #146 flake data pointsJul 30, 2026
@BigSimmoBigSimmo added the skip-branch-sync Opt out of hosted pr-branch-sync / update-branch on this PR label Jul 30, 2026
BigSimmoand others added 6 commits July 31, 2026 01:48
…ecord
The two Services viewport-anchor data points from PR #1457 were dropped when the
withdrawn #149 row and its id allocation were restored. They are unrelated to
that decision, so this puts them back and changes nothing else.
#149 stays exactly as set: archived as a withdrawn record, with issues:next-id
preserved at 150 so the id is retired rather than reused.
Restored to #146: the test failed once more on head c739340 (anchorTop expected
-138, received -7) then passed on 9da02d9 and a6f2281 across all three shards
with the spec byte-identical — six data points, two failures, shard 1 only, both
failures on a mockups-only PR. Notes that the 131px delta is roughly 2x the 64px
viewport shrink rather than sub-pixel drift, which constrains the element
attribution that row already asks for.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JdPa3mHCX5ZQZZvU5GHU3r
@BigSimmo
BigSimmo merged commit 1b1e63d into mainJul 30, 2026
24 checks passed
@BigSimmo
BigSimmo deleted the claude/global-search-mockups-mrgmzl branch July 30, 2026 18:30
BigSimmo pushed a commit that referenced this pull request Jul 30, 2026
Second time a real conflict has blocked this PR's CI entirely — GitHub could
not build refs/pull/1466/merge, so no pull_request workflow ran and the thin
check list read as pending rather than blocked (#116).
Only docs/outstanding-issues.md conflicted; scripts/ci-change-scope.mjs and
docs/process-hardening.md auto-merged (main's regions are 150+ lines from this
branch's). Took main's ledger wholesale rather than hand-editing a 140-row
table around conflict markers.
Only ONE of this branch's two ledger edits was re-applied:
- #146 keeps its relocation note. The row is still open, and main's #1481 added
two further data points to it (head c739340, anchorTop expected -138 received
-7; six data points, two failures, shard 1 only) which are left untouched.
- #127's edit is DROPPED as obsolete. Main's #1487 archived that row, and the
archived form no longer cites tests/ui-phone-scroll.spec.ts at all, so there
is nothing left to relocate. Re-applying it would have matched nothing or
corrupted a differently-shaped row.
Marker is main's 149 (not this branch's 147): #149 was allocated, withdrawn and
retired rather than reused.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JHLPEV4o1rzipPDqshCSHY
BigSimmo added a commit that referenced this pull request Jul 31, 2026
* issues: capture the unreadable-CI token, at-risk worktree work, and the unpushed hook fix
Three findings from the 2026-07-30 organisation session that were recorded
nowhere durable:
- #149 the session GitHub PAT lacks Checks: Read, so no agent can confirm a PR
is green. The endpoint that does work returns an empty result rather than an
error, so it reads like an absence of checks rather than an absence of
permission.
- #150 four worktrees on already-merged branches hold uncommitted work that
exists in no branch and no PR, the largest being +395/-200 across 19 files
including CI config.
- #151 the pre-commit fail-open for #143 lives only on a never-pushed local
branch, which is also 17 behind main and conflicts on the file whose count
sentence main's new docs:update generator now owns.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs(ledger): record the session-followup capture review for PR #1490
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs(ledger): record #143/#151/#149 reconciliation for PR #1490
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs(ledger): supersede PR #1490 reconciliation after remote sync
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* issues: record the worktree snapshots and redirect #151 to PR #1494#150 — the four at-risk worktrees were snapshotted onto their own already-merged
branches (748ef018f, 5dbd9f965, b7eae51a4, d949859c3), so the work survives a
worktree reclaim. All four are clean now. None is pushed or reviewed; the next
action is per-snapshot promote-or-reset.
#151 — the never-pushed branch is superseded rather than salvageable: its script
and hook reached main by other routes, so the fail-open guard was applied to
main's committed hook in PR #1494 instead.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs: remove credential metadata and correct audit dates
* docs: consolidate session follow-up findings
* docs: record consolidated follow-up review
* issues: record that #101 hydration shipped
PR #1463 merged as dba7356, so #86's "Next X3 unit — rag-hydration.ts" is
now stale. The row records the extraction as shipped and keeps the corrected
boundary: hydration re-homed only two of prepareCoverageGateResults's five
rag.ts-only dependencies, so it did not unblock that function — exactly as the
Codex review on PR #1461 predicted.
This row was deliberately dropped from #1463 itself (commit 6290d02) after
docs/outstanding-issues.md conflicted on five consecutive main syncs. Recording
it separately here is the same pattern used for #1454 via #1461.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGEBHp4Seoh1jK1vGTNtYS
* docs(ledger): record the landed X3 hydration review
Appended with npm run ledger:append (never hand-written), keyed to the squash
commit dba7356 so ledger:lookup can resolve it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGEBHp4Seoh1jK1vGTNtYS
* docs: fix the #101 mislabel and key the ledger row to a resolvable ref
Both defects were raised by Codex on PR #1495 and both are real; verified
against the files before accepting.
1. #101 is NOT this extraction. docs/outstanding-issues.md:138 shows #101 is
"Canary-gated retrieval parallelisation candidates" (P3, rec) — a separate,
still-open recommendation gated on a live canary pair. Calling the hydration
extraction "#101" marked that unrelated work as shipped and could have caused
the live-evaluation work to be skipped. The label came from the original task
brief and was propagated without checking it against the ledger. Both the
#86 row and the X3 work-order entry now identify the change as the X3
hydration unit (PR #1463) instead. #101's own row is untouched and still open.
2. The ledger row did not resolve. `npm run ledger:lookup --
dba7356` returned NOT REVIEWED, because the
ref cell held only the slash-form branch token and that branch no longer
resolves locally, so the throttling record could not prevent a repeat review.
Appended a superseding record keyed to the landed SHA; the same lookup now
returns ALREADY REVIEWED. The original row is retained, per the ledger's
append-only rule.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GGEBHp4Seoh1jK1vGTNtYS
* docs: record consolidated PR reviews
* docs: record ingestion recovery review
* docs(visual): document the platform-scoped baseline layout and how to seed it
`playwright.visual.config.ts` records snapshots under
`__screenshots__/{platform}/`, so a baseline taken on Windows lands in `win32/`
and is never consulted by the `ubuntu-24.04` CI job, which reads `linux/`.
Nothing said so, and committing `win32/` images looks like protection while
providing none.
Records the constraint, names the CI artifact as the supported recorder for
`linux/` baselines, and notes that comparison stays advisory until the jobs come
off `continue-on-error`. Also creates the tracked directory `.gitignore` already
claims exists, which sets `ui_changed=true` (`scripts/ci-change-scope.mjs`) so
the visual job can run and produce that first artifact.
No baselines are added here — they cannot be produced on this platform.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs: correct visual baseline adoption steps
* docs: record visual baseline guidance review
* fix(ui): repair mockup accent token references
* docs: record token-reference repair review
* docs: archive advisory UI scoping task
* docs: record advisory UI closure review
* issues: archive #151 after #1494 and mark #143 fully resolved
PR #1494 landed the fail-open guard on main, so close the open salvage
row and update the #143 archive from PARTIAL to resolved across #1442
and #1494. Also carries the merge of origin/main that cleared the
GitHub DIRTY mergeability state.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs(ledger): record PR #1490 main-sync and #151 closeout
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs(ledger): record #1496 id-collision renumber for PR #1490
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* issues: record the withdrawn live-region finding as #151 so it is not re-filed
Archive-only row. There is no defect and no work to do — the row exists purely
as a guard rail against repeating a misreading that already happened once.
search-results-header-band.tsx sets aria-live={faulted ? "off" : "polite"} on
its count/status span, which reads like a silenced failure announcement. It is
not: the band mounts a separate fault panel with role="alert" carrying the
failure title, body and Retry, and the mute is deliberate so the two do not both
speak. The reasoning is in a comment directly above the attribute, and
tests/search-results-header-band.dom.test.tsx pins it with singular role queries
that throw on duplicates.
During session 2026-07-30 (PR #1481) this was filed as a real P2 defect on the
strength of the attribute alone, and the proposed fix — escalating the count span
to role="alert"/aria-live="assertive" — would have produced a duplicate
announcement and a red test, making it worse than no change. Codex caught it.
An earlier withdrawal row was then lost to the squash that merged #1481, which
is the row-deletion shape #148 now guards against.
Also records that the mockup's escalation is correct in the mockup and must not
be ported: search-refine-adaptive-mockups.tsx has no fault panel, so there the
count span is the only announcement channel.
#148 needed no work — the merge-base deletion check landed on main
independently, and its output now reports the base it compared against.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JdPa3mHCX5ZQZZvU5GHU3r
* docs(rag): record refuted lexical probe collapse (#98)
* issues: capture the residual id-allocation hazard as #151#133 is resolved: #1444 removed merge=union and #1479 excluded the ledger from
Prettier, which together fixed conflict frequency. Neither changes id
allocation, which is still read-modify-write against the next-id marker, so
concurrent branches still claim the same number.
Measured on PR #1451: one row was renumbered #135 -> #141 -> #145 -> #147 ->
#149 across four sync cycles. The sharper finding is that GitHub's Update-branch
button resolved one such collision into duplicate #141 rows with the marker left
below main's highest id — git reported success and only
check:outstanding-issues caught it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs(issues): attribute the mobile CLS breach — a 128px reserve round trip
#147 asked which elements shift. Driving Chromium against the same
offline production build with a PerformanceObserver on layout-shift
(Lighthouse mobile emulation, reading entry.sources[].node) gives one
dominant cause on all four breaching routes: the entire main content
region moves down 128px and straight back up 128px within 15-60ms. Both
moves score, so it is pure cost with zero net movement — 100% of
/documents/search's 0.220 and about 75% of /dsm's.
The shifting element is the max-sm:pt-[var(--phone-overlay-chrome-h)]
wrapper around <main>. A MutationObserver timeline on the root style
attribute pins the mechanism rather than inferring it: the property goes
CSS seed -> 200px -> 72px, and the 200px is written when the header
stack ALREADY measures 72px (t=1552ms reserve=200px stack=72, corrected
at t=1612ms). usePhoneOverlayChromeReserve reads stack.offsetHeight
while the stack is transiently tall, publishes a value that is stale by
the time it lands, and its ResizeObserver then corrects it.
The CSS seed at globals.css:375 is correct for the settled stack, which
corrects the mechanism recorded on the now-archived #130 — that framed
the defect as the seed under-reserving by 0-8px. Measured, the driver is
a 128px transient over-reserve written by the hook, not the seed. / is
the control: it never writes the property and is the one clean route.
Variance is stated rather than smoothed: /dsm measured 0.363 and 0.219
across two runs, and this harness has no network throttling so /forms
and /therapy-compass run high locally. Only /dsm, /documents/search and
/ reproduced the live dispatch exactly.
Also recorded: attaching a MutationObserver to document.documentElement
inside a Playwright addInitScript throws before the document element
exists, silently killing the CLS observer and reporting a uniform
CLS=0.000 — a false clean bill that voided one run of this harness.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01361jh3eYVjJCzXWjAhdZiF
* docs(ledger): record the #151 capture review for PR #1506
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* docs(review): clarify snapshot branch state
* docs(ledger): record PR #1490 main sync after snapshot wording
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs: archive rendered style contract task
* docs: record style contract closure review
* docs: record synced style contract review
* docs: record post-121 style closure review
* docs: normalize style review ledger after sync
* docs: record post-1490 style closure review
* docs: record consolidated PR 1490 review
* docs: record replacement consolidation review
* docs: record reconciled consolidation review
* docs: record post-1511 consolidation review
* docs: normalize PR 1510 ledger after main sync
* docs: record PR 1510 post-sync review
* docs: correct false #98 canary evidence and NOTES triage
Remove the incorrect probe-collapse canary attribution from #98 and
point the unread --med-accent-soft note at #157 without breaking the
seven-token TOKENS_MISSING accounting.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs(ledger): record PR #1510 evidence-correction review
Supersede the prior approve-with-no-findings row after correcting the
false #98 canary attribution and NOTES triage drift.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs: keep concurrency note inside issue table
* docs: record post-1513 consolidation review
* docs: address CodeRabbit notes on PR #1510
Fix the computed-value-time wording in design-sync notes, give #33 a
unique recommended-queue order, and drop the duplicated #98 Done block.
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* docs(ledger): record PR #1510 CodeRabbit fix review
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-branch-syncOpt out of hosted pr-branch-sync / update-branch on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@BigSimmo@claude