docs(convoys): unify-glass-panel-surfaces + cleanup palette — conductor seed + architect plan #119

Merged
varutasu merged 3 commits from convoys-unify-glass-and-cleanup-palette into main 2026-06-04 15:09:41 -04:00
varutasu commented 2026-06-04 14:27:36 -04:00 (Migrated from github.com)

Summary

Two new convoys + the architect plan for the larger of the two. Human gate 1 (plan approval) on the unify convoy.

Convoys seeded (Conductor — varutasu 2026-06-04)

  1. unify-glass-panel-surfaces (feature, skip: ia) — every panel-shaped surface (modals, popovers, form cards, dashboard widgets, page-level content cards) renders with the same gradient-border corner-light treatment at the appropriate intensity tier. 7 briefs. See .convoys/unify-glass-panel-surfaces.md.
  2. cleanup-card-item-list-and-share-modal-palette (feature, skip: ia,ux,arch) — targeted palette cleanup for CardItem.js list-mode and ShareModal.js interior elements. 2 parallel briefs. See .convoys/cleanup-card-item-list-and-share-modal-palette.md.

Both convoys depends_on: PRs #117 (design-sweep-pass) + #118 (tone-down-card-corner-lights). Hold dispatch until both merge.

Architect plan (just appended, unify-glass-panel-surfaces)

  • ## Architecture section appended to .convoys/unify-glass-panel-surfaces.md with: 4 ratified decisions (D1-D4), file plan (15 rows), test plan, risk list (8 entries), decomposition table, and the verified slice_dependencies block.
  • 7 implementer briefs written to .convoys/unify-glass-panel-surfaces/brief-{1..7}-*.md, each self-contained with verbatim code shapes, acceptance criteria, and rationale.
  • Boot-the-brief check — all 4-layer recipes verified against post-PR-#118 styles/globals.css; box-shadow preservation chains verified against current Layout.js + TopSearchBar.js; .card deletion verified clean (single rule, L729-733); CI gate shape modeled on existing forbidden-modal-shell-without-primitive job.

