docs(design-system): resolved five-document spec set + repair of the broken sentry merge - #1531
Conversation
…components specified Produces the finished five-document design-system set under docs/design-system/, superseding the four earlier documents that disagreed with each other: - SPEC.md — the complete system: roles, rules, rationale, no values - TOKENS.md — reconciled token inventory (C1): winner name + owner per role - COMPONENTS.md — the eight safety/infrastructure component specs + maturity matrix - DECISIONS.md — C1-C5 resolved with rejections and reasons, clinical Q&A record, assumptions register, blocked list - GATES.md — every rule paired with its enforcement status (implemented-blocking / implemented-partial / planned / manual) Conflict outcomes: C1 one inventory, --shadow-well adopted, quantity pair wins; C2 tap knob lands in @theme only, --tap-min becomes an alias; C3 structural tokens stay class-scoped on .ckb-v2; C4 v2 HCM block covers .ckb-v2, .dark .ckb-v2 and .ckb-v2.dark; C5 three identity families confirmed - hue tones are category colour, not mode identity. Also: index the set in docs/README.md, and allowlist the six design-branch-only paths (branch claude/clinical-kb-design-system-333a69 @ ef13a07) in check-docs-links.mjs with a remove-after-merge note. Verified: docs:check-links 1486 references resolve; docs:check-inventory current; prettier clean. Docs-only change - no RAG surface, no runtime code. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ked items - C1 byte-level: design-side token file confirmed unrecoverable (design project 08d6f126 last updated 2026-07-13; the 31 July copy was never written to it). Repo file made canonical at design-branch commit 59e4c3d: --shadow-well rename, evidence-spine and status-mark families authored repo-side, confidence-meter deferred (no call site). - Manifest regeneration reduced to one /design-sync run; canonical tokens file written to the design project root via DesignSync. - React-shim race: paste-ready lazy-read patch recorded in DECISIONS. - Dark fall-throughs closed: --clinical-chat-document fixed in v2 dark; --disabled fall-through confirmed (~3.4:1 dark vs ~2.5:1 light). - Publication recorded: design branch pushed without PR (needs its own clinical-governance handoff); docs branch pushed with PR. Verified: docs:check-links green; token-contract test files 47 passed (47) on the design branch. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…options) The codex sentry-install chain (c3c9d6a, merged as 369c01f) landed on main unverified and broke three things this commit repairs: - src/instrumentation.ts: a stray closing brace ended register() early and left two statements at module top level - a syntax error that failed prettier, typecheck, and the production build. Removed the brace so the optional error-tracking call runs at the end of the production gate as the comment intends. - src/components/ui-primitives.tsx: the commit removed the lucide-react import and replaced Ban/Landmark/Loader2/ShieldCheck/TriangleAlert/X with unicode span glyphs, retyping IconComponent to a span-props function. That produced 26 typecheck errors everywhere real lucide icons are passed to IconComponent-typed APIs, and visually regressed the clinical source badges. Reverted to the long-standing lucide implementation. - next.config.ts: withSentryConfig options used the removed API shapes - release now takes { name }, and hideSourceMaps is expressed as sourcemaps.deleteSourcemapsAfterUpload. Verified: npx tsc --noEmit exits 0 (was 30 errors); prettier clean; vitest tests/ui-primitives.dom.test.tsx tests/icon-button.dom.test.tsx -> 7 passed (7). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Whole-tree npm run format; these files came from the same unverified merge and were failing CI's prettier --check. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 9 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 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 configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughChangesClinical KB design-system documentation
Privacy-safe Sentry observability
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant NextRuntime
participant instrumentation
participant SentryConfig
participant ErrorBoundary
participant Sentry
NextRuntime->>instrumentation: register()
instrumentation->>SentryConfig: load runtime configuration
SentryConfig->>Sentry: initialize privacy-safe tracking
ErrorBoundary->>Sentry: captureException(error)
Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
Comment |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
PR Summary by Qododocs(design-system): publish resolved spec set and harden Sentry integration
AI Description
Diagram
High-Level Assessment
Files changed (23)
|
Code Review by Qodo
1.
|
|
@cursoragent Work the current open PR. Confirm the PR number and GitHub head first from context. If more than one open PR could apply, stop and say which one you would use and why. Fetch and start from the remote tip that matches that GitHub head. If the named branch ref is missing or stale, use the PR head ref. Preserve unrelated local WIP; do not discard dirty work; do not treat a local-ahead commit as the reviewed tip. Do not merge the PR, force-push, rebase, or arm auto-merge unless I explicitly ask. No provider-backed gates without approval. If you cannot push or resolve threads, diagnose and comment only; if inline replies fail, resolve when possible and put dispositions in the summary comment. If auto-merge is already armed, push only for a real blocker and avoid cancelling in-flight required CI unless the push clears that blocker. If the PR is already merged or closed: confirm outcome, post one summary, and stop. Goal: review and Bugbot the tip, fix actionable issues with the smallest correct changes, clear merge / required-CI / thread blockers, prove fixes with focused local checks, push, append ledger, and post one PR summary. Use broader offline gates only when the delta or a failed required check warrants them. Regenerate large assets only when a fix requires it. Snapshot the GitHub head: tip, behind/ahead, mergeable state, merge-tree versus origin/main, required checks on that tip including Production UI when selected, unresolved actionable threads. Missing checks while dirty are not green. Tip moved → re-snapshot. Ledger-lookup against that GitHub head under the review-and-fix scope for this PR. Already reviewed at this head with clean merge-tree, green required checks, and no new actionable threads → summarize, comment, stop unless I asked for a fresh superseding pass. Unblock once: real conflict → merge origin/main (prefer main’s shared queues; keep this PR’s notes); behind-but-clean → one sync, late if required CI is in flight; clean → leave. After any sync or push, re-snapshot before declaring done. No sync thrash. Review high-confidence issues only. Separate PR-introduced defects from pre-existing re-emitted data. For generated assets, review contracts, aliases, and cache—not every generated line. Flag RAG or governance before editing; fix PR-body policy text only when wrong or missing. Ignore bot noise. Fix P0/P1 always; clear scoped P2 when locally provable; else disposition and resolve. Required-check failures on this tip only; ignore advisory. Prove each fix with the smallest targeted check; escalate to cheap or PR-local verification only when the change set, risk surface, or CI failure needs that breadth. Format and commit before push. Push only this PR’s fix commits. Append ledger for the final GitHub head. Never push a ledger-only tip. One PR comment: tip, sync/merge-tree, fixed versus dispositioned, required CI, decisive local proof, residual risks; merge left to me. Stop when merge-tree is clean on the current GitHub tip, no actionable threads remain, required checks are green or clearly in progress, summary posted, merge left to me. |
|
Worked PR #1531 ( Tip: Fixed
Proof
StatusCI re-running on the new tip (pending). Inline replies 403; threads resolved + summary posted on the PR. Merge left to you. |
Replace the live DSN in .env.example with commented placeholders, drop runtime validation of build-time sourcemap credentials, scrub client and server events through privacySafeErrorEvent, disable locals/logs/traces, stop double-init via initializeErrorTracking, and never export user email. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Align error-tracking docs with the single-init scrubbed Sentry path and append the review-and-fix ledger row for the privacy fix tip. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Review-and-fix summary (PR #1531)Confirmed: open PR
Fixed (P0/P1)
Dispositioned
Local proofRequired CIRe-running on tip Residual risks
Merge left to you. |
|
@cursoragent Unblock the current open PR. Confirm the PR number and GitHub head first from context. If more than one open PR could apply, stop and say which one you would use and why. Fetch and start from the remote tip that matches that GitHub head. If the named branch ref is missing or stale, use the PR head ref. Preserve unrelated local WIP; do not discard dirty work; do not treat a local-ahead commit as the reviewed tip. Do not merge the PR, force-push, rebase, or arm auto-merge. No provider-backed gates without approval. If you cannot push or resolve threads, diagnose and comment only; if inline replies fail, resolve when possible and put blocker dispositions in the summary comment. If auto-merge is already armed, push only for a real blocker and avoid cancelling in-flight required CI unless the push clears that blocker. If the PR is already merged or closed: confirm outcome, post one summary, and stop. Primary job: clear mergeability and required-CI blockers on this tip. Do a full product review only if needed to explain or fix a blocker. Stay light otherwise—no broad verification suites or Playwright unless needed to prove one concrete unblock fix. Snapshot the GitHub head: tip, behind/ahead, mergeable state, merge-tree versus origin/main (real conflict versus behind-but-clean), required checks on that tip including Production UI when selected, and unresolved threads that block merge or required CI. Missing checks while dirty are not green. Tip moved → re-snapshot. Ledger-lookup against that GitHub head under an unblock/fix scope for this PR. If already handled at this head for unblock work, merge-tree clean, required checks green, and no blocking threads: summarize, comment, stop. Unblock once: real conflict → merge origin/main with the smallest correct resolution (prefer main’s shared queues; keep this PR’s notes); behind-but-clean → one sync, late if required CI is in flight; clean → leave. skip-branch-sync and similar labels do not block a manual sync needed to clear a real blocker. No sync thrash. After any sync or push, re-snapshot tip, merge-tree, and required checks before declaring done. Dedupe the ledger if a merge touched it. Fix only what blocks required checks or mergeability on this tip. Ignore advisory red unless it reveals a real required failure. Prefer the smallest safe fix; if a bot/autofix commit caused the break, prefer revert. Prove with the smallest targeted check only. Format and commit before push. Push only blocker-fix commits. Append ledger for the final GitHub head under the unblock scope. Never push a ledger-only tip. One PR comment: tip, sync/merge-tree, what blocked and what you fixed or dispositioned, required CI status, residual risks; merge left to me. Stop when merge-tree is clean on the current GitHub tip, no blocking threads remain for merge/required CI, and required checks are green or clearly in progress. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Unblock summary (PR #1531)Confirmed: open PR
What blocked
Fixed
Local proofRequired CIRe-running on tip Residual risks
Merge left to you. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
|
@cursoragent Unblock the current open PR. Confirm the PR number and GitHub head first from context. If more than one open PR could apply, stop and say which one you would use and why. Fetch and start from the remote tip that matches that GitHub head. If the named branch ref is missing or stale, use the PR head ref. Preserve unrelated local WIP; do not discard dirty work; do not treat a local-ahead commit as the reviewed tip. Do not merge the PR, force-push, rebase, or arm auto-merge. No provider-backed gates without approval. If you cannot push or resolve threads, diagnose and comment only; if inline replies fail, resolve when possible and put blocker dispositions in the summary comment. If auto-merge is already armed, push only for a real blocker and avoid cancelling in-flight required CI unless the push clears that blocker. If the PR is already merged or closed: confirm outcome, post one summary, and stop. Primary job: clear mergeability and required-CI blockers on this tip. Do a full product review only if needed to explain or fix a blocker. Stay light otherwise—no broad verification suites or Playwright unless needed to prove one concrete unblock fix. Snapshot the GitHub head: tip, behind/ahead, mergeable state, merge-tree versus origin/main (real conflict versus behind-but-clean), required checks on that tip including Production UI when selected, and unresolved threads that block merge or required CI. Missing checks while dirty are not green. Tip moved → re-snapshot. Ledger-lookup against that GitHub head under an unblock/fix scope for this PR. If already handled at this head for unblock work, merge-tree clean, required checks green, and no blocking threads: summarize, comment, stop. Unblock once: real conflict → merge origin/main with the smallest correct resolution (prefer main’s shared queues; keep this PR’s notes); behind-but-clean → one sync, late if required CI is in flight; clean → leave. skip-branch-sync and similar labels do not block a manual sync needed to clear a real blocker. No sync thrash. After any sync or push, re-snapshot tip, merge-tree, and required checks before declaring done. Dedupe the ledger if a merge touched it. Fix only what blocks required checks or mergeability on this tip. Ignore advisory red unless it reveals a real required failure. Prefer the smallest safe fix; if a bot/autofix commit caused the break, prefer revert. Prove with the smallest targeted check only. Format and commit before push. Push only blocker-fix commits. Append ledger for the final GitHub head under the unblock scope. Never push a ledger-only tip. One PR comment: tip, sync/merge-tree, what blocked and what you fixed or dispositioned, required CI status, residual risks; merge left to me. Stop when merge-tree is clean on the current GitHub tip, no blocking threads remain for merge/required CI, and required checks are green or clearly in progress. |
|
PR #1531 tip
No code changes. Merge left to you. |
|
Note Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it. Fixes Applied SuccessfullyFixed 5 file(s) based on 12 unresolved review comments. Files modified:
Commit: The changes have been pushed to the Time taken: |
Unblock status (PR #1531)Confirmed: open PR
BlockersNone on this tip. Prior Static PR + Build failures were cleared at
Still running (clearly in progress): Production UI (1)(2)(3). Advisory Lighthouse completed success. ThreadsOpen CodeRabbit comments on design-system docs / minor next.config notes — not required-CI or mergeability blockers. Left alone (docs-quality / future work). One outdated thread on Action takenNo code change, no sync, no push. Ledger not amended (would be a ledger-only tip). Residual risks
Merge left to you. |
Fixed 5 file(s) based on 12 unresolved review comments. Co-authored-by: CodeRabbit <noreply@coderabbit.ai>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
|
@cursoragent Unblock the current open PR. Confirm the PR number and GitHub head first from context. If more than one open PR could apply, stop and say which one you would use and why. Fetch and start from the remote tip that matches that GitHub head. If the named branch ref is missing or stale, use the PR head ref. Preserve unrelated local WIP; do not discard dirty work; do not treat a local-ahead commit as the reviewed tip. Do not merge the PR, force-push, rebase, or arm auto-merge. No provider-backed gates without approval. If you cannot push or resolve threads, diagnose and comment only; if inline replies fail, resolve when possible and put blocker dispositions in the summary comment. If auto-merge is already armed, push only for a real blocker and avoid cancelling in-flight required CI unless the push clears that blocker. If the PR is already merged or closed: confirm outcome, post one summary, and stop. Primary job: clear mergeability and required-CI blockers on this tip. Do a full product review only if needed to explain or fix a blocker. Stay light otherwise—no broad verification suites or Playwright unless needed to prove one concrete unblock fix. Snapshot the GitHub head: tip, behind/ahead, mergeable state, merge-tree versus origin/main (real conflict versus behind-but-clean), required checks on that tip including Production UI when selected, and unresolved threads that block merge or required CI. Missing checks while dirty are not green. Tip moved → re-snapshot. Ledger-lookup against that GitHub head under an unblock/fix scope for this PR. If already handled at this head for unblock work, merge-tree clean, required checks green, and no blocking threads: summarize, comment, stop. Unblock once: real conflict → merge origin/main with the smallest correct resolution (prefer main’s shared queues; keep this PR’s notes); behind-but-clean → one sync, late if required CI is in flight; clean → leave. skip-branch-sync and similar labels do not block a manual sync needed to clear a real blocker. No sync thrash. After any sync or push, re-snapshot tip, merge-tree, and required checks before declaring done. Dedupe the ledger if a merge touched it. Fix only what blocks required checks or mergeability on this tip. Ignore advisory red unless it reveals a real required failure. Prefer the smallest safe fix; if a bot/autofix commit caused the break, prefer revert. Prove with the smallest targeted check only. Format and commit before push. Push only blocker-fix commits. Append ledger for the final GitHub head under the unblock scope. Never push a ledger-only tip. One PR comment: tip, sync/merge-tree, what blocked and what you fixed or dispositioned, required CI status, residual risks; merge left to me. Stop when merge-tree is clean on the current GitHub tip, no blocking threads remain for merge/required CI, and required checks are green or clearly in progress. |
|
Unblocked PR #1531 at tip Blocked by: GitHub Fixed: Reverted the autofix, merged Merge left to you. |
This reverts commit 9c697e7.
CI triageCI failed on this PR. Automated classification of the 7 failed job(s):
Compared with main CI run #7586 (cancelled). Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger. |
Behind-but-clean sync after reverting the CodeRabbit autofix that broke next.config load and Static PR formatting. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |
Unblock summary (PR #1531)Confirmed: open PR
What blocked
Fixed
Dispositioned
Local proofRequired CIRe-queued on tip Residual risks
Merge left to you. |
🔒 Upgrade RequiredPrivate repository analysis requires Pro or Enterprise. Upgrade: https://ecc.tools/pricing?plan=pro ECC Tools keeps the core app open, and puts private repos, team features, and enterprise controls behind paid tiers. |


Summary
SENTRY_DSNand scrubs request, user, body, breadcrumb, and clinical content before export.documents.metadata.docs/error-tracking.md.RAG impact: no retrieval behaviour change — prompt presentation only adds conservative normalized source-governance metadata; retrieval, ranking, and source selection are unchanged.
Verification
npm run verify:pr-localtests/error-tracking.test.ts,tests/rag-source-governance-prompt.test.ts, andtests/source-metadata.test.tsnpm run eval:rag:offline— 36/36 golden retrieval casesnpm run check:production-readiness:cireturned READY (offline; expected missing-env warnings)npm run buildsucceeded for production instrumentation wiringorigin/mainand resolved Codex Cloud git-remote helper conflicts;git merge-treevsorigin/mainis cleanRisk and rollout
main, removeSENTRY_DSNand restart services if observability was enabled, and confirm prompts no longer emit the Source governance line.SENTRY_DSN; no browser DSN, tracing, or source-map upload is configured.Clinical Governance Preflight
Clinical KB Database(sjrfecxgysukkwxsowpy)Notes
{}/index-only governance metadata remains unrecorded in prompts; partial sibling fields use neutralunknownrather than inventing adverseunverified; explicit storedclinical_validation_status: "unverified"from upload is preserved.Summary by CodeRabbit
New Features
Bug Fixes
Documentation