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>
- 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>