Decisions ratified (do not renegotiate mid-flight)

  • D1. <GlassSurface> grows cornerLights = 'subtle' | 'chrome' | 'none', default 'subtle' (matches .glass-panel-strong's PR-#118 recipe).
  • D2. Retire .card entirely; migrate all 8 consumers to .glass-panel rounded-3xl. Single panel vocabulary. Per-site escape hatch documented in Brief 5.
  • D3. Mobile drawer uses subtle tier (.glass-panel-strong), not chrome.
  • D4. CI gate scopes to JSX inline-style usage only. 3-entry allowlist: components/ui/GlassSurface.js, components/Layout.js, components/ui/TopSearchBar.js.

Decomposition (1 brief = 1 PR; all <100 LOC)

# Title Files depends_on
1 Upgrade <GlassSurface> primitive components/ui/GlassSurface.js, test/components/ui-primitives.test.js
2 Auth form cards → .glass-panel-strong pages/login.js, pages/signup.js
3 Floating popovers (sidebar dropdown, mobile drawer, TopSearchBar UserMenu) components/Layout.js, components/ui/TopSearchBar.js, test/components/Layout.test.js 1
4 BulkSelectionToolbar migration + token sweep components/BulkSelectionToolbar.js 1
5 Retire .card; migrate 8 consumers pages/profile.js, pages/settings.js, pages/community/collections.js, components/CollectionsPageView.js, styles/globals.css
6 Landing nav bar → .page-header-glass pages/index.js
7 forbidden-bespoke-glass-surface CI gate .github/workflows/ci.yml 1, 2, 3, 4, 5, 6

Briefs 1, 2, 5, 6 are parallel-safe (no deps, disjoint files). 3 + 4 wait for 1. 7 runs LAST.

Test plan summary

  • Brief 1: 3 new assertions on <GlassSurface> in test/components/ui-primitives.test.js.
  • Brief 3: 2 new regression-lock assertions in test/components/Layout.test.js.
  • Brief 7: pre-merge negative test (scratch-and-revert) documented in PR description.
  • Visual-diff baseline refresh required after Brief 1 lands (Modal / StatCard / landing feature cards all gain corner lights). Queue on Linux per AGENTS.md § Testing.

Risk highlights

  • Brief 1 adds border: 1px solid transparent to every <GlassSurface> consumer — 2px geometry shift. Modal/StatCard/landing cards are not pixel-sensitive (verified). Visual-diff baseline refresh is the mitigation.
  • Brief 5 deletes .card entirely (aggressive). Escape hatch: per-site fallback to inline style={{ background: 'var(--bg-secondary)' }} if any of the 8 consumers regresses; ≤1 escape-hatch use is acceptable, >1 means hold the deletion.
  • This PR depends on PR #117 + PR #118. Hold implementer dispatch until both are on main.

Human gate 1 — plan approval

Architect stops here. Please review:

  1. The convoy file (.convoys/unify-glass-panel-surfaces.md) — especially the new ## Architecture section and the 4 ratified Decisions.
  2. The 7 brief files under .convoys/unify-glass-panel-surfaces/.
  3. The risk list — are any of the 8 entries worth holding the plan for?

When ready, comment "approved, run implementers" and I'll dispatch Briefs 1, 2, 5, 6 in parallel (parallel-safe per slice_dependencies). Briefs 3 + 4 will follow Brief 1; Brief 7 runs last.

The cleanup-card-item-list-and-share-modal-palette convoy needs no architect (skip: arch) — its 2 briefs are seeded as scope sketches in the convoy file itself and ready for implementer dispatch independently.

Test plan

  • Read the new ## Architecture section in .convoys/unify-glass-panel-surfaces.md.
  • Spot-check 2-3 brief files (recommend: Brief 1 for the primitive contract, Brief 5 for the .card retirement, Brief 7 for the CI gate shape).
  • Confirm Decisions D1-D4 align with the user's design direction.
  • Reply "approved" or push back on any specific decision / brief.
## Summary Two new convoys + the architect plan for the larger of the two. Human gate 1 (plan approval) on the unify convoy. ### Convoys seeded (Conductor — `varutasu` 2026-06-04) 1. **`unify-glass-panel-surfaces`** (`feature`, skip: `ia`) — every panel-shaped surface (modals, popovers, form cards, dashboard widgets, page-level content cards) renders with the same gradient-border corner-light treatment at the appropriate intensity tier. 7 briefs. See `.convoys/unify-glass-panel-surfaces.md`. 2. **`cleanup-card-item-list-and-share-modal-palette`** (`feature`, skip: `ia,ux,arch`) — targeted palette cleanup for `CardItem.js` list-mode and `ShareModal.js` interior elements. 2 parallel briefs. See `.convoys/cleanup-card-item-list-and-share-modal-palette.md`. Both convoys `depends_on:` PRs #117 (design-sweep-pass) + #118 (tone-down-card-corner-lights). Hold dispatch until both merge. ### Architect plan (just appended, `unify-glass-panel-surfaces`) - `## Architecture` section appended to `.convoys/unify-glass-panel-surfaces.md` with: 4 ratified decisions (D1-D4), file plan (15 rows), test plan, risk list (8 entries), decomposition table, and the verified slice_dependencies block. - 7 implementer briefs written to `.convoys/unify-glass-panel-surfaces/brief-{1..7}-*.md`, each self-contained with verbatim code shapes, acceptance criteria, and rationale. - Boot-the-brief check ✅ — all 4-layer recipes verified against post-PR-#118 `styles/globals.css`; box-shadow preservation chains verified against current `Layout.js` + `TopSearchBar.js`; `.card` deletion verified clean (single rule, L729-733); CI gate shape modeled on existing `forbidden-modal-shell-without-primitive` job. ### Decisions ratified (do not renegotiate mid-flight) - **D1.** `<GlassSurface>` grows `cornerLights = 'subtle' | 'chrome' | 'none'`, default `'subtle'` (matches `.glass-panel-strong`'s PR-#118 recipe). - **D2.** Retire `.card` entirely; migrate all 8 consumers to `.glass-panel rounded-3xl`. Single panel vocabulary. Per-site escape hatch documented in Brief 5. - **D3.** Mobile drawer uses subtle tier (`.glass-panel-strong`), not chrome. - **D4.** CI gate scopes to JSX inline-style usage only. 3-entry allowlist: `components/ui/GlassSurface.js`, `components/Layout.js`, `components/ui/TopSearchBar.js`. ### Decomposition (1 brief = 1 PR; all <100 LOC) | # | Title | Files | depends_on | | - | - | - | - | | 1 | Upgrade `<GlassSurface>` primitive | `components/ui/GlassSurface.js`, `test/components/ui-primitives.test.js` | — | | 2 | Auth form cards → `.glass-panel-strong` | `pages/login.js`, `pages/signup.js` | — | | 3 | Floating popovers (sidebar dropdown, mobile drawer, TopSearchBar UserMenu) | `components/Layout.js`, `components/ui/TopSearchBar.js`, `test/components/Layout.test.js` | 1 | | 4 | `BulkSelectionToolbar` migration + token sweep | `components/BulkSelectionToolbar.js` | 1 | | 5 | Retire `.card`; migrate 8 consumers | `pages/profile.js`, `pages/settings.js`, `pages/community/collections.js`, `components/CollectionsPageView.js`, `styles/globals.css` | — | | 6 | Landing nav bar → `.page-header-glass` | `pages/index.js` | — | | 7 | `forbidden-bespoke-glass-surface` CI gate | `.github/workflows/ci.yml` | 1, 2, 3, 4, 5, 6 | Briefs 1, 2, 5, 6 are parallel-safe (no deps, disjoint files). 3 + 4 wait for 1. 7 runs LAST. ### Test plan summary - Brief 1: 3 new assertions on `<GlassSurface>` in `test/components/ui-primitives.test.js`. - Brief 3: 2 new regression-lock assertions in `test/components/Layout.test.js`. - Brief 7: pre-merge negative test (scratch-and-revert) documented in PR description. - **Visual-diff baseline refresh required** after Brief 1 lands (Modal / StatCard / landing feature cards all gain corner lights). Queue on Linux per AGENTS.md § Testing. ### Risk highlights - Brief 1 adds `border: 1px solid transparent` to every `<GlassSurface>` consumer — 2px geometry shift. Modal/StatCard/landing cards are not pixel-sensitive (verified). Visual-diff baseline refresh is the mitigation. - Brief 5 deletes `.card` entirely (aggressive). Escape hatch: per-site fallback to inline `style={{ background: 'var(--bg-secondary)' }}` if any of the 8 consumers regresses; ≤1 escape-hatch use is acceptable, >1 means hold the deletion. - This PR depends on PR #117 + PR #118. Hold implementer dispatch until both are on `main`. ## ⛔ Human gate 1 — plan approval Architect stops here. Please review: 1. The convoy file (`.convoys/unify-glass-panel-surfaces.md`) — especially the new `## Architecture` section and the 4 ratified Decisions. 2. The 7 brief files under `.convoys/unify-glass-panel-surfaces/`. 3. The risk list — are any of the 8 entries worth holding the plan for? When ready, comment **"approved, run implementers"** and I'll dispatch Briefs 1, 2, 5, 6 in parallel (parallel-safe per slice_dependencies). Briefs 3 + 4 will follow Brief 1; Brief 7 runs last. The `cleanup-card-item-list-and-share-modal-palette` convoy needs no architect (skip: arch) — its 2 briefs are seeded as scope sketches in the convoy file itself and ready for implementer dispatch independently. ## Test plan - [ ] Read the new `## Architecture` section in `.convoys/unify-glass-panel-surfaces.md`. - [ ] Spot-check 2-3 brief files (recommend: Brief 1 for the primitive contract, Brief 5 for the `.card` retirement, Brief 7 for the CI gate shape). - [ ] Confirm Decisions D1-D4 align with the user's design direction. - [ ] Reply "approved" or push back on any specific decision / brief.
vercel[bot] commented 2026-06-04 14:27:42 -04:00 (Migrated from github.com)

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tcg-vault Error Error Jun 5, 2026 6:59pm

Request Review

[vc]: #jsz7k2rIeZRKlAM0v2ioA3v8SQWML99tLatT7BMppQ8=:eyJpc01vbm9yZXBvIjp0cnVlLCJ0eXBlIjoiZ2l0aHViIiwicHJvamVjdHMiOlt7Im5hbWUiOiJ0Y2ctdmF1bHQiLCJwcm9qZWN0SWQiOiJwcmpfRjZXOEVvRkd3Y0g3aWVGcnRvRlNlOXdVVkFhNSIsImxpdmVGZWVkYmFjayI6eyJyZXNvbHZlZCI6MCwidW5yZXNvbHZlZCI6MCwidG90YWwiOjAsImxpbmsiOiIifSwiaW5zcGVjdG9yVXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3JhbmRhbGwtc3RpbGx3ZWxscy1wcm9qZWN0cy90Y2ctdmF1bHQvQ3lNMnBmeHhMajRjczVvUVZYaDVZWk1TUjVVYiIsInByZXZpZXdVcmwiOiIiLCJuZXh0Q29tbWl0U3RhdHVzIjoiRkFJTEVEIiwicm9vdERpcmVjdG9yeSI6bnVsbH1dLCJyZXF1ZXN0UmV2aWV3VXJsIjoiaHR0cHM6Ly92ZXJjZWwuY29tL3ZlcmNlbC1hZ2VudC9yZXF1ZXN0LXJldmlldz9vd25lcj12YXJ1dGFzdSZyZXBvPXRjZy12YXVsdCZwcj0xMTkifQ== The latest updates on your projects. Learn more about [Vercel for GitHub](https://vercel.link/github-learn-more). | Project | Deployment | Actions | Updated (UTC) | | :--- | :----- | :------ | :------ | | [tcg-vault](https://vercel.com/randall-stillwells-projects/tcg-vault) | ![Error](https://vercel.com/static/status/error.svg) [Error](https://vercel.com/randall-stillwells-projects/tcg-vault/CyM2pfxxLj4cs5oQVXh5YZMSR5Ub) | | Jun 5, 2026 6:59pm | <a href="https://vercel.com/vercel-agent/request-review?owner=varutasu&repo=tcg-vault&pr=119" rel="noreferrer"><picture><source media="(prefers-color-scheme: dark)" srcset="https://agents-vade-review.vercel.sh/request-review-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://agents-vade-review.vercel.sh/request-review-light.svg"><img src="https://agents-vade-review.vercel.sh/request-review-light.svg" alt="Request Review"></picture></a>
github-actions[bot] commented 2026-06-04 14:27:47 -04:00 (Migrated from github.com)

Pipeline Health

Build + CI gates

Gate Status
Vercel build (Preview) pass
CI: Lint pass
CI: Schema map fresh skipped
Preview smoke pass
Visual diff ⏭ skipped or pending

Build runs on Vercel; this CI runs lint and schema-map drift only (no duplicate build).

Role reports

Role Status
Reviewer report pending
A11y audit pending
Design system audit pending

See individual comments above for details. This rollup updates automatically.

<!-- pipeline-rollup --> ## Pipeline Health ### Build + CI gates | Gate | Status | | --- | --- | | Vercel build (Preview) | ✅ pass | | CI: Lint | ✅ pass | | CI: Schema map fresh | ❌ skipped | | Preview smoke | ✅ pass | | Visual diff | ⏭ skipped or pending | _Build runs on Vercel; this CI runs lint and schema-map drift only (no duplicate build)._ ### Role reports | Role | Status | | --- | --- | | Reviewer report | ⏳ pending | | A11y audit | ⏳ pending | | Design system audit | ⏳ pending | See individual comments above for details. This rollup updates automatically.
Sign in to join this conversation.
No description provided.