fix(demo): pin origin/main + read INDEX.json for layer resolution — drop the newest-tag resolver, purge retired-layer names - #62
Merged
Conversation
…rop the newest-tag resolver, purge retired-layer names Symptom: the demo consumption contract resolved and checked out the newest git tag of the Distribution, then materialized whatever layer tree that tag carried — including layers removed several releases earlier. A stale or renamed layer name resolved silently instead of failing. Change: the clone/checkout flow across the demo skills now pins the Distribution's latest gate-proven `main` (`git pull --ff-only origin main`), asserts the machine-readable layer index's `gateProven` marker is present, and resolves each layer from the index's live entries — a name absent from the live set is looked up under the index's retired tombstones and resolved to its `supersededBy` successor (loud, never silent). Reproducibility is the resolved commit SHA, not a re-consumable tag. Retired layer names are purged from build instructions (the pack-activation worked example + per-pack notes move onto the live feature-pricing / feature-subscription-orders layers; the header-nav affordance is described as shipping inside theme-default without naming the retired overlay). The fold-back content-hygiene gate gains a dead-layer-name sweep so future folds check layer names against the index rather than latching onto a dead name. Validation: python scripts/validate-skills.py exits 0 (0 errors, 0 warnings); sanitization + dead-name grep packs clean over the staged diff.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Symptom
The demo consumption contract resolved and checked out the newest git tag of the Distribution, then materialized whatever layer tree that tag carried — including layers removed several releases earlier. A stale or renamed layer name resolved silently instead of failing. (Snapshot materialization of a retired layer is the failure class this closes.)
Change
The clone/checkout flow across the demo skills now:
main—git cloneonce, thengit pull --ff-only origin main. Never a tag checkout. Tags demote to provenance/audit history.gateProvenmarker is present (that main is at a gate-proven tip, not mid-release) before consuming.retiredtombstones and resolved to itssupersededBysuccessor (loudthrow, never silent).CUSTOMISATIONS.mdas the forensic reproducibility stamp (no re-consumable frozen tag).Retired layer names are purged from build instructions: the pack-activation worked example + per-pack notes move off the retired
reordering-pricing/subscription-ordersbundle names onto the livefeature-pricing/feature-subscription-orderslayers; the header-nav affordance is described as shipping insidetheme-defaultwithout naming the retired overlay. Retirement notes stay only where they help the reader.The fold-back content-hygiene gate gains a dead-layer-name sweep (
iterate-plugin.mdStep 1b §5 + verification gate + anti-patterns): future folds check every Distribution layer name against the index and rewrite a retired name to its successor — kept out ofvalidate-skills.pyon purpose so the index stays the single source of truth rather than forking a blocklist that drifts.Files
dw-demo-base/SKILL.md;dw-demo-base/references/{setup-checks,serializer-reference,iterate-plugin}.md;dw-demo-swift/references/{deserialize-flow,pack-activation,styles-assets,header-menu,integrity-sweep}.md;CHANGELOG.md;.claude-plugin/marketplace.json(4.11.1 → 4.11.2, patch).Validation
python scripts/validate-skills.py→ exit 0 (0 errors, 0 warnings).