docs(issues): close the shipped Therapy convergence row and queue what remains - #2158
Conversation
…emains Measured on main at adf93a7, after #2122 (component convergence) and #2150 (production exposure) both landed. - Closes `#FEWQZ5`. Its three stages — Button call sites, card-recipes adoption, page headers — all shipped in #2122, so the row described finished work. It was queued before that PR landed and the reconcile applied it afterwards, which is how a completed task ends up reading as open. - Queues the private UI kit as a P2. `therapy-compass/ui.tsx` exports eight components whose shared equivalents Therapy imports zero times: Chip, StatusMark, ErrorState, Progress, the eyebrowText primitive and CategoryIconTile. This is the duplication `card-recipes.ts` was written to end, one layer down, and #2122 did not reach it. It matters most for `StatusBadge`, which renders "Needs source review" — since #2150 that is the per-record half of the only thing between an unreviewed record and a clinical decision, and it is module-private. - Queues `therapyBtn` as a P3: 30 raw call sites across 8 files, kept deliberately in #2122 because list rows and disclosure headers are not Buttons, but with no shared recipe covering them either. Both new records carry migration hazards rather than just a target: `StatusBadge` must keep its `TriangleAlert` shape channel or the warning becomes colour-only, and `Meter`'s colour-only fix from 8c791a1 must not be regressed by a naive swap to shared `Progress`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in:18 minutes Limit details: You’ve used the included review currently available. Your 101 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?After more reviews become available, a review can be triggered using the 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 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 configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
Comment |
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Three queued ledger requests, from re-measuring Therapy against the shared design system on
mainatadf93a75— after both #2122 (component convergence) and #2150 (production exposure) landed. Each is independently revertible and separately actionable.Closes
#FEWQZ5. Its three stages — Button call sites,card-recipesadoption, page headers — all shipped in refactor(therapy): converge Therapy Compass onto the shared Button, card, and PageHeader components #2122 (092633eb), so the row described finished work. Worth noting why it read as open: it was queued before that PR landed, and the reconcile applied it afterwards, so a completed task became an open row purely through ordering. The outcome records what landed and points at#D6G8TCfor the threeh1s deliberately left behind.Queues the private UI kit (P2).
src/components/therapy-compass/ui.tsxexportsTag,TagRow,StatusBadge,IconTile,LoadingState,EmptyState,EyebrowandMeter. Shared equivalents exist and Therapy imports them zero times —ui/chip.tsx,ui/status-mark.tsx,ui/error-state.tsx,ui/progress.tsx, theeyebrowTextprimitive,category-icon-tile.tsx. This is the duplicationcard-recipes.tswas written to end, one layer down; refactor(therapy): converge Therapy Compass onto the shared Button, card, and PageHeader components #2122 targeted buttons, cards and page headers and did not reach it.Queues
therapyBtn(P3). 30 raw call sites across 8 files. refactor(therapy): converge Therapy Compass onto the shared Button, card, and PageHeader components #2122 kept it deliberately — its consumers are list rows, disclosure headers, section toggles and chips, which are not Buttons in the design-system sense — but nothing shared covers them either, so Therapy carries its own hover/press motion and dual disabled encoding.Why the UI kit is the P2 rather than a tidy-up.
StatusBadgerenders the "Needs source review" label. Since #2150 removed the production gate, that badge is the per-record half of the only thing standing between an unreviewed therapy record and a clinical decision — and it is a module-private implementation no shared contract governs.Both new records carry migration hazards rather than just a target, because a naive swap would regress safety properties this repo already paid for:
StatusBadgepairs its warning tone with aTriangleAlertglyph viareviewStatusMeta. Any swap must preserve that shape channel or the warning becomes colour-only and trips the status-colour boundary ratchet.Meter's colour-only status was deliberately fixed in8c791a1adby naming the completeness band in text; swapping to sharedProgresswithout carrying that forward regresses it.A suggested order is recorded —
EyebrowandTag/TagRowfirst as lowest-risk,MeterandStatusBadgelast with the colour-only contract tests extended first.Verification
npm run verify:pr-localfailed: (none). Recognised low-risk documentation scope, so the router ran the focused contracts —check:runtime,check:installed-lock-parity,format:changed,sitemap:check,docs:check-index,docs:check-inventory,docs:check-scripts,docs:check-links,check:branch-review-ledger,check:outstanding-issues,check:ledger-write-discipline— and skipped lint, typecheck, the unit suite and the build, none of which have a plausible failure path in three added JSON files.The measurements in the records were taken directly from
mainatadf93a75rather than recalled: shared-component import counts per module,therapyBtncall sites per file, and theui.tsxexport list.npm run verify:uiwhen UI, routing, styling, browser behavior, reduced-motion, or forced-colors behavior changedUI verification not run: not applicable — no source file is touched, so no rendered surface can change.
npm run verify:releasebefore release or handoff confidence claimsVerification not run: provider-backed, not authorized, and no release confidence is claimed.
npm run eval:retrieval:quality(must stay 36/36) when retrieval, ranking, selection, chunking, or scoring behavior changedVerification not run: not applicable — no retrieval surface is touched.
npm run eval:rag -- --limit 15+npm run eval:quality -- --rag-onlywhen answer generation, the synthesis prompt, or answer post-processing changedVerification not run: not applicable — answer generation is untouched.
npm run check:production-readinesswhen clinical workflow, privacy, environment, Supabase, source governance, or deployment behavior changedVerification not run: not applicable — this queues ledger records and changes no behaviour.
npm run check:deployment-readinesswhen deployment startup, hosting, or rollout behavior changedVerification not run: not applicable — no deployment behaviour changed.
Risk and rollout
docs/outstanding-issues.mdis untouched. Acting on either new record later is a separate change with its own review.git revertthis single commit. Thedonerequest is likewise inert until reconciled.Notes
All three land as pending and take effect only when
npm run issues:reconcilenext runs from its own deliberately serialized fresh-base branch — including thedone, so#FEWQZ5stays visibly open until then.The stale-row problem this closes is worth noticing in its own right: queueing a task and completing it in the same session leaves the reconcile to create a row for finished work. Nothing detects that, and it would recur.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CXpFsse3vVMy7CTxNRi568
Generated by Claude Code