docs(spec-kit): verify 1.0.5/1.0.6 and close PR #198's open review notes - #203
Merged
Conversation
…w notes PR #198 widened the Spec Kit pin to `>=0.13.0,<1.1.0` and moved `@adrkit/spec-kit` to 0.1.4, but merged with Copilot's final review still open on three points. Two were documentation sweeps already fixed before the merge; the third was substantive and is fixed here. The pin's whole justification is that its upper bound is a verification boundary rather than a guess. `<1.1.0` admitted 1.0.5 — released at the time, and unverified — and 1.0.6 shipped after. Re-verified on the same maintainer-session terms as the 2026-09-09 addendum: - `extensions/EXTENSION-API-REFERENCE.md` is byte-identical at v1.0.4, v1.0.5, and v1.0.6 (896 lines, SHA-256 `cb037d69fe62c7d8…`). - The loader's only change 1.0.4 → 1.0.5 widens the `__SPECKIT_COMMAND_*__` placeholder class to admit hyphens — strictly more permissive. 1.0.5 → 1.0.6 passes `extension.author` into skill generation through `.get()`. `.extensionignore` handling and `SpecifierSet` parsing are untouched by both. - `specify extension add --dev` on 1.0.5 and 1.0.6 (PyPI, Python 3.12): exit 0, three commands and three skills registered, `after_plan` recorded `optional: true`, and no `test/`, `tsconfig.json`, `package.json`, or `node_modules/` in the installed tree. The sampling rule is now explicit in the manifest, the ADR, and the evidence index, because leaving it implicit is what produced the hole: the bound is verified at minor granularity, so a later 1.0.x patch does not reopen this and 1.1.0 is where the gate fires. Also recorded, not repaired: the 2026-09-09 "installed tree carries only …" row omitted the loader's own `.specify-dev/` staging directory, which a `--dev` install has generated since at least 1.0.4; and 1.0.6 credits `extension.author` in generated skill metadata where 1.0.4 emitted `github-spec-kit`. Two stale "current" statements in ADR-0019 are corrected: the Trade-offs paragraph described a pin to a single upstream minor, and action item 3 still recorded `<0.16.0` as the widened bound. Both now point at the addenda instead of contradicting them. `docs/RELEASING.md`'s adapter recipe showed a lightweight `git tag` while every adapter tag ever pushed is annotated and the lockstep recipe uses `-a`. Schema untouched. `packages/ci` untouched. 2812 pass, 0 fail, 1 skip; typecheck, build, lint, and the changelog/doc-pin/site-grammar/deps/ freeze-hash gates pass, and `adr lint` reports 37 records clean. Claude-Session: https://claude.ai/code/session_01UHoVZxZp529qJg1mgwJqxZ Signed-off-by: Mark Beacom <m@beacom.dev>
Decisions governing this change
Active proposals touching this changeThese are not yet ratified and do not bind this change:
|
There was a problem hiding this comment.
🔵 Needs a closer look
Three documented nit-level issues remain regarding the abbreviated digest and the 1.0.6 attribution summary.
Pull request overview
Documents Spec Kit 1.0.5/1.0.6 verification and synchronizes compatibility evidence, ADR guidance, release instructions, and the 0.1.4 changelog without changing the manifest pin.
Changes:
- Records minor-granularity verification through Spec Kit 1.0.6.
- Updates documentation, tests, ADR evidence, and compatibility references.
- Corrects annotated-tag release guidance.
File summaries
| File | Summary |
|---|---|
site/src/content/docs/spec-kit.mdx |
Updates supported versions. |
README.md |
Updates compatibility claims. |
plan.md |
Updates verification status. |
packages/adapters/spec-kit/test/packaging.test.ts |
Refreshes packaging evidence. |
packages/adapters/spec-kit/test/manifest.test.ts |
Refreshes pin rationale. |
packages/adapters/spec-kit/README.md |
Updates support documentation. |
packages/adapters/spec-kit/extension.yml |
Documents the verification boundary. |
docs/RELEASING.md |
Corrects adapter tag guidance. |
docs/reference-verification-spec-kit-extension.md |
Adds 1.0.5/1.0.6 evidence. |
docs/adr/0019-ship-the-spec-kit-extension-treating-the-spike-no-go-as-a-measurement-artifact.md |
Adds verification addendum and sampling guidance. |
CHANGELOG.md |
Adds the 0.1.4 release entry. |
AGENTS.md |
Updates compatibility references. |
Review details
Suppressed comments (3)
docs/adr/0019-ship-the-spec-kit-extension-treating-the-spike-no-go-as-a-measurement-artifact.md:325
- The accepted ADR repeats the abbreviated
cb037d69fe62c7d8…instead of recording the complete SHA-256. Because this is the durable decision evidence, the digest should be independently verifiable; use the same full value recorded in the reference-verification document rather than an ellipsis.
| `extensions/EXTENSION-API-REFERENCE.md`: `v1.0.4` vs `v1.0.5` vs `v1.0.6` | byte-identical at all three tags (896 lines, SHA-256 `cb037d69fe62c7d8…`). The extension-facing contract does not move inside the `1.0` line. |
docs/reference-verification-spec-kit-extension.md:198
- This new evidence row records only
cb037d69fe62c7d8…rather than a complete SHA-256, so the claimed byte identity cannot be independently verified. The same evidence file records full 64-character digests for its pinned artifacts at lines 48-51; please record the full digest here and keep it identical in the ADR addendum.
| `extensions/EXTENSION-API-REFERENCE.md` at `v1.0.4` vs `v1.0.5` vs `v1.0.6` | **byte-identical across all three** — 896 lines, SHA-256 `cb037d69fe62c7d8…` at every tag. The extension-facing contract did not move inside the `1.0` line. |
packages/adapters/spec-kit/extension.yml:7
- The 1.0.6 change documented in this PR (
docs/reference-verification-spec-kit-extension.md:214-219) changes generatedmetadata.author; it is neither a refactor nor strictly more permissive. Describing all loader changes this way makes the manifest's compatibility rationale factually incomplete. Qualify this summary to call out the metadata attribution change separately.
# the loader's changes over it are additive, refactor, or strictly more permissive.
- Files reviewed: 12/12 changed files
- Comments generated: 0
- Review effort level: Lite
4 tasks
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.
What and why
#198 widened the Spec Kit pin to
>=0.13.0,<1.1.0and moved@adrkit/spec-kitto 0.1.4, but merged with Copilot's final review (🔵 Needs a closer look, submitted five minutes before the merge) still open on three points. Two were documentation sweeps that had already been fixed in the branch before merging. The third was substantive.The substantive one. That pin's entire justification is that its upper bound is a verification boundary, not a guess.
<1.1.0admitted 1.0.5 — already released when #198 merged — while the evidence reached only 1.0.4. 1.0.6 shipped after. So the manifest was advertising support for upstream releases nobody had run it against, which is the one thing that bound is not allowed to do. Narrowing the bound instead would have rejected current upstream and undone #198's purpose, so this re-verifies and keeps the range.Re-verification evidence (same maintainer-session terms as the 2026-09-09 addendum)
extensions/EXTENSION-API-REFERENCE.mdatv1.0.4vsv1.0.5vsv1.0.6cb037d69fe62c7d8…. The extension-facing contract does not move inside the1.0line.v1.0.4→v1.0.5__SPECKIT_COMMAND_([A-Z][A-Z0-9_]*)__→([A-Z][A-Z0-9_-]*). Strictly more permissive; nothing that matched stops matching.v1.0.5→v1.0.6author=manifest.data["extension"].get("author")into skill generation..get(), so an author-less manifest is unaffected..extensionignorehandling,SpecifierSetparsing,v1.0.4→v1.0.6specify extension add --devon1.0.5and1.0.6(PyPI), Python 3.12,--integration copilotextension list/extension infoexit 0 reportingv0.1.4after_planon both.specify/extensions.ymlrecordsoptional: truewithenabled: true— the consent-preserving renderingLICENSE,NOTICE,README.md,commands/,extension.yml,scripts/, plus the loader's.specify-dev/extension-skills/. Notest/,tsconfig.json,package.json,node_modules/The rule that stops this recurring
The hole existed because the granularity of the boundary was never written down. It is now explicit in the manifest header, ADR-0019, and the evidence index: the bound is declared and verified at minor granularity — endpoints and samples of each admitted line, not every patch.
<1.1.0asserts "verified through the1.0line"; a later1.0.xpatch does not reopen this, and1.1.0is where the gate fires and re-verification is owed. Chasing patches would mean a bound that moves on releases adrkit has no say over.Recorded, not repaired
.specify-dev/is neither new nor a leak. A--devinstall has generated it since at least 1.0.4 — it is the loader's own staging directory for the skills it registers. The 2026-09-09 "installed tree carries only …" row simply omitted it;.extensionignoreis doing its job.metadata.authoris nowMark Beacom (@mbeacom)fromextension.author, where 1.0.4 emittedgithub-spec-kit. Upstream improvement, no adrkit change needed — noted so a future reader does not read it as drift.The other two review points
bun.lockworkspace version, andAGENTS.md:8/plan.md:60/site/…/spec-kit.mdxwere all fixed in feat(spec-kit): verify and widen upstream pin to >=0.13.0,<1.1.0 #198 before it merged; the two threads were simply never resolved. Verified againstmainatb5385c4—bun.lock:32reads0.1.4and both of those docs already read>=0.13.0,<1.1.0. Resolving those threads with a pointer to this PR.AGENTS.md:8claiming 0.1.4 is published was accurate about intent and premature about fact — npm'slatestis still0.1.3. That is resolved by cutting the release, which is the next step after this merges, not by walking the claim back.Stale "current" text in ADR-0019
0.13through the1.0line. Rewritten so the mechanism (fails loud on the first unverified minor) is what the paragraph asserts, with the as-accepted bound marked historical.<0.16.0as the widened bound. It now notes both later re-verifications and points at the addenda rather than contradicting them.One unrelated correction
docs/RELEASING.md's adapter recipe showed a lightweightgit tag spec-kit-v0.1.0, while the lockstep recipes use-aand everyspec-kit-v*tag ever pushed is annotated.release.yml's annotated-tag assertion is inside thelockstep == truebranch, so a lightweight adapter tag would publish and then read as a permanent anomaly ingit cat-file -t. Recipe corrected.Checklist
check:dco: 1 signed, 0 unsigned).packages/ciuntouched. (Note: local Bun 1.4.0 vs the repo's pinnedbun@1.3.14makesbun run buildrewrite the committedpackages/ci/dist/*bundles with equivalent-but-different output. Reverted, not committed.)bun run typecheck && bun run build && bun test && bun run lintpass: 2812 pass, 0 fail, 1 skip.check:changelog(now 5 adapter releases),check:doc-pins,check:site-grammar,check:deps,check:freeze-hashes, andadr lint(37 records, 0 errors) all pass.bun run release:pack -- --only @adrkit/spec-kit --tag spec-kit-v0.1.4packs 12 files withextension.ymlat0.1.4/>=0.13.0,<1.1.0and no development files.Notes for reviewers
>=0.13.0,<1.1.0; only its evidence moved.@adrkit/spec-kitstays at 0.1.4 — this is the evidence the 0.1.4 release ships with, not a new version.[Unreleased]entry becomes[spec-kit-0.1.4] - 2026-09-12with its compare link, so the release can be cut immediately on merge.mbeacom/adrkit-t018-dogfood) exercises only0.13.0/0.14.4/0.15.1. Bringing0.16.5,1.0.0, and1.0.4–1.0.6under that weekly gate remains the recorded follow-up. These are maintainer-session installs, deliberately not claimed as a rung-2 matrix extension.download_url(spec-kit-v0.1.2/adrkit.zip) and still advertisesspeckit_version: >=0.13.0,<0.16.0. It missed the 0.1.3 release too. Completing this release properly needs a follow-up PR togithub/spec-kitupdating that entry to 0.1.4 and the widened pin.https://claude.ai/code/session_01UHoVZxZp529qJg1mgwJqxZ