issues: capture the PR #1316 follow-ups that outlived the merge - #1365
Conversation
Three items that would otherwise be lost now that #1316 has landed: #96 records the seven Codex follow-up PRs whose fixes are real but were never executed anywhere, along with the specific overlaps that make them unsafe to apply individually — two touch the results-band status derivation that the merged a7fadf5 also changed, one edits a shared test fixture four tests depend on, and one could not run Prettier while editing the very file whose formatting broke CI twice. #97 records the Gitleaks push race. It resolved itself when the head stopped moving, but the failure mode is worth keeping: the scan reported failure having scanned zero bytes, which reads as noise rather than as a security gate that did not run. #93 gains main's mitigation in 3a8edb9 and the evidence that the duplicate root predates PR #1316 — at 631d90d the spec already documented two header#search nodes. The helper is hardened; the underlying duplicate is not. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Akwz3Sdms8uJ5AkDt3CduY
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Important Review skippedReview was skipped as selected files did not have any reviewable changes. 💤 Files selected but had no reviewable changes (1)
⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:65bf018c75
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
The row cited seven abbreviated SHAs as the thing to consolidate. All seven are unreachable: git fetch origin <sha> fails for every one, no open PR or branch carries them, and none was in the squash merge. They were authored in a sandbox on a branch named work and never pushed, so the follow-up PRs each commit reported do not exist. A ledger entry whose only pointer is a dead hash is worse than no entry, because it reads as tracked. Rewritten around what is actually true and checkable: the PR #1316 review threads persist and describe each fix with file and line detail, and two of the findings are still live on main — the unscoped Therapy Compass retry waiters at use-therapy-data.ts:68, and the adoption gate returning null for root-path modes at tests/search-results-band-adoption.test.ts:101, which leaves /?mode=prescribing and Documents outside the inventory. Both verified against origin/main rather than inferred. The rest of the batch had already landed independently and is recorded as needing no action. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Akwz3Sdms8uJ5AkDt3CduY
BigSimmo
commented
Jul 28, 2026
Re: "Preserve durable refs for the seven follow-up fixes" — correct, and understated. Fixed in I checked rather than assumed, and the situation is worse than "at risk of garbage collection". The commits are already unreachable: No open PR carries them either — I enumerated all 18 open PRs and none matches. Each of those commits reported "created the required follow-up PR metadata titled …", but no such PR exists. They were authored in a sandbox on a branch named The durable record is the review threads on #1316, which persist and describe every fix with file and line detail. The row now points there. More usefully, I checked which findings are actually still live on
So five of the seven were already resolved by work that did land; two remain, and both are now named with file, line, mechanism, and the shape of the fix, so they can be re-derived without any of the lost commits. Thank you for this one — a ledger row whose only pointer is a dead hash is worse than no row, because it reads as tracked. Verification: Generated by Claude Code |
BigSimmo
commented
Jul 28, 2026
There is no failing check on this PR — nothing to fix. Flagging before more time goes into it. I enumerated every completed workflow run on this branch: 30 runs, zero failures. The only non-success is a Current head
A cancelled run renders as a red ✗ in the checks list and is visually indistinguishable from a genuine failure. That is the exact defect recorded in this PR as How to tell them apart: open the job log. A cancellation shows This diff touches one markdown file. The only gates that can legitimately fail on it are
Auto-merge is armed and will take it once the running checks land. Generated by Claude Code |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:d255e3ec57
ℹ️ 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".
Uh oh!
There was an error while loading. Please reload this page.
Codex pushed back on my own row and was right. retryWaitersRef at
use-therapy-data.ts:68 is genuinely unscoped, but nothing observes the
early settle: useTherapyData lives in the long-lived TcProvider and
requestKey derives only from screen, so it cannot change without the
screen changing. The sole awaiting caller is the band's AsyncButton
inside search-screen.tsx, which unmounts on exactly that transition, and
workspace.tsx uses onClick={b.retryData}, discarding the promise.
I had already rated this below the original Major severity but still
listed it as live with a visible "Retry stops being busy" symptom. That
claim was wrong, and a ledger row asserting a user-visible defect that
cannot occur would have sent follow-up work at unnecessary waiter
keying. The correction is retained rather than deleted, with the
condition that would make it real.
Also links the durable PR #1316 review source, using the repo's pinned
Prettier 3.9.5 rather than a transient npx version.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Akwz3Sdms8uJ5AkDt3CduYBigSimmo
commented
Jul 28, 2026
Re: "Remove the spurious Therapy Compass retry defect" — you're right, and I've corrected my own row. Fixed in I traced it rather than taking either side on assertion. The decisive detail is that catalogue: usesCatalogueIndex ? "index" : "full",includePathways: screen==="pathways",includeReference: false,So I had already rated this below the original Major severity, but I still listed it as a live defect with a visible "Retry stops being busy" symptom, and that specific claim was wrong. A ledger row asserting a user-visible failure that cannot occur is worse than a missing row — it sends follow-up work at unnecessary waiter keying, which is precisely what you flagged. The row now:
I also took the durable-link idea from your other finding and implemented it here, because One thing worth flagging from that attempt: it reported Verification: Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
Summary
docs/outstanding-issues.md. No source, test, config, or workflow change.#096— seven Codex follow-up PRs carry unrun fixes.ff5b682,77cfe12,9840ed9,81ffb86,a5d6561,967e16c,e544d0dwere authored into separate follow-up PRs rather than the feature branch, so none is in the merged4bcfeb90. Their content is real — therapy retry-waiter scoping, adoption-gate root-path modes, favourites hub counts, document status derivation — but every one reports its own tests as not run (nonode_modules; Node 20 against a repo requiring 24). The row records the specific overlaps that make them unsafe to apply one at a time:77cfe12and81ffb86both touch the results-band status derivation and props that mergeda7fadf55also changed;a5d6561edits the sharedProbefixture four tests depend on;967e16ccould not run Prettier while editingtests/search-results-band-adoption.test.ts, the exact file whose formatting brokeStatic PR checksandci/circleci: verifyearlier the same day.#097— Gitleaks reports a false red when the head moves mid-run. The job triggered for head9bace1d1checked out that merge ref, then queried the API and built its range against40278453, pushed seconds later and absent from the checkout. Git rejected the range, so it scanned~0 bytes, loggedno leaks found in partial scan, and exited 1 — a security gate that did not run, presenting as ordinary noise. It cleared once the head settled (23 commits scanned,~198 KB). Both range endpoints resolve in any complete checkout, verified locally against the branch and the PR merge ref, so this is not afetch-depthproblem.#093updated.mainmitigated the symptom in3a8edb93by retrying count-and-visibility together inui-overlap.spec.ts'sgotoHome. That hardens one helper; the duplicate root is unchanged. Also records the evidence that it predates PR #1316 — at631d90d2the spec already documented "twoheader#searchnodes" and "a second transientheader#searchcan exist briefly".Verification
npm run format:check— All matched files use Prettier code style!npm run docs:check-links— docs link check passed: 1297 repo path references resolve.npm run verify:pr-local— Verification not run: documentation-only change. No source, test, or config file is touched, so the build, client-bundle scan, unit suite and RAG fixture stages have nothing to exercise. The two checks above are the ones that can fail on this diff.npm run verify:ui— UI verification not run: no UI, routing, styling, reduced-motion or forced-colors behaviour changed.npm run eval:retrieval:quality— not applicable; no retrieval, ranking, selection, chunking or scoring behaviour changed.npm run check:production-readiness— not applicable; no clinical workflow, privacy, environment, Supabase, source-governance or deployment behaviour changed.RAG impact: no retrieval behaviour change — this is a documentation ledger entry. No file under
src/lib/rag/**, clinical-search, retrieval-selection, released-search-order, ranking-config, the eval harness, the golden fixture, or the retrieval RPCs is modified.Risk and rollout
/issues, so both new rows were written through a script that escapes cell content and the result was re-formatted and link-checked.Clinical Governance Preflight
Not applicable — this change touches no ingestion, answer generation, search/ranking, source rendering, document access, privacy, production environment, or clinical output behaviour. It adds two rows and edits one row in a markdown ledger.
Notes
This is memory, not a task list. The value is in
#096: seven PRs now targetmaincarrying genuine fixes that have never been executed, and each one's own report reads as green until you look at its testing section. Landing them individually is the risk this row exists to prevent — the recommended path is to consolidate them onto one branch, reconcile the band overlaps, runverify:cheapplusformat:checkover the combination, and land once.#097is deliberately P3. It resolved itself and is not blocking anything. It is recorded because the failure presentation is misleading in a specific way: a red that means "someone pushed" is indistinguishable at a glance from a red that means "a secret was found", and the reflex it trains is to ignore the gate.🤖 Generated with Claude Code
https://claude.ai/code/session_01Akwz3Sdms8uJ5AkDt3CduY
Generated by Claude Code