scripts/designbook-refresh.mjs chains the automatable steps
(check->pull->sync->ir->adapt-lit->parity) and stops for the human drift-triage
step, propagating the adapter-contract exit codes (3=stop for triage, 4=parity
fail). Gating steps call the node scripts directly so make doesn't collapse the
3/4 codes to 2. Best-effort steps (check/pull/sync) warn and continue; --no-pull
/--no-check/--no-parity flags. Documented the loop in stack-and-commands.md and a
step-6 drift-resolution runbook in designbook/README.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Render every <wn-*> in a real browser (Playwright, --no-sandbox; reuses an
external static server when present) and write the adapter-contract parity result
to adapters/lit/parity/_parity.json:
- Contract parity: element must upgrade + carry no attribute-mismatch vs IR
(computed statically via scaffold.componentDrift, avoiding runtime
type-coercion false positives). prop-missing is a coverage note, not a failure.
- Visual parity: render smoke (non-empty + positive box) + per-component
screenshot artifact (gitignored). Pixel-exact regression stays with the
Playwright baseline suite; IR exemplars are gallery cards, not single-component
baselines, so they are the human reference, not an auto pixel gate.
- Result: 10 components, contractFail=0 visualFail=0, PipelineStrip skipped
(wn-pipeline-strip rename drift). Exit 4 on failure.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- scripts/release.mjs + `make release VERSION=x.y.z`: guarded release cut —
bumps package.json, relabels CHANGELOG [Unreleased] → [x.y.z], commits, and
creates the annotated git tag. Refuses on dirty tree, existing tag, duplicate
section, or empty [Unreleased]. Never pushes (outward step stays manual).
- DesignSystemIntroduction.md §6: document the release ritual; §9: fix the
stale bootstrap host + tag note.
- README: bump the install pin to the first real tag (v0.3.0).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- designbook/ local mirror of the Claude Design project, with conventions
(@dsCard/manifest) and freshness marker docs.
- make designbook-sync + scripts/designbook-sync.mjs: record what a sync
changed into RecentChanges.md, grouped by layer, with last /design-sync time.
- make designbook-check + scripts/check_designbook_staleness.py: llm-connect
(claude-code adapter) backend that detects when the cloud designbook moved
ahead and warns the local mirror is outdated.
- .design-sync/config.json: recorded target project pin (WhyNot Design System).
- WHYNOT-WP-0002: workplan for a technology-neutral designbook IR with
scaffold+drift-detect stack adapters (Lit reference).
- gitignore Python artifacts.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>