feat: sync the kit — deploy promotion, dependency position, fleet telemetry (1.1.0) - #28
Conversation
…emetry (1.1.0)
Regenerates harness/ from delivery-standard/kit (138 files, verified in sync) and wires
the new files into the installer. Three additions land together: the second half of the
deploy rail, the standard's first position on third-party components, and fleet-level
visibility of gate outcomes. Full rationale in the CHANGELOG and in the kit's own commits.
The installer needed real changes, and the test suite is what found them — which is the
argument for syncing in the same batch rather than deferring it:
- Five new payload files installed nowhere. test_payload_completeness caught all five.
The three closing-phase skeletons map to their FINAL names (ROLLBACK.md, ALERTS.md,
INCIDENT-PLAYBOOK.md) rather than to a templates directory, because unlike specs and
spikes there is exactly one of each per repo — the same reasoning that puts
CLAUDE.md.template at CLAUDE.md.
- Adding those mappings then failed 53 tests, correctly: the installer fails closed on
any FILE_MAP source missing from the payload, and the synthetic fixture had not grown
with the map. The fixture is the thing that was wrong, not the invariant.
- The golden enterprise-tree snapshot gained exactly nine entries, which is the useful
artifact here: it is the proof that a real install now produces the promotion workflow,
the dependency gate's scan and ledger, the telemetry report and schema, dependabot,
and the three skeletons.
Version is MINOR, not major, and the judgement is worth stating: `dependency-gate` is a
new blocking required check, which by this project's own convention reads as breaking.
But nothing changes in an installed repo until an operator runs /sdlc-upgrade AND
re-applies branch protection — both deliberate, scripted actions. The migration note
leads with that rather than burying it.
532 passed, 6 skipped — the same as before the sync.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Version confirmed: 1.1.0 stands. Matt's call, 2026-08-01. Rationale on record: |
Confirmed by Matt. A patch release rather than folding into 1.1.0: every change in the stack is corrective, reconciling prose with what 1.0.0 already made the gates enforce. Nothing becomes stricter. One requirement is removed — Phase 1 no longer blocks on decision-list.md, a file nothing ever produced — so no passing gate regresses. The receipts that already blocked still block; the plugin now tells you what to write and ships templates. Bumps plugin.json and marketplace.json, which both carry the version. This releases from 1.0.0 and must land BEFORE the 1.1.0 kit sync (#28), which is based on the same 1.0.0 tree. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEA6GZUG9NKNQYrJKyDGdb
|
Merge-order note: the #29–#36 fix stack (#37 → #38 → #39 → #40) now ships as 1.0.1, bumped from the same 1.0.0 tree this PR is based on. Please merge that stack before this one. Landing 1.1.0 first would make the 1.0.1 bump a version regression, and Merged in the right order, this PR takes a trivial conflict on those three files: keep 1.1.0 for the version, and keep both changelog sections with |
The 1.0.1 corrective stack (#37-#40) landed on master first, so this branch takes its version and changelog. Resolution: 1.1.0 is the shipped version and supersedes 1.0.1; both changelog sections are kept, newest first. Two corrections made while resolving: - marketplace.json auto-merged to 1.0.1 because this branch bumped plugin.json and never touched the marketplace manifest. Both now read 1.1.0; shipping them disagreeing is how a marketplace serves a stale version. - 1.1.0 was dated 2026-07-31, the day the branch was cut. It ships today, so it carries today's date rather than sitting above 1.0.1 with an earlier one. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEA6GZUG9NKNQYrJKyDGdb
Regenerates
harness/fromdelivery-standard/kit(138 files, verified in sync) and wires the new files into the installer.Pairs with MCKRUZ/intent-driven-development#39, #40, #41 — merge those first; this ships their payload.
What the installer needed, and why syncing in the same batch mattered
The test suite found three things the standard's own repo cannot see. This is the argument for not deferring the sync:
Five new payload files installed nowhere.
test_payload_completenesscaught all five. The three closing-phase skeletons map to their final names (ROLLBACK.md,ALERTS.md,INCIDENT-PLAYBOOK.md) rather than a templates directory — unlike specs and spikes there is exactly one of each per repo, the same reasoning that putsCLAUDE.md.templateatCLAUDE.md.Adding those mappings then failed 53 tests, correctly. The installer fails closed on any
FILE_MAPsource missing from the payload, and the synthetic fixture had not grown with the map. The fixture was wrong, not the invariant — so the fixture grew.The golden
enterprise-treesnapshot gained exactly nine entries. That is the useful artifact here: proof that a real install now produces the promotion workflow, the dependency gate's scan and ledger, the telemetry report and schema, dependabot, and the three skeletons.Version: minor, and the judgement is worth stating
dependency-gateis a new blocking required check, which by this project's own convention reads as breaking. I went 1.1.0 because nothing changes in an installed repo until an operator runs/sdlc-upgradeand re-applies branch protection — both deliberate, scripted actions. The migration note leads with that rather than burying it.Say so if you'd rather this were 2.0.0 — it is a defensible read and easy to change before merge.
Test plan
uv run --project scripts python -m pytest scripts/tests -q— 532 passed, 6 skipped, identical to the pre-sync baselinepython scripts/sync_kit.py --check— in sync, 138 filesharness/is generated; no file in it was hand-edited🤖 Generated with Claude Code