Skip to content

feat(spec-kit): verify and widen upstream pin to >=0.13.0,<1.1.0 - #198

Merged
mbeacom merged 4 commits into
mbeacom:mainfrom
HJXArthurAtlas:spec-kit-1.0-compat
Sep 12, 2026
Merged

mbeacom merged 4 commits into
mbeacom:mainfrom
HJXArthurAtlas:spec-kit-1.0-compat

Conversation

@HJXArthurAtlas

Copy link
Copy Markdown
Contributor

What and why

Spec Kit shipped 0.16.00.16.5 and its first majors 1.0.01.0.5 after the 2026-08-01 pin re-verification, so the manifest's declared >=0.13.0,<0.16.0 bound now fails loud on current upstream — exactly as ADR-0019 designed. ADR-0019 defines widening the pin as a re-verification, not a version bump. This PR performs that re-verification and widens the bound to >=0.13.0,<1.1.0. @adrkit/spec-kit moves 0.1.3 → 0.1.4 (both version fields together, per the agreement test).

Re-verification evidence

Check Result
extensions/EXTENSION-API-REFERENCE.md: frozen 9a30db48 (0.13.0) → v0.16.5v1.0.4 Additive only; v0.16.5 vs v1.0.4 byte-identical (896 lines, empty diff). The additions are provides.templates / provides.scripts and a relaxed "at least one of commands/templates/scripts/hooks/events" rule that a manifest providing commands and hooks already satisfies.
src/specify_cli/extensions/__init__.py: v0.15.1v0.16.5v1.0.4 Additive or refactor; the only removed lines relocate an error string and harden registry/config reads. .extensionignore (gitignore semantics) and SpecifierSet version parsing are unchanged.
Install + render on 0.16.5 (PyPI), 1.0.0 (git tag v1.0.0; never published to PyPI), 1.0.4 (PyPI), Python 3.12 Exit 0 on all three; after_plan registered optional: true; the installed tree carries only LICENSE, NOTICE, README.md, commands/, extension.yml, scripts/.extensionignore still excludes the test suite and tsconfig.json.
Negative control: previous pin <0.16.0 on 1.0.4 Rejected with a compatibility error naming both specifiers, exit 1 — the fail-loud contract observed working, not assumed.

Recorded rendering change (not repaired)

On 1.0.x with the Copilot integration, extension commands render as agent skills under .github/skills/speckit-adrkit-* — the same surface upstream's own commands use — instead of .github/agents/ and .github/prompts/ files. All three commands register; invocation follows upstream's skills-mode convention. Recorded in the ADR addendum and the evidence index.

Checklist

  • Commits are DCO signed off (git commit -s).
  • This touches a recorded decision's operational edge, and the change follows the path ADR-0019 itself specifies ("widening it is a re-verification, not a version bump"), so ADR-0019 gained a dated addendum (2026-09-09) with the evidence and limitations rather than a superseding record.
  • Schema unchanged — no Zod source or generated JSON touched.
  • packages/ci untouched.
  • The fail-loud gate was observed failing before trusting the widening: the old pin provably rejects 1.0.4 (negative control above), and manifest.test.ts's pin assertion failed against the updated manifest until the assertion was moved with it (ADR-0016).
  • bun run typecheck && bun run build && bun test && bun run lint pass: 2812 tests pass, 0 fail, 1 skip.

Notes for reviewers

  • The dogfood reference matrix (mbeacom/adrkit-t018-dogfood) still exercises 0.13.0 / 0.14.4 / 0.15.1. Adding 0.16.5 / 1.0.0 / 1.0.4 legs there is the recorded follow-up (ADR-0019 addendum, 2026-09-09, and docs/reference-verification-spec-kit-extension.md) — this PR's install runs are maintainer-session evidence, deliberately not claimed as a rung-2 matrix extension.
  • npm and community-catalog consumers receive the widened pin only after the adapter release (spec-kit-v0.1.4 tag per docs/RELEASING.md); the release step is intentionally left to the maintainer.
  • Pre-existing, unrelated: README.md:413 carries an MD060 markdownlint complaint that is present on main with this branch's changes stashed; left untouched.

Re-verified per ADR-0019's standard: the upstream extension API reference
changed only additively from 0.13.0 through 1.0.4 (byte-identical from
0.16.5 through 1.0.4) and the loader removed nothing the extension uses.
The extension was installed and rendered on 0.16.5, 1.0.0, and 1.0.4 with
after_plan registering optional:true and no development files deposited;
the previous <0.16.0 pin provably rejects 1.0.4 (negative control).

Recorded, not repaired: 1.0.x renders extension commands as agent skills
(.github/skills/speckit-adrkit-*) on the Copilot integration.

@adrkit/spec-kit 0.1.3 -> 0.1.4. Dogfood matrix legs (0.13.0/0.14.4/
0.15.1) unchanged; adding 1.0.x legs there is the recorded follow-up.

Signed-off-by: Mark Beacom <7315957+mbeacom@users.noreply.github.com>
Signed-off-by: HJXArthurAtlas <89914027+HJXArthurAtlas@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The adapter version bump leaves bun.lock’s workspace version stale and AGENTS.md still contains an outdated top-level spec-kit version reference, so the repo state is internally inconsistent after the change.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR re-verifies @adrkit/spec-kit compatibility against newer upstream Spec Kit releases and widens the extension manifest pin from >=0.13.0,<0.16.0 to >=0.13.0,<1.1.0, releasing the adapter as 0.1.4 (with both version fields kept in sync).

