Skip to content

Migrate off the shadcn contract pin (v2.3.0 → production v3.0.0) #48

Description

@ryandmonk

packages/contracts/shadcn-ui.dspack.json is pinned to 805732c (shadcn/ui v2.3.0, 8 components) rather than tracking dspack@main, which now carries the v3.0.0 production contract (32 components) merged in aestheticfunction/dspack#35.

Full record: docs/CONTRACT-PIN.md.

The pinned contract is not current shadcn/ui coverage. It describes 8 of the 32 components the contract now governs.

Why the pin exists

The shadcn renderers, the emit profile, and the scenario surfaces here were all built against v2.3.0. Following main would break catalog builds and scenario surfaces rather than widen coverage.

The concrete harm the pin fixes: check:sync runs in CI before the unit tests, so once upstream moved, unit tests, type checks and Playwright were all skipped rather than run. The repo's test evidence silently stopped being produced — which is exactly the condition under which renderer-parity work cannot be trusted.

Removal condition

Only after the dspack-emit representation foundation lands and the profile migration completes — the emitter must be able to represent the production catalog before this repo consumes it. Gated on the checklist in aestheticfunction/dspack-emit#28.

Then: remove the pin block, node scripts/check-sync.mjs --write, rebuild catalogs, re-record scenario surfaces, commit together.

Enforcement

The sync check verifies the pinned artifact's sha256 every run (a pinned ref must be immutable), fails on local drift, and always reports how far behind main the pin sits. Verified: clean → exit 0, tampered hash → exit 1, one-byte local edit → exit 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions