Make ir/ the unit of versioned downstream consumption so consuming repos can pin a version, inspect it, and follow changes at their own pace. - T03 ir/manifest.json: per-version inventory + diff anchor with deterministic sha256-over-canonicalised-JSON hashes; no-churn generatedAt; manifest schema. - T07 ir/INDEX.md: human-readable catalog generated by make ir. - T04 .whynot-design.lock sync-point format + lock schema. - T05 npx @whynot/design drift: consumer drift-check (bin entry), exit 0/2/3, --json/--update/--manifest/--version/--lock. - T06 CONSUMING.md guide + examples/consumer-fixture/ runnable demo; README + MultiFrameworkSupport cross-links; fix README version pin (@0.3.0 not @v0.3.0). - T09 CONSUMER_CONTRACT_PARITY.md design-only note (live-UI parity deferred). T02 (publish) and T08 (showcase, blocked on WP-0002 T11) remain wait. Repo stays in dev mode; no outward publish performed. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.3 KiB
Bash
Executable File
39 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Exercise the consumer drift loop against this repo's own ir/manifest.json,
|
|
# without a real npm install. Non-destructive: the committed adopted.lock is
|
|
# copied into a scratch dir; only that copy is mutated.
|
|
#
|
|
# In a REAL consuming repo you would not pass --manifest at all — the installed
|
|
# @whynot/design package supplies its own ir/manifest.json, and the lock lives at
|
|
# ./.whynot-design.lock. Here we point at the repo copy so the demo is hermetic.
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
|
|
REPO_ROOT="$(cd ../.. && pwd)"
|
|
CLI="$REPO_ROOT/bin/whynot-design.mjs"
|
|
MANIFEST="$REPO_ROOT/ir/manifest.json"
|
|
|
|
WORK="$(mktemp -d)"
|
|
trap 'rm -rf "$WORK"' EXIT
|
|
cp adopted.lock "$WORK/.whynot-design.lock"
|
|
LOCK="$WORK/.whynot-design.lock"
|
|
|
|
echo "### 1. Inspect — what's in this version"
|
|
sed -n '1,6p' "$REPO_ROOT/ir/INDEX.md"
|
|
echo
|
|
|
|
echo "### 2. drift — what changed since the adopted (0.2.0) sync-point (expect exit 3)"
|
|
set +e
|
|
node "$CLI" drift --manifest "$MANIFEST" --lock "$LOCK"
|
|
echo "(exit $?)"
|
|
set -e
|
|
echo
|
|
|
|
echo "### 3. drift --update — adopt the current version as the new sync-point"
|
|
node "$CLI" drift --manifest "$MANIFEST" --lock "$LOCK" --update >/dev/null
|
|
echo
|
|
|
|
echo "### 4. drift again — now in sync (expect exit 0)"
|
|
node "$CLI" drift --manifest "$MANIFEST" --lock "$LOCK"
|
|
echo "(exit $?)"
|