X2 Lock
Copy the approved design artifact down into the repo, verify it is complete, stamp its provenance,
and request the lock. The lock is the acceptance contract for the slice; everything the builder
ships is held to it. The pilot ran without this step and paid twice: the design system was never
imported so the client's tokens were scraped from what happened to be readable inline (MET-04), and
the prototype was treated as locked for days before anyone asked for the approval (turn 25).
The import
Pull the complete artifact set from the design project into design/prototype/ (the canonical
home, INV-01):
- the prototype source (
<name>.dc.html),
- the complete design-system export under
_ds/ (the token css, component css, fonts),
- the supporting scripts.
The sanctioned route is the on-disk export: the owner places the design project's complete export
in the repo (a handoff folder under design/), the lock copies out what it needs and deletes the
handoff. A context-carried import (the design MCP) is the fallback for small artifact sets; it
cannot carry binaries, and the third project moved to the on-disk route after channel limits bit.
Either way, verify the copied tree against its source: the file inventory matches and no copy
artifacts exist (a duplicated or nested directory survived the third project's import verification
and was caught only by the owner's eye).
Never derive tokens from values readable inline in the prototype source. The pilot did, and
silently produced a partial, light-only, placeholder token set with the coverage floor skipped.
The client's token source derives from the export on disk, nothing else.
Done-checks (all must pass before requesting the lock)
- The token file on disk defines the full variable set: the more-than-fifty floor is met, not
skipped.
- Both themes are present: the dark root and the light override.
- Fonts resolve by a named path: binaries checked in, or a self-hosted font package pinned under
the dependency ledger (the pilot's answer; the design MCP cannot carry binaries through context).
design/prototype/README.md records provenance: source design-project URL, import date, the
portion being locked. On approval, it gains the lock stamp.
design/ledger/ exists for the per-slice fidelity ledgers that derivation will add.
- Where a design brief exists for the portion: the copied-down screens and their navigation map
onto the brief's screen inventory and action edges, both directions. An orphan on either side
(a brief surface the prototype lacks, a prototype surface the brief never named) is surfaced at
the lock for a ruling, never silently absorbed.
- The exposure review. A prototype can carry security-shaped choices, and transcription would
ship them. Walk the portion for: entry points it exposes (an admin door on a public page),
identifiers it addresses things by (sequential versus opaque on any public surface), and
embedded exposure values (domains, addresses, ids). Each finding is surfaced for a ruling at
the lock, never silently transcribed; the second project shipped and then moved both instances
it missed (record: NS-3).
Human-turn contract
- Requests gate 2b: the lock (MET-07): the copied-down artifact is approved, explicitly, now.
This is UI-4's chargeable turn. A portion is not locked because work moved on; it is locked
because approval is on record. Request it at this moment, not retroactively.
- The request is put in plain language, the owner's own words; method vocabulary rides alongside,
never instead (P3).
- A re-lock after a spine revision is the same turn again for the affected portions.
Questions this skill used to carry, now ruled (invariants pass, 2026-07-11)
- The locked artifact is the DC source alone. No static render is checked in; a render, if ever
produced, is viewing convenience and never authoritative. Approval happens where the prototype
renders (gate 2a, Claude Design); the lock is the copy-down diff (INV-01, ruled).
- The design system lives under
design/prototype/_ds/, provenance-true where the import
lands. A shared house-system home is deferred with a trigger: the second product reusing the same
system makes it a pinned, hash-ledgered vendored asset under DEP-1, not a shared directory.
- The import is the COMPLETE export (the
.dc.html plus the full _ds/, both themes, more
than fifty variables), per the manifest; never values scraped from the .dc.html (MET-04, ruled).
What this skill must NOT produce
- No tests, no fidelity ledgers, no code. Derivation starts only after the lock is on record.
- No edits to the prototype; a change goes back through design and re-approval.
Next
Gate 2b on record, then derive-tests.
1---2name: lock3description: Use when the prototype is approved at Claude Design (gate 2a) and a slice's portion must be copied down into the repo and locked. Also use when a spine revision touches an already-locked portion and it must be re-locked. Requests gate 2b (the lock). Do not use before gate 2a, and do not derive tests here; that is derive-tests, after the lock.4---56# X2 Lock78Copy the approved design artifact down into the repo, verify it is complete, stamp its provenance,9and request the lock. The lock is the acceptance contract for the slice; everything the builder10ships is held to it. The pilot ran without this step and paid twice: the design system was never11imported so the client's tokens were scraped from what happened to be readable inline (MET-04), and12the prototype was treated as locked for days before anyone asked for the approval (turn 25).1314## The import1516Pull the complete artifact set from the design project into `design/prototype/` (the canonical17home, INV-01):1819- the prototype source (`<name>.dc.html`),20- the **complete** design-system export under `_ds/` (the token css, component css, fonts),21- the supporting scripts.2223The sanctioned route is the on-disk export: the owner places the design project's complete export24in the repo (a handoff folder under `design/`), the lock copies out what it needs and deletes the25handoff. A context-carried import (the design MCP) is the fallback for small artifact sets; it26cannot carry binaries, and the third project moved to the on-disk route after channel limits bit.27Either way, verify the copied tree against its source: the file inventory matches and no copy28artifacts exist (a duplicated or nested directory survived the third project's import verification29and was caught only by the owner's eye).3031Never derive tokens from values readable inline in the prototype source. The pilot did, and32silently produced a partial, light-only, placeholder token set with the coverage floor skipped.33The client's token source derives from the export on disk, nothing else.3435## Done-checks (all must pass before requesting the lock)3637- The token file on disk defines the full variable set: the more-than-fifty floor is met, not38 skipped.39- Both themes are present: the dark root and the light override.40- Fonts resolve by a named path: binaries checked in, or a self-hosted font package pinned under41 the dependency ledger (the pilot's answer; the design MCP cannot carry binaries through context).42- `design/prototype/README.md` records provenance: source design-project URL, import date, the43 portion being locked. On approval, it gains the lock stamp.44- `design/ledger/` exists for the per-slice fidelity ledgers that derivation will add.45- Where a design brief exists for the portion: the copied-down screens and their navigation map46 onto the brief's screen inventory and action edges, both directions. An orphan on either side47 (a brief surface the prototype lacks, a prototype surface the brief never named) is surfaced at48 the lock for a ruling, never silently absorbed.49- **The exposure review.** A prototype can carry security-shaped choices, and transcription would50 ship them. Walk the portion for: entry points it exposes (an admin door on a public page),51 identifiers it addresses things by (sequential versus opaque on any public surface), and52 embedded exposure values (domains, addresses, ids). Each finding is surfaced for a ruling at53 the lock, never silently transcribed; the second project shipped and then moved both instances54 it missed (record: NS-3).5556## Human-turn contract5758- Requests **gate 2b: the lock** (MET-07): the copied-down artifact is approved, explicitly, now.59 This is UI-4's chargeable turn. A portion is not locked because work moved on; it is locked60 because approval is on record. Request it at this moment, not retroactively.61- The request is put in plain language, the owner's own words; method vocabulary rides alongside,62 never instead (P3).63- A re-lock after a spine revision is the same turn again for the affected portions.6465## Questions this skill used to carry, now ruled (invariants pass, 2026-07-11)6667- **The locked artifact is the DC source alone.** No static render is checked in; a render, if ever68 produced, is viewing convenience and never authoritative. Approval happens where the prototype69 renders (gate 2a, Claude Design); the lock is the copy-down diff (INV-01, ruled).70- **The design system lives under `design/prototype/_ds/`**, provenance-true where the import71 lands. A shared house-system home is deferred with a trigger: the second product reusing the same72 system makes it a pinned, hash-ledgered vendored asset under DEP-1, not a shared directory.73- **The import is the COMPLETE export** (the `.dc.html` plus the full `_ds/`, both themes, more74 than fifty variables), per the manifest; never values scraped from the `.dc.html` (MET-04, ruled).7576## What this skill must NOT produce7778- No tests, no fidelity ledgers, no code. Derivation starts only after the lock is on record.79- No edits to the prototype; a change goes back through design and re-approval.8081## Next8283Gate 2b on record, then derive-tests.