Development record
plugin-metadata-lockstep-update
specclosedspc-2609211957080006
Summary
The design record for itd-69 as delivered in v0.1.0: launch.CheckLockstep
reads the version and manifest fields across the plugin's duplicated
metadata surfaces and refuses drift; written on 2026-09-21 to close a record
that shipped without one.
Scope, as delivered
- The check (
internal/core/launch/lockstep.go): the ADR-pinned path list (plugin.jsonin both locations,.claude-plugin/marketplace.json), per-field comparison, a distinct result for agreement, drift, non-semver and an unreadable contract (criterion 1). - The tree rule:
TreeDevrequires absent version keys per adr-19 and reports a present one as drift;TreePublicrequires agreement (criterion 2). - No bypass: the check exposes no skip or dirty flag;
launch --dry-runruns it unconditionally and the release gate reads its result (criterion 3).
How the criteria are satisfied
All three by scope 1 to 3 as shipped (lockstep_test.go: agreement, drift,
non-semver, contract unreadable, dev keys absent).
Frontmatter
| id | spc-2609211957080006 |
|---|---|
| type | spec |
| lifecycle | closed |
.abcd/development/specs/closed/spc-2609211957080006-plugin-metadata-lockstep-update.md
open on GitHub ↗ · commit history ↗
References1
- itd-69Plugin Metadata Stays Consistent Across Every Duplicated Surfaceimplements
mentions1
- adr-19The plugin version lives ONLY in the released artifact; the working tree stays unversioned, and the version location is chosen by a schema-validated decision, not hard-coded