ci(forbidden-patterns): add Check 7/7 — no bespoke var(--glass-surface-*) (Brief 7) #127
No reviewers
Labels
No labels
agent-context-drift
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: rstillwell/deckhearth#127
Loading…
Reference in a new issue
No description provided.
Delete branch "brief-7-forbidden-bespoke-glass-surface"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Final brief of
unify-glass-panel-surfaces. Adds the regression gate that prevents reintroduction of bespokevar(--glass-surface-low|mid|high)inline styles outside the documented allowlist.This PR closes the convoy.
Two documented deviations from the brief
1. Implementation shape: Check 7/7 inside
forbidden-patterns(not a standalone job)Brief 7 was authored before PR #126 (
slash-ci-minutesconvoy) consolidated the 6 grep-onlyforbidden-*jobs into a singleforbidden-patternsjob with sequential::group::sections. Adding Brief 7 as a standaloneforbidden-bespoke-glass-surfacejob (the brief's verbatim shape) would partially undo PR #126's checkout amortization win.Instead, this PR adds the check as Check 7/7 inside the existing
forbidden-patternsjob — semantics, allowlist, and grep pattern are exactly as Brief 7 specifies; only the wrapper changes. Job display name updated:Forbidden patterns (6 checks)→Forbidden patterns (7 checks).2. Allowlist expanded from 3 entries to 6
Brief 7 planned a 3-entry allowlist (the 3 chrome blocks). On a fresh post-Briefs-1-6
main, the grep turned up three more files that still handroll their own glass surfaces:components/ui/Button.jssecondaryvariant inlinebackground: var(--glass-surface-high)+ Tailwind arbitrary classhover:bg-[var(--glass-surface-mid)]components/ui/Input.jsbackground: var(--glass-surface-high)components/MobileNavigation.jsbackground: var(--glass-surface-mid)These are residual migration targets the convoy didn't anticipate.
Per Brief 7's own note ("If you need to add a fourth allowlist entry, that's a design-system decision — open a new convoy"), the right call is to ship the gate NOW with a 6-entry allowlist (3 chrome + 3 pending-migration) and track the cleanup separately.
The 3 pending entries are tagged with inline
# TODO:comments inci.ymlnaming the follow-up convoy.Follow-up convoy seeded
.convoys/migrate-button-input-mobilenav-to-glass-primitive.md(113 lines) — full architect-ready seed with:Local verification — Brief 7's pre-merge tests
Positive test (clean
main)After the allowlist filter: 0 violations. ✅
Negative test (per Brief 7 § Pre-merge negative test)
Injected a scratch line at EOF of
pages/profile.js:Re-ran the gate logic —
pages/profile.jscorrectly flagged as 1 violation. Reverted. Re-ran — back to 0 violations. ✅The scratch change was NOT committed (per Brief 7's instructions).
Files
.github/workflows/ci.yml.convoys/migrate-button-input-mobilenav-to-glass-primitive.md.convoys/unify-glass-panel-surfaces.mdstatus: closing+queued_followupNet diff: +203 / -3.
Convoy closeout
Once this merges, all 7 briefs of
unify-glass-panel-surfacesare landed and the convoy's success metric is met:Status moves from
open→closingon merge; the queuedmigrate-button-input-mobilenav-to-glass-primitiveconvoywill eventually shrink the allowlist back to 3 entries and fully
close the loop.
Acceptance criteria
ci.ymlcontains the Check 7/7 step matching Brief 7's verbatim grep + allowlist + error annotation pattern.main, the new check is GREEN (no false positives).6 checks → 7 checkson the host job).npm run lintpasses (1 pre-existing unrelated warning).npm run test:run: 118/118 tests pass.Test plan
Forbidden patterns (7 checks)job: should pass green.style={{ background: 'var(--glass-surface-low)' }}somewhere non-allowlisted; verify the gate fails with the expected::error file=...::msgannotation. Close the scratch PR without merging.Related
.convoys/unify-glass-panel-surfaces.md.convoys/unify-glass-panel-surfaces/brief-7-forbidden-bespoke-glass-surface-ci-gate.md.convoys/migrate-button-input-mobilenav-to-glass-primitive.mdslash-ci-minutes).Made with Cursor
The latest updates on your projects. Learn more about Vercel for GitHub.