Skip to content

#233 — pass-2 residual deltas: ct-key color-mix (AA), ct-test gap, bubble radius, Model YAML label - #237

Merged
cmbays merged 2 commits into
mainfrom
adapters-233-pass2-residuals
Jun 11, 2026
Merged

cmbays merged 2 commits into
mainfrom
adapters-233-pass2-residuals

Conversation

@cmbays

@cmbays cmbays commented Jun 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Closes the four residual deltas from the 2026-06-11 design-conformance audit where the implementation kept stale pass-1 values that pass-2 revised. Spec citations are to the canonical pass-2 handoff (design-return-2/claude-code-handoff/engine/).

Delta Change Spec
D4 (MED, AA) .col-tooltip .ct-key: var(--accent) → color-mix(in oklab, var(--accent) 60%, white) base.css:436
D5 (LOW) .col-tooltip .ct-test gap 0.25rem 0.45rem → 0.25rem 0.7rem base.css:435
D6 (LOW) badge-borne bubble (.mode-badge/.this-badge.has-mode-tip .expect-tooltip-bubble) gains border-radius: var(--radius-sm) (was inheriting --radius-pan) base.css:548-556
D7 (LOW) drawer summary "Authoring YAML(— diff)" → "Model YAML", no diff-variant suffix — the Diff/File toggle in the code header carries the diff affordance interaction.js:468

D4 RED → GREEN (the new headless AA guard)

New guard col_tooltip_ct_key_meets_aa_contrast_on_every_theme extends the #206/#227 AA family. Methodology per the #206/#227 lesson: contrast is computed from resolved computed styles against the element's effective backdrop — for tooltip text that is the tooltip bubble's own opaque --tooltip-bg fill, never --bg/--surface; the sweep pins this by asserting the ancestor backdrop walk lands exactly on the bubble's own resolved fill. The color-mix fg computes to a non-rgb() serialization, so the sweep normalizes any CSS color through a 1x1 canvas.

RED (unfixed tree, raw accent on the tooltip fill):

light = 3.10   solarized = 3.53   latte = 1.63   rosepine = 2.56
dark  = 8.73   tokyo     = 7.50   gruvbox = 6.09 dracula  = 6.55

GREEN (after the fix):

light = 6.63   solarized = 6.30   latte = 4.95   rosepine = 5.81
dark  = 12.69  tokyo     = 11.21  gruvbox = 9.34 dracula  = 9.60

D5/D6/D7 each got a cheap pin: computed row/column-gap in the same guard (RED 4.5px → GREEN 7px), a new badge_tip_bubble_rounds_at_small_radius test comparing against in-page --radius-sm/--radius-pan reference resolutions (RED at pan → GREEN at sm), and the existing yaml-diff drawer summary pin updated to "Model YAML" (RED on the old label → GREEN).

Deviations from the spec literal (deliberate, flagged)

  1. Latte-scoped D4 stand-in. The spec's own 60% mix lands 3.37:1 on latte — latte's --tooltip-bg is #4c4f69, the lightest of the 8, and the spec tokens (tokens.css:284) carry the same value, so this is empirically the spec's gap. Per the issue's acceptance criterion (≥4.5:1 on ALL 8 themes, verified empirically) and the established feature: design-2 integration PR-1 — chassis delta (3 new AA-pinned themes, diffstyle retirement, DAG final-stroke AA fix) #198/polish: Solarized tier-high chip contrast 3.41 fails AA on shipped main #206/polish: latte suppress-chip 4.37 sub-AA + suppressed-row opacity vs AA (design decision) #227 pattern, a latte-scoped override shifts the mix toward white (35% accent → 4.95:1 measured); the other 7 themes keep the spec-literal 60% mix and the verbatim latte theme block stays pinned.
  2. External-fixture pointer copy follows the D7 rename. The in-report pointer "see the Authoring YAML drawer above…" would dangle once the drawer reads "Model YAML"; the spec itself retains the stale wording at its interaction.js:2470 (a spec-internal oversight). One string updated for coherence; the --project-root --help text naming the drawer was updated likewise.

Discovered while measuring (NOT addressed here, candidate follow-up): .ov-tooltip .ov-key uses a 50% mix, which by the same math sits ≈4.0:1 on latte's tooltip fill — same shape of fix if wanted.

Gates (run directly — not via lefthook)

  • cargo fmt --check — clean
  • cargo clippy --all-targets --locked -- -D warnings — exit 0
  • cargo nextest run — 1228 passed
  • cargo test --test bdd — 160 scenarios / 1032 steps passed
  • cargo test --test headless_toggle -- --ignored — 55 passed
  • cargo test --test headless_zero_egress -- --ignored — 10 passed
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --locked — exit 0
  • cargo deny check — exit 0

Goldens

Regenerated exactly as CI's example-report-check matrix does (jaffle-shop, playground, diff-showcase, explore). The three report goldens changed; the explore pair is byte-identical (it doesn't embed report.css/interaction.js). Audited with git diff --text -U0 -- examples/: every hunk is one of the four deltas (D6 radius on the badge-bubble rule, D5 gap value, D4 color-mix + latte override + comments, D7 label + pointer copy). The chrome insta snapshot was rebaselined for the same template content.

