diff --git a/CHANGELOG.md b/CHANGELOG.md index d86ecb4..4331209 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,26 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Version ## [Unreleased] +### Added + +- **Lit adapter completed + refresh pipeline** (WHYNOT-WP-0002, Phases 3–6). The + one-way `React → designbook/ → ir/ → adapters/lit` pipeline is now end-to-end: + - `make adapt-lit` gains **component scaffold + drift** (T07): parses + `src/elements/*.js`, compares each `` to its IR contract, and writes + per-component drift reports + a machine roll-up (`adapters/lit/drift/`), with + write-once stubs (`adapters/lit/stubs/`) for new components — never overwriting + hand-authored sources. Severity split: actionable drift gates (exit 3); + `non-portable`/`prop-extra` are informational. + - `make parity-lit` (T08): renders every `` in a real browser and asserts + **contract + visual parity**, writing `adapters/lit/parity/_parity.json` + (exit 4 on failure). + - `make designbook-refresh` (T09): the refresh orchestrator + (check→pull→sync→ir→adapt-lit→drift-triage→parity) honouring the adapter + exit-code contract, plus a drift-resolution runbook in `designbook/README.md`. + - `make adapt-plain-css` (T10): a deliberately-unfinished second-adapter **smoke** + proving the IR/adapter seam — a non-Lit adapter consuming the same `ir/` with the + same contract shapes and zero `ir/` changes. + ## [0.4.0] — 2026-06-28 ### Fixed diff --git a/RecentChanges.md b/RecentChanges.md index 25c512a..7122300 100644 --- a/RecentChanges.md +++ b/RecentChanges.md @@ -2,7 +2,7 @@ Snapshot of the last designbook integration. Regenerated by `make designbook-sync`. -- Generated: 2026-06-23T19:25:28Z +- Generated: 2026-06-30T07:18:08Z - Compared: working tree (uncommitted) - Last /design-sync: 2026-06-23T19:25:28Z @@ -10,48 +10,6 @@ Snapshot of the last designbook integration. Regenerated by `make designbook-syn > into `CHANGELOG.md` under `## [Unreleased]` before releasing; that is the file CI > enforces (`pnpm check`). The designbook itself is synced via `/design-sync`, not this script. -## Changed files +## No changes -### Designbook -- `ADDED ` designbook/_ds_bundle.js (+1396 / -0) -- `ADDED ` designbook/_ds_manifest.json (+1 / -0) -- `ADDED ` designbook/.design-pull.json (+18 / -0) -- `ADDED ` designbook/colors_and_type.css (+293 / -0) -- `ADDED ` designbook/preview/brand-iconography.html (+36 / -0) -- `ADDED ` designbook/preview/brand-lockups.html (+26 / -0) -- `ADDED ` designbook/preview/brand-logo.html (+21 / -0) -- `ADDED ` designbook/preview/brand-wireframe-motif.html (+43 / -0) -- `ADDED ` designbook/preview/colors-accent.html (+33 / -0) -- `ADDED ` designbook/preview/colors-borders.html (+25 / -0) -- `ADDED ` designbook/preview/colors-neutrals.html (+36 / -0) -- `ADDED ` designbook/preview/colors-signal.html (+25 / -0) -- `ADDED ` designbook/preview/colors-status-functional.html (+31 / -0) -- `ADDED ` designbook/preview/comp-buttons.html (+40 / -0) -- `ADDED ` designbook/preview/comp-empty-placeholder.html (+38 / -0) -- `ADDED ` designbook/preview/comp-inputs.html (+30 / -0) -- `ADDED ` designbook/preview/comp-labels-tags.html (+44 / -0) -- `ADDED ` designbook/preview/comp-left-nav.html (+85 / -0) -- `ADDED ` designbook/preview/comp-pipeline.html (+30 / -0) -- `ADDED ` designbook/preview/comp-prototype-card.html (+46 / -0) -- `ADDED ` designbook/preview/comp-topnav.html (+37 / -0) -- `ADDED ` designbook/preview/page-beta-invitation.html (+104 / -0) -- `ADDED ` designbook/preview/page-landing-auth.html (+224 / -0) -- `ADDED ` designbook/preview/page-prototype-detail.html (+158 / -0) -- `ADDED ` designbook/preview/page-signals-dashboard.html (+135 / -0) -- `ADDED ` designbook/preview/spacing-elevation.html (+26 / -0) -- `ADDED ` designbook/preview/spacing-radii.html (+24 / -0) -- `ADDED ` designbook/preview/spacing-scale.html (+28 / -0) -- `ADDED ` designbook/preview/type-body.html (+23 / -0) -- `ADDED ` designbook/preview/type-display.html (+23 / -0) -- `ADDED ` designbook/preview/type-headings.html (+20 / -0) -- `ADDED ` designbook/preview/type-mono-eyebrows.html (+42 / -0) -- `ADDED ` designbook/preview/type-serif-quote.html (+17 / -0) -- `ADDED ` designbook/REACT_CANONICAL_DECISION.md (+60 / -0) -- `ADDED ` designbook/styles.css (+9 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/Atoms.jsx (+102 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/Chrome.jsx (+163 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/data.jsx (+71 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/DocView.jsx (+102 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/index.html (+77 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/README.md (+31 / -0) -- `ADDED ` designbook/ui_kits/whynot-control/Screens.jsx (+274 / -0) +The design surface is unchanged since the last sync. \ No newline at end of file diff --git a/workplans/WHYNOT-WP-0002-designbook-stack-adapters.md b/workplans/WHYNOT-WP-0002-designbook-stack-adapters.md index 4cc0df9..35cef32 100644 --- a/workplans/WHYNOT-WP-0002-designbook-stack-adapters.md +++ b/workplans/WHYNOT-WP-0002-designbook-stack-adapters.md @@ -4,14 +4,33 @@ type: workplan title: "Technology-neutral designbook with stack adapters (Lit reference)" domain: infotech repo: whynot-design -status: proposed +status: finished owner: claude topic_slug: custodian created: "2026-06-22" -updated: "2026-06-22" +updated: "2026-06-30" state_hub_workstream_id: "0a3511c1-1771-438b-9364-104d8f0de2f8" --- +> **Completed 2026-06-30.** All 11 tasks done. The full pipeline is in place: +> `Claude Design (React) → designbook/ → ir/ → adapters/lit` with `make ir`, +> `make adapt-lit` (tokens + scaffold + drift), `make parity-lit`, the +> `make designbook-refresh` orchestrator, and a plain-css second-adapter smoke +> proving the IR seam. Parity passes (contractFail=0, visualFail=0). +> +> **Open governance items (surfaced by the now-working drift machinery, not WP-0002 +> tasks):** three actionable drifts remain for Claude-Design-side resolution — they +> are language-modeling decisions, not stack defects, so per `designbook-propagation.md` +> they must be fixed upstream and re-propagated (never patched only in the stack): +> 1. **PipelineStrip** — IR tag `wn-pipeline-strip` (from the React component name) +> vs the hand-authored `wn-pipeline`; decide the canonical name in Claude Design. +> 2. **PageHeader.actions** — modelled as a *slot* in Lit but extracted as a *prop*; +> the React designbook should express it as slotted content. +> 3. **Sidebar.current** — IR carries a `current` prop/variant the element models as +> item-level `active` state; reconcile in Claude Design. +> Until then `make adapt-lit`/`designbook-refresh` exit `3` by design (stop for +> triage). This is the system working as intended, not unfinished work. + # Technology-neutral designbook with stack adapters (Lit reference) ## Problem @@ -181,7 +200,7 @@ re-running is a no-op when nothing changed. Add `make adapt-lit` (tokens portion ```task id: WHYNOT-WP-0002-T07 -status: todo +status: done priority: high state_hub_task_id: "00ed1aff-7724-4e90-9a51-fd58699480ca" ``` @@ -201,7 +220,7 @@ hand-authored element**. Map React prop types → Lit property declarations. Wir ```task id: WHYNOT-WP-0002-T08 -status: todo +status: done priority: medium state_hub_task_id: "1f52ca1f-64a6-4643-992f-f0b4812461a0" ``` @@ -264,7 +283,7 @@ visual tests for determinism. ```task id: WHYNOT-WP-0002-T09 -status: todo +status: done priority: high state_hub_task_id: "07e60a34-0c62-4f8b-848b-d3b8d4292a18" ``` @@ -292,7 +311,7 @@ human-in-loop runbook for step 6. Document in `.claude/rules/stack-and-commands. ```task id: WHYNOT-WP-0002-T10 -status: todo +status: done priority: low state_hub_task_id: "483de131-f580-4031-85df-72cf70a45679" ```