Changes:

  • Widen Spec Kit compatibility range to >=0.13.0,<1.1.0 across the extension manifest and associated docs.
  • Bump @adrkit/spec-kit version from 0.1.3 → 0.1.4 (manifest + npm package), and update/extend verification notes in docs.
  • Update changelog and repository documentation to reflect the widened pin and re-verification.
File summaries
File Description
README.md Updates the advertised Spec Kit compatibility bound.
packages/adapters/spec-kit/test/packaging.test.ts Updates test commentary to reflect upstream versions supporting .extensionignore.
packages/adapters/spec-kit/test/manifest.test.ts Updates the asserted speckit_version bound and accompanying rationale.
packages/adapters/spec-kit/README.md Updates documented requirements and compatibility claims for the widened pin.
packages/adapters/spec-kit/package.json Bumps @adrkit/spec-kit to 0.1.4.
packages/adapters/spec-kit/extension.yml Bumps extension version to 0.1.4 and widens speckit_version to <1.1.0.
docs/reference-verification-spec-kit-extension.md Adds a dated re-verification addendum for the pin widening.
docs/adr/0019-ship-the-spec-kit-extension-treating-the-spike-no-go-as-a-measurement-artifact.md Records the pin-widening re-verification as an ADR addendum.
CHANGELOG.md Adds an Unreleased entry documenting the pin widening and re-verification evidence.
AGENTS.md Updates the Spec Kit extension section to the new pin and version (but see review comments).
Review details
  • Files reviewed: 10/10 changed files
  • Comments generated: 2
  • Review effort level: Lite

Comment thread packages/adapters/spec-kit/package.json
Comment thread AGENTS.md

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The lockfile version and several current compatibility references remain stale.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

packages/adapters/spec-kit/package.json:3

  • The package version is now 0.1.4, but the committed workspace entry remains 0.1.3 in bun.lock:30-33. Bun does not refresh workspace version fields automatically (docs/RELEASING.md:701-709), so this leaves repository tooling with contradictory package metadata. Update that lockfile entry as part of this bump.
  "version": "0.1.4",
  • Files reviewed: 10/10 changed files
  • Comments generated: 1
  • Review effort level: Balanced

Comment thread AGENTS.md
Copilot review on mbeacom#198 caught three leftovers from the version bump:
bun.lock's workspace entry, AGENTS.md's top-level status blurb, and the
site docs plus plan.md still advertising the pre-widening pin. Sync all
of them; historical records (CHANGELOG's 0.13.0 entry, the evidence
index's 2026-08 matrix row) intentionally keep the old bound.

Signed-off-by: HJXArthurAtlas <89914027+HJXArthurAtlas@users.noreply.github.com>
bb9842e accidentally committed Mac-built packages/ci/dist artifacts
produced by running the full build locally. The bundles are unchanged
by this PR's scope; restoring them to main leaves the gate surface
untouched and no acknowledgment needed.

Signed-off-by: HJXArthurAtlas <89914027+HJXArthurAtlas@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Spec Kit 1.0.5 is admitted without recorded verification, and documentation/status inconsistencies remain.

Review details

Suppressed comments (3)

AGENTS.md:8

  • This status sentence says the 0.1.4 adapter is already published, but this PR explicitly leaves the spec-kit-v0.1.4 tag/npm/catalog release for a later maintainer step. Until that release happens, the project memory reports a version to consumers that is not available; keep the published version at 0.1.3 here or mark 0.1.4 as pending.
the independently versioned `@adrkit/spec-kit` Spec Kit extension (0.1.4); the

docs/adr/0019-ship-the-spec-kit-extension-treating-the-spike-no-go-as-a-measurement-artifact.md:302

  • The new active range leaves earlier current ADR text stale: docs/adr/0019-ship-the-spec-kit-extension-treating-the-spike-no-go-as-a-measurement-artifact.md:221 still says the extension is pinned to a single upstream minor and breaks on the next minor, while line 243 still records <0.16.0 as the widened bound. With this change the range spans 0.13 through 1.0; please update those statements or mark them historical so the accepted decision does not describe a different contract.
The bound is widened to `>=0.13.0,<1.1.0`, verified at 0.13.0, 0.14.4, 0.15.1
(the standing dogfood matrix), 0.16.5, 1.0.0, and 1.0.4 (this addendum's
install runs). Past 1.0 remains a re-verification, not a bump.

packages/adapters/spec-kit/extension.yml:30

  • This specifier also admits Spec Kit 1.0.5, but the re-verification recorded in docs/reference-verification-spec-kit-extension.md:174 and this ADR's evidence table only reaches 1.0.4. Because this manifest defines the upper bound as a verification boundary, <1.1.0 currently advertises an already-released, unverified upstream patch. Please verify/render 1.0.5 and update the evidence/support lists, or choose a bound that excludes it.
  speckit_version: ">=0.13.0,<1.1.0"
  • Files reviewed: 12/13 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

@mbeacom mbeacom left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM :shipit: Thank you!

@mbeacom
mbeacom merged commit b5385c4 into mbeacom:main Sep 12, 2026
17 checks passed
mbeacom added a commit that referenced this pull request Sep 13, 2026
…tes (#203)

docs(spec-kit): verify 1.0.5/1.0.6 and close the release's open review 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants