Skip to content

DS V2 PR-V: values — tap knob to 48px, control radius to 10px - #1571

Merged
BigSimmo merged 6 commits into
mainfrom
claude/ds-v2-values
Aug 2, 2026
Merged

DS V2 PR-V: values — tap knob to 48px, control radius to 10px#1571
BigSimmo merged 6 commits into
mainfrom
claude/ds-v2-values

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Aug 2, 2026

Copy link
Copy Markdown
Owner

Summary

Phase 2 of the Fable V2 design system — the values tranche (SPEC §13 PR 5a/5b/5c), as three ordered, independently revertible commits. Each value change carries its own test pins in the same commit, so a revert never leaves a pin behind.

  • 5a · token values, no geometry (close-out, docs only). No value deltas remain for this slice. 59e4c3dfc landed the --shadow-well rename, the evidence-spine and status-mark families and the dark --clinical-chat-document fix; PR 3 (DS V2 PR-A: correctness — HCM proofs, contrast/disabled, prop unions #1570) landed the remaining ink roles. The v2 light and dark blocks now declare the same colour set, and the design-system contract reports rawColorLiterals 2 / literalShadowClasses 0 / legacyTapClasses 0 against an unchanged baseline. SPEC now records why the two surviving #0f766e literals stay: they restate a Postgres column default for a per-record accent colour, so they are persisted data rather than design tokens, and changing the application default without migrating the database default would diverge the two.
  • 5b · the tap knob moves to 48px. --spacing-tap goes 2.75rem3rem in the globals @theme block, which is the only place it may be set (SPEC §4.10, DECISIONS §C2). The v2 layer's --tap-min stops carrying its own value and becomes the pure alias var(--spacing-tap), so the app cannot render a 44/48 split. This moves 426 *-tap call sites across roughly 90 files at once. Two follow-through rules came out of the sweep and are now written into SPEC §4.10: a grid track that holds a tap-sized child reads var(--spacing-tap) rather than copying the number (seven hardcoded 2.75rem tracks were audited; the launcher search row, the one with no gap between its columns, was rebound, and the other six absorb the extra 4px into an existing gap or the row's own padding); and the phone composer keeps a deliberate 44px below 431px, because its height is part of the search-chrome contract and 4px per button would re-tune the dock reserve and the phone CLS budget for no accessibility gain. Two min-h-[44px] literals on interactive links move onto min-h-tap, and the comments that restated 44px now name the token instead.
  • 5c · the control radius moves to 10px. Live @theme --radius-md goes 0.5rem0.625rem, which is the value the v2 layer already declares for controls, inputs and buttons. The two layers disagreeing is what made adoption reshape every control on a surface the moment it opted in (SPEC §4.6), so the step lands here, once, moving all 243 rounded-md call sites across 81 files with a single visual diff instead of one surprise per adopted surface. Fourteen arbitrary radius literals are absorbed onto the ladder, each to its nearest rung with ties going to the smaller. The 2px cap on the mode-nav indicator stays a literal and now says why: it is a hairline below the ladder's 4px floor, where the nearest rung would double it into a visible dome.
  • Gates flipped in-commit. ckb-v2-token-contract now asserts the --tap-min alias, that the v2 layer never declares the knob, and that the @theme value is at least 48px, comparing resolved rem rather than strings (a string compare would pass on an alias). ui-style-contract raises its rendered Chromium floor to 48. ui-tools expects the mode-home hero tile at 48. design-token-contract names both sanctioned radius half-steps (6px and 10px) so a third cannot slip in, and additionally asserts the v2 control rung equals the live one, so the drift this PR closes cannot silently reopen. GATES gate 2 moves from implemented-partial to implemented-blocking.

Verification

  • npm run verify:pr-local -- --files <the 30 changed paths>PASS. Test Files 471 passed (471), Tests 4880 passed | 3 skipped (4883); production build ✓ Compiled successfully in 32.1s; Client bundle secret surface check passed.
  • npm run verify:ui346 passed, 1 failed. The single failure is tests/ui-smoke.spec.ts:2221 ("phone answer result keeps the edge dock and shared chrome synchronized on a short runway"), which fails identically on unmodified origin/main in this local environment: maxOffset 99 at the base tree versus 111 at this head, reproduced in a pristine second worktree with its own npm ci and its own Playwright build root. CI is green on that same base tree (run 30720360137, PR-A head d5e90b8a73520e3289: Production UI critical and Production UI (1) (2) (3) all success), so this is a local environment divergence in the same class as the known eval:rag:offline timeouts, not a regression introduced here. CI's Production UI job is the binding verdict for it.
  • npm run verify:phone-chrome -- --full=never — contracts Test Files 9 passed (9), Tests 116 passed (116); changed-browser tests/ui-tools.spec.ts 87 passed; focused browser journeys 10 passed plus the same single known-red test above. The full-UI stage was skipped deliberately because verify:ui had already run on this exact tree.
  • npm run test:e2e:critical15 passed.
  • npm run typecheck, npm run format:check (All matched files use Prettier code style!), node scripts/check-design-system-contract.mjs (raw colors 2; literal shadows 0; legacy tap classes 0), and the docs-surface checks (check:branch-review-ledger, check:outstanding-issues, sitemap:check, docs:check-links, docs:check-index) all exit 0.
  • Before/after screenshot inventory captured at origin/main versus this head (answer, forms and therapy groups × light/dark × desktop/320px × forced-colors, plus print for the answer routes): 50 shots each side. Review evidence only — .tmp-visual/ is gitignored and nothing is committed (issue #118 hold respected).
  • npm run verify:release — not run: release gates are provider-backed and this is not a release handoff.
  • npm run eval:retrieval:quality, npm run eval:rag, npm run eval:quality — not run: no retrieval, ranking, selection, chunking or scoring behaviour changed, and these need live provider keys.
  • npm run check:production-readiness — not run: no clinical workflow, privacy, environment, Supabase, source-governance or deployment behaviour changed.

RAG impact: no retrieval behaviour change — this PR changes only token values (tap size, control radius) and comments; nothing under src/lib/rag/**, clinical-search, retrieval-selection, ranking-config, answer-ranking, the eval harness or the golden fixture is touched. verify:pr-local still classified the diff into the offline eval because src/components/ui/citation.tsx matches the citation*.tsx scope pattern (a comment-only edit there), and that eval ran green: Offline RAG fixture and manifest validation passed (36 golden cases, 23 suites) with Tests 574 passed (574), which is better than the known-red local baseline of 570/574.

Risk and rollout

  • Risk: this is a site-wide geometry change on purpose — every *-tap control grows 4px and every rounded-md corner grows 2px. The blast radius is visual rather than behavioural: no data, API, auth or clinical logic is touched, and the token contracts now pin both values from both layers. The residual risk is a per-surface layout surprise that neither the Chromium journeys nor the before/after inventory caught; the phone answer runway pin discussed above is the one place where local and CI geometry disagree, and CI adjudicates it.
  • Rollback: revert the offending ordered commit — 5c (d33721b43) for the radius, 5b (d927c64b2) for the tap knob. Each carries its own test pins, so a single revert restores a consistent state without a follow-up. After squash-merge, revert the corresponding hunks of the squash commit.
  • Provider or production effects: None. No provider was contacted; all gates were local or offline. Merging deploys to psychiatry.tools through the usual Railway pipeline.

Notes


Open in Devin Review

Summary by CodeRabbit

  • Accessibility & Interaction

    • Interactive controls and touch targets now provide a minimum 48px hit area for easier tapping.
    • Small-phone composer controls retain their compact 44px layout where appropriate.
  • Visual Updates

    • Standardized corner radii across dialogs, panels, cards, buttons, and navigation elements.
    • Updated search and suggestion layouts to use consistent touch-target sizing.
  • Documentation

    • Updated design-system guidance, specifications, and decisions to reflect the new sizing and radius standards.
  • Tests

    • Expanded coverage to verify tap-target sizing, radius standards, and mobile interaction layouts.

No value deltas remain for slice 5a. 59e4c3d landed --shadow-well, the spine and status-mark families and the dark --clinical-chat-document fix; PR 3 (#1570) landed the remaining ink roles. The v2 light and dark blocks declare the same colour set, and the design-system contract reports rawColorLiterals 2 / literalShadowClasses 0 / legacyTapClasses 0 against an unchanged baseline.

The two surviving #0f766e literals restate a Postgres column default for a per-record accent colour, so they are data rather than design tokens and stay put; SPEC now records why, to stop a later reader 'fixing' the app default away from the database default.
--spacing-tap goes 2.75rem -> 3rem in the globals @theme block, which is the only place it may be set (SPEC 4.10, DECISIONS C2). The v2 layer's --tap-min stops carrying its own value and becomes the pure alias var(--spacing-tap), so the app cannot render a 44/48 split. This moves 426 *-tap call sites across 90-odd files at once.

Pins flip in this commit, not a follow-up: ckb-v2-token-contract now asserts the alias, that the v2 layer never declares the knob, and that the @theme value is at least 48px (checked on resolved rem, since a string compare would pass on an alias); ui-style-contract raises its rendered Chromium floor to 48; ui-tools expects the mode-home hero tile at 48.

Two follow-through rules came out of the sweep and are written into SPEC 4.10. A grid track that holds a tap-sized child reads var(--spacing-tap) instead of copying the number - seven hardcoded 2.75rem tracks were audited and the launcher search row, the one with no gap between columns, was rebound; the other six absorb the extra 4px into an existing gap or the row's own padding. And the phone composer keeps a deliberate 44px below 431px, because its height is part of the search-chrome contract and 4px per button would re-tune the dock reserve and the phone CLS budget for no accessibility gain.

Also retires two min-h-[44px] literals on interactive links onto min-h-tap, and rewrites the comments that restated 44px so they name the token instead. GATES gate 2 moves to implemented-blocking.
Live @theme --radius-md goes 0.5rem -> 0.625rem, which is the value the v2 layer already declares for controls, inputs and buttons. The two layers disagreeing is what made adoption reshape every control on a surface the moment it opted in (SPEC 4.6), so the step lands here, once, moving all 243 rounded-md call sites across 81 files with a single visual diff instead of one surprise per adopted surface.

The 4px-grid pin flips in the same commit: the ladder now carries two named half-steps (sm 6px, md 10px) so a third cannot slip in, and the test additionally asserts the v2 control rung equals the live one - the drift this commit closes cannot silently reopen.

Fourteen arbitrary radius literals are absorbed onto the ladder, each to its nearest rung with ties going to the smaller: the therapy 9/10/11/14px values PR-T carried over from the retired stylesheet, the 5px choice box, and the 1.1/1.15/1.35rem dialog and popover corners. The 2px cap on the mode-nav indicator stays a literal and now says why - it is a hairline below the ladder's 4px floor, where the nearest rung would double it into a visible dome.
@supabase

supabase Bot commented Aug 2, 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

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

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: 46 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: a58a074b-ddd1-4c61-b2db-d69f14f0f913

📥 Commits

Reviewing files that changed from the base of the PR and between 48012d3 and 28992ad.

📒 Files selected for processing (3)
  • docs/branch-review-ledger.md
  • docs/design-system/GATES.md
  • tests/ui-overlay-css-contract.test.ts
📝 Walkthrough

Walkthrough

The shared tap target changes from 44px to 48px. The v2 token aliases the global token. Radius values and component styles use standardized utilities. Contract tests, UI tests, and design-system records document and validate the completed migration.

Changes

Design-system alignment

Layer / File(s) Summary
Shared token foundation
src/app/globals.css, src/app/ckb-v2-tokens.css, tests/*token-contract.test.ts
The global tap token is 48px. --tap-min aliases it. Radius contracts allow the 6px and 10px half-steps and enforce cross-layer consistency.
Tap-target adoption and validation
src/components/applications-launcher-page.tsx, src/components/clinical-dashboard/..., src/components/ui/..., tests/ui-*.spec.*
Fixed 44px dimensions and documentation references are replaced with shared tap sizing. UI assertions now require a 48px floor and preserve the below-431px composer exception.
Radius standardization
src/components/clinical-dashboard/..., src/components/mode-home-template.tsx, src/components/therapy-compass/..., src/components/ui/choice.tsx
Custom radius values are replaced with standard radius utilities.
Design-system records and migration status
docs/design-system*, docs/branch-review-ledger.md
Documentation records the completed token migration, 426 call sites, enforcement evidence, sanctioned exceptions, and validation results.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Suggested reviewers: cursoragent

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 11.11% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the two primary changes: the tap target increases to 48px and the control radius changes to 10px.
Description check ✅ Passed The description includes the required summary, verification results, risk, rollback, provider effects, and notes, with clear explanations for the known local UI test failure.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch

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

Repository owner deleted a comment from ecc-tools Bot Aug 2, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot 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: 3bc571c7b1

ℹ️ 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 thread docs/design-system/GATES.md Outdated
@BigSimmo

BigSimmo commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. The only repository destination is BigSimmo/Database, and the only branch destination is the pull request head branch claude/ds-v2-values at starting commit 3bc571c; never publish fixes to a detached or synthetic work branch and never create a stacked pull request. Use the authenticated GitHub connector to commit each approved fix to BigSimmo/Database:claude/ds-v2-values, then verify that the pull request head contains the published commit before reporting success. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. For a fixed thread, reply with as the first line and as the second line. For a no-code disposition, use followed by . These result markers authorize the workflow to close that exact thread only after it verifies a fixed commit is the pull request head; a local-only commit is not a fix. If publication or verification fails, do not use either result marker, do not claim success, and leave the thread open with the blocker. If human input or new authorization is required, do the same. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/design-system/SPEC.md`:
- Around line 660-664: The PR 5b status entry in the migration table has a stale
407-site count. Update the “407-site geometry change” text to 426 to match the
documented moved *-tap call-site count, unless 407 is explicitly defined as a
separate subset.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e61742b4-aac7-4604-a43d-a199eb779176

📥 Commits

Reviewing files that changed from the base of the PR and between 3520e32 and 3bc571c.

📒 Files selected for processing (30)
  • docs/branch-review-ledger.md
  • docs/design-system.md
  • docs/design-system/DECISIONS.md
  • docs/design-system/GATES.md
  • docs/design-system/SPEC.md
  • docs/design-system/TOKENS.md
  • src/app/ckb-v2-tokens.css
  • src/app/globals.css
  • src/components/applications-launcher-page.tsx
  • src/components/clinical-dashboard/account-setup-dialog.tsx
  • src/components/clinical-dashboard/clinical-output-helpers.tsx
  • src/components/clinical-dashboard/evidence-panels.tsx
  • src/components/clinical-dashboard/mode-action-popup.tsx
  • src/components/clinical-dashboard/settings-dialog.tsx
  • src/components/mode-home-template.tsx
  • src/components/mode-nav/mode-nav.tsx
  • src/components/therapy-compass/bindings.tsx
  • src/components/therapy-compass/controls.ts
  • src/components/therapy-compass/screens/detail-screen.tsx
  • src/components/therapy-compass/screens/recommend-screen.tsx
  • src/components/therapy-compass/therapy-card.tsx
  • src/components/ui-primitives.tsx
  • src/components/ui/button.tsx
  • src/components/ui/chip.tsx
  • src/components/ui/choice.tsx
  • src/components/ui/citation.tsx
  • tests/ckb-v2-token-contract.test.ts
  • tests/design-token-contract.test.ts
  • tests/ui-style-contract.spec.ts
  • tests/ui-tools.spec.ts

Comment thread docs/design-system/SPEC.md Outdated

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 2 additional findings.

Open in Devin Review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: 3bc571c7b1

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

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • Production UI (2)needs investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.
  • PR requiredneeds investigation: inspect the failing step and uploaded diagnostics; rerun only after classifying the cause.

Compared with main CI run #7793 (cancelled).

Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger.

@BigSimmo

BigSimmo commented Aug 2, 2026

Copy link
Copy Markdown
Owner Author

@cursoragent Work the current open PR end-to-end. 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, including any local-only ledger commits; do not discard dirty work, and 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 separate 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 pushes that would cancel in-flight required CI unless the push itself clears that blocker.

If the PR is already merged or closed: confirm the head and merge commit, note required-CI outcome, post one summary, and stop.

Goal: deep review plus Bugbot, fix actionable issues with the smallest correct changes, clear merge / required-CI / thread blockers, run strong local offline verification, push fixes, append the review ledger, and post one PR summary. Prefer thoroughness over speed. Regenerate large assets only when a fix requires it; then run the asset check and keep compatibility aliases byte-identical where the repo uses them.

Snapshot the GitHub head SHA: tip, base, 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, advisory separately, unresolved actionable threads. Missing checks while dirty are not green. If the tip moves mid-work, re-snapshot and continue from the new head.

Ledger-lookup against that GitHub head under the heavy 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. Follow the repo review protocol.

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. Labels like skip-branch-sync 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.

Review high-confidence delta risks only. Separate PR-introduced defects from pre-existing re-emitted debt. For generated assets, review contracts, aliases, cache, and manifests—not every generated line. If protected RAG or ranking surfaces are touched, say so before editing; fix PR-body policy text only when wrong or missing. Ignore bot noise. No nit spam or broad rewrites. Escalate verification by touched risk: clinical / RAG / privacy / migrations / auth → domain check plus production-readiness when warranted; UI / phone-chrome / routing / styling → ensure plus phone-chrome or UI gates when warranted; generated assets or docs inventory/links → asset or docs checks when warranted.

Fix P0/P1 always; clear scoped P2 when locally provable; else disposition and resolve. Required-check failures on this tip only; ignore advisory. Prefer reverting a bad autofix commit. After fixes: format and commit before push; smallest targeted proof; repo cheap gate; repo PR-local gate. No release, lighthouse, live eval, or live provider gates without approval.

Push only this PR’s fix commits. Append ledger for the final GitHub head under the heavy scope. Never push a ledger-only tip—include ledger in a real fix push, or leave a no-change ledger append local and unpushed.

One PR comment: tip, sync/merge-tree, fixed versus dispositioned, threads, required CI, decisive local gate lines, residual risks; merge left to me. Inline only for remaining human-needed P0/P1.

Stop when merge-tree is clean on the current GitHub tip, actionable threads are clear, required checks are green or clearly in progress, heavy gates for scope passed, summary posted, merge left to me.

@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Taking a look!

Open in Web Open in Cursor 

@BigSimmo
BigSimmo enabled auto-merge (squash) August 2, 2026 04:41
Complete the phone-composer 44px exception for the input, move Tools
search submit onto the tap knob, demote gate 2 to honest partial
coverage, correct the SPEC 426-site count, and retune short-runway
smoke pins for the 48px geometry.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@ecc-tools

ecc-tools Bot commented Aug 2, 2026

Copy link
Copy Markdown

🔒 Upgrade Required

Private 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/design-system/GATES.md`:
- Line 43: Update Gate 2 documentation to match the actual enforcement level:
either make the Chromium audit cover all interactive controls, define explicit
exceptions, wire it into required verify:cheap/CI checks, and mark the relevant
Gate 2 entries as implemented-blocking, or retain implemented-partial and revise
the documented objective to acknowledge that h-10 controls and the unwired audit
are not blocked. Anchor changes to the Gate 2 entry and its corresponding entry
at line 87.

In `@tests/ui-overlay-css-contract.test.ts`:
- Line 77: Update the responsive CSS assertion in the UI overlay contract test
to isolate the `@media` (max-width: 430px) block before validating the
chat-composer declarations. Ensure both selectors and their expected dimensions
are matched only within that extracted block, preventing later rules or media
blocks from satisfying the assertion.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 858bb582-da8f-40e0-8e98-68030654be73

📥 Commits

Reviewing files that changed from the base of the PR and between 3bc571c and 48012d3.

📒 Files selected for processing (8)
  • docs/design-system/GATES.md
  • docs/design-system/SPEC.md
  • src/app/globals.css
  • src/components/applications-launcher-page.tsx
  • src/components/clinical-dashboard/account-setup-dialog.tsx
  • tests/mobile-interaction-regressions.test.ts
  • tests/ui-overlay-css-contract.test.ts
  • tests/ui-smoke.spec.ts
🚧 Files skipped from review as they are similar to previous changes (4)
  • src/components/clinical-dashboard/account-setup-dialog.tsx
  • src/components/applications-launcher-page.tsx
  • src/app/globals.css
  • docs/design-system/SPEC.md

Comment thread docs/design-system/GATES.md Outdated
Comment thread tests/ui-overlay-css-contract.test.ts Outdated
@BigSimmo
BigSimmo disabled auto-merge August 2, 2026 04:54
@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

PR #1571 end-to-end review+fix summary

Tip: 48012d359b84daae347201697c82f3e433c182c5 on claude/ds-v2-values
Base: 3520e328 (PR-A). Merge-tree vs origin/main: clean (ahead 5 / behind 0). Auto-merge: already armed by you — left alone.

Findings → disposition

Severity Item Disposition
P2 (Codex) Gate 2 claimed blocking while ui-style-contract skips declared heights <48px; Tools submit was h-10 w-10 Fixed — submit + both grid tracks on tap knob; account-setup close no longer overrides toolbarButton to 40px; gate 2 demoted to implemented-partial with residual enumeration noted; source pin added
P2 (CI) Production UI (2) failed two phone answer chrome pins (maxScrollTop 5>4; postCollapseMaxOffset 59≥48) Fixed — complete phone-composer 44px exception for .chat-composer-input; retune short-answer / short-runway pins for 48px geometry (upper post-collapse <72, bare overflow ≤8)
Docs (CodeRabbit) SPEC migration table still said “407-site” Fixed → 426
Bugbot / Devin No blocking issues reported No action

Threads

  • Codex gate-2 thread: replied + resolved (fixed-head:48012d35)
  • CodeRabbit 407→426: replied + resolved

Local gates (decisive lines)

  • Test Files 471 passed (471) / Tests 4879 passed | 4 skipped (4883) (verify:cheap)
  • ✓ Compiled successfully in 25.1s + Client bundle secret surface check passed. + Offline RAG fixture and manifest validation passed (36 golden cases, 23 suites) (verify:pr-local)
  • 2 passed — phone short-answer + short-runway smoke tests via test:e2e
  • Design-system contract passed (... raw colors 2; literal shadows 0; legacy tap classes 0)

Required CI

Pushed fix cancelled the prior red tip. On 48012d35: Change scope / Static / Safety / Build / Production UI critical already SUCCESS; Production UI (1)(2)(3) IN_PROGRESS at summary time. PR required will settle when those finish.

Residual risks

  • Gate 2 remains partial until interactive elements are enumerated with an explicit exception list (phone composer carve-out already written).
  • Site-wide 4px tap / 2px radius geometry may still surprise a surface the Chromium journeys miss; review inventory stays gitignored (#118 hold).
  • Review ledger row for this head is local/unpushed (no ledger-only tip).

Merge left to you.

@BigSimmo
BigSimmo enabled auto-merge (squash) August 2, 2026 04:56
Revise the Gate 2 objective/evidence so fixed h-10 controls and the
unwired Chromium audit are explicitly not claimed as blocked, and
scope the 430px composer contract assertion to the extracted media
block.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@BigSimmo
BigSimmo merged commit dd7b65e into main Aug 2, 2026
58 checks passed
@BigSimmo
BigSimmo deleted the claude/ds-v2-values branch August 2, 2026 05:16
@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Tip update — 28992add

Follow-up after required CI went green on 48012d35:

  • Clarified Gate 2 objective/evidence so fixed h-10 controls and the unwired Chromium audit are explicitly not claimed as blocked.
  • Scoped the 430px phone-composer CSS contract to the extracted media block.
  • CodeRabbit threads on those two points replied + resolved; unresolved actionable threads: 0.

Required CI on this tip: Production UI critical + (1)(2)(3) + PR required all SUCCESS. Merge-tree vs origin/main clean (ahead 6). Auto-merge still armed (your setting) — left alone.

Review-ledger row for 28992add is local/unpushed (no ledger-only tip). Merge left to you / auto-merge.

Sign up for free to 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