Scope guards honored: no .f-construct (issue #231's lane), no .model-tooltip rule edits (the latte override rides the shared .col-tooltip shell), heuristics ledger untouched, #146/#161 tooltip contract intact (pure-CSS hover/focus reveal unchanged).

Closes #233

🤖 Generated with Claude Code


Open in Stage

…t gap, bubble radius, Model YAML label (#233)

- D4: .col-tooltip .ct-key -> color-mix(in oklab, var(--accent) 60%, white)
  per pass-2 base.css; latte gets a scoped 35% stand-in (the spec's own
  60% mix lands 3.37:1 on latte's #4c4f69 tooltip fill — the #198/#206/#227
  pattern). New 8-theme headless AA guard measures the key against the
  tooltip bubble's OWN fill (the effective backdrop), never --bg/--surface.
- D5: .col-tooltip .ct-test gap 0.25rem 0.45rem -> 0.25rem 0.7rem
- D6: badge-borne bubble border-radius --radius-pan -> --radius-sm
- D7: drawer summary 'Authoring YAML(— diff)' -> 'Model YAML' (no diff
  suffix — the Diff/File toggle carries it); the external-fixture pointer
  copy follows the rename; --help text updated.
- Goldens regenerated (jaffle-shop, playground, diff-showcase; explore
  unchanged); chrome snapshot rebaselined; every hunk maps to the four
  deltas.

Closes #233

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 11, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

@cmbays, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 21 minutes and 50 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

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.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4858e15f-9ea7-4c4d-bce6-3e3661c0dda2

📥 Commits

Reviewing files that changed from the base of the PR and between 74adbad and ad78fc9.

⛔ Files ignored due to path filters (1)
  • tests/snapshots/render_integration__rendered_chrome_jaffle_shop.snap is excluded by !**/*.snap
📒 Files selected for processing (7)
  • examples/diff-showcase-report.html
  • examples/jaffle-shop-report.html
  • examples/playground-report.html
  • src/cli/args.rs
  • templates/interaction.js
  • templates/report.css
  • tests/headless_toggle.rs
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch adapters-233-pass2-residuals

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@ghost

ghost commented Jun 11, 2026 •

Copy link
Copy Markdown

Ready to review this PR? Stage has broken it down into 5 individual chapters for you:

Title
1 Improve column tooltip contrast and spacing
2 Adjust badge-borne tooltip bubble radius
3 Rename Authoring YAML to Model YAML
4 Verify pass-2 deltas with headless tests
5 Other changes
Open in Stage

Chapters generated by Stage for commit ad78fc9 on Jun 11, 2026 6:36pm UTC.

@github-actions

github-actions Bot commented Jun 11, 2026 •

Copy link
Copy Markdown
Contributor

📄 Rendered report preview

All golden examples regenerated cleanly.

🟡 Golden examples

Committed to examples/ and byte-identity gated — the canonical reports contributors and consumers browse. Stable across PRs.

Report View Download
diff-showcase-report.html ▶ Open ↗ ⬇ Download
jaffle-shop-report.html ▶ Open ↗ ⬇ Download
playground-report.html ▶ Open ↗ ⬇ Download

🐶 Live dogfood preview

This PR doesn't touch dbt-project/, so there's no live dogfood preview.

▶ Open ↗ opens the report in your browser in one click —
published to this repo's GitHub Pages under /pr-237/.
⬇ Download fetches the same self-contained HTML as a workflow
artifact (auth-gated; works fully offline). Either way the report
makes zero external resource requests.

The Pages preview may take ~1 min to update after this comment
posts. On PRs from forks the Open link is unavailable (read-only
token) — use Download.

Alternative: GitHub CLI
# gh CLI >= 2.63 extracts into ./report-preview-playground/.
gh run download 27369143755 -R breezy-bays-labs/cute-dbt -n report-preview-playground
open report-preview-playground/playground-report.html

Posted by report-preview.yml for ad78fc9f5985a29ce4fe9499e485f88ded292baf. Affordance only — never blocks merge.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request updates the 'Authoring YAML' drawer label to 'Model YAML' and applies design-conformance updates for pass-2 specifications, including WCAG AA contrast adjustments using color-mix and border-radius refinements. It also adds comprehensive headless integration tests to verify these visual changes across all themes. The review feedback suggests adding fallback color declarations for older browser compatibility where color-mix is used, and implementing a defensive check in the test's JavaScript evaluation to prevent cryptic type errors if the tooltip bubble is not found.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread templates/report.css
Comment thread templates/report.css
Comment thread tests/headless_toggle.rs Outdated
A missing '.expect-tooltip-bubble' now surfaces as got == "" with an
explicit precondition assert naming the selector, instead of a cryptic
in-page TypeError from getComputedStyle(null) (gemini review on #237).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cmbays
cmbays merged commit 9ebc712 into main Jun 11, 2026
33 checks passed
@cmbays
cmbays deleted the adapters-233-pass2-residuals branch June 11, 2026 18:41
github-actions Bot added a commit that referenced this pull request Jun 11, 2026
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.

polish: pass-2 residual deltas — ct-key color-mix (AA), ct-test gap, bubble radius, Model YAML label

1 participant