Skip to content

0.5.6: a test's name, not every string in the file - #66

Merged
rdryfoos merged 1 commit into
mainfrom
release-0.5.6
Oct 5, 2026
Merged

rdryfoos merged 1 commit into
mainfrom
release-0.5.6

Conversation

@rdryfoos

@rdryfoos rdryfoos commented Oct 5, 2026

Copy link
Copy Markdown
Owner

The release cut for 0.5.6. Components: bundle 0.5.6, extension 0.5.6, preset 0.5.6.

It carries #65 (FR-GATE-220, and the awk rule found writing it), merged by hand at 2b7e85f, plus one thing found cutting it.

The cut

What Where
version bundle.yml (bundle + both components), extensions/specassay-check/extension.yml, presets/specassay/preset.yml
version, download URL, stamps catalogs/bundles.json, catalogs/extensions.json, catalogs/presets.json
sha256 removed the same three, because a digest belongs to a published asset and the assets do not exist until the tag. The digests PR restores it, which is the window FR-GATE-210 deliberately leaves open.
install URL presets/specassay/README.md
heading and components line CHANGELOG.md

specify bundle validate at Spec Kit 1.0.5: ✓ specassay is well-formed and valid.

What the doc-version check demanded

Three things, not none.

Five dated observations aged into warnings. Cutting 0.5.6 put five 0.5.4 observations in PRD.md two releases behind, producing six warnings. Each records when something was reproduced (Reproduced before fixing, 2026-10-02 on 0.5.4, the catalog drift that minted FR-GATE-210, the cold-path ledger reproduction) rather than what is true now, so each is marked <!-- specassay:provenance -->. Left alone they become refusals at 0.5.7.

The community catalog, re-observed 2026-10-05 against raw.githubusercontent.com/github/spec-kit/main/{extensions,presets,bundles}/catalog.community.json: all three entries still read 0.5.2, with 0.5.2 download URLs. That round was filed 2026-09-23 and landed 2026-09-24 (#4717, #4735, #4737). So 0.5.3, 0.5.4, 0.5.5 and 0.5.6 are all unfiled and go in as one round, one issue per component, because the bundle pins its own components.

And the check had a hole: FR-DOCS-80.

FR-DOCS-80, found cutting this release and hiding since 0.5.1

A doc-version mark covers the block it sits in. That is right for wrapped prose, where a version on the first line and a mark on the last are one claim. It is wrong for a table, because a Markdown table is a single block: a reason written beside one row exempted every other row of the same table.

Two real claims had been passing the release step named Docs must not lie about the version being cut:

  • ONBOARD.md:31 said v0.5.5 with <!-- specassay:current --> while 0.5.6 was being cut, beside a Spec Kit row carrying stale-ok.
  • docs/submission/README.md's own "What's done" table had said v0.5.1 with <!-- specassay:current --> since 0.5.1, four releases, beside a row citing a CHANGELOG section with stale-ok.

Neither was ever reported, by any release. A checker that is silent is worse than one that is absent, because the release trusts it.

Each row is now classified by its own mark alone. Both claims are corrected rather than re-marked: ONBOARD's pin carries the reason it cannot move before the tag, and the submission row names the last release actually published instead of the one being cut.

Two tests, both negative-controlled against main's checker (the first fails there, the second passes, which is what pinning unchanged behaviour should do):

  • test_AC_DOCS_30_a_table_row_is_its_own_claim
  • test_AC_DOCS_30_a_row_with_its_own_mark_is_still_accepted

I folded this into the release rather than filing it after, because it is the release's own gate and the fix changes what this cut is allowed to claim. It touches scripts/check-doc-versions.py, which is this repository's tooling and is not shipped in the bundle.

Deferred, with the reason written into the pages

The three submission issues. Each form asks for the asset's sha256, read from the release page rather than computed locally, so they can only be prepared once the assets exist. docs/submission/README.md now names every field the forms want and where each comes from, and the digests PR that follows the tag fills the three values from the published assets.

ONBOARD's pin table. It reads v0.5.5 and moves only when all thirteen blocks are replayed on the published 0.5.6, which cannot run before the tag. The same was true at 0.5.5, where replaying from block 1 caught a bad capture the page itself had been right about.

Verified before the tag

  • specify bundle validate at 1.0.5: well-formed and valid
  • suite 211 passing (209 to 211)
  • self-gate OK (152 registry IDs)
  • python3 scripts/check-doc-versions.py --version v0.5.6: 0 warnings, which is the same check the Release workflow runs before it builds anything

🤖 Generated with Claude Code

https://claude.ai/code/session_01Vzf6Sh5RVMKdFqaXKFF2FY


Generated by Claude Code

Components: bundle 0.5.6, extension 0.5.6, preset 0.5.6.

The release carries FR-GATE-220 and the awk rule found writing it, both
merged at 2b7e85f, plus one thing found cutting it.

The cut. Versions in bundle.yml, extension.yml and preset.yml; the three
catalogs' version, download_url and stamps, with sha256 removed, since the
digest belongs to a published asset that does not exist until the tag and
the digests pull request restores it; the preset README's install URL; and
the CHANGELOG heading with the components line.

The doc-version check demanded three things rather than none. Five dated
0.5.4 observations in PRD.md aged into six warnings on this cut and are
marked as provenance, because each records when something was reproduced
rather than what is true now. The community catalog was re-observed,
2026-10-05: all three entries still read 0.5.2, filed 2026-09-23 and landed
2026-09-24, so the next filing carries 0.5.3 through 0.5.6 in one round.
And the check had a hole.

FR-DOCS-80, found cutting this release and hiding since 0.5.1. A mark covers
the block it sits in, which is right for wrapped prose and wrong for a
table: a Markdown table is one block, so a reason beside one row exempted
every other row of the same table. Two real claims had been passing the
release step named "Docs must not lie about the version being cut":
ONBOARD.md's pin table said v0.5.5 with a current mark while 0.5.6 was being
cut, beside a Spec Kit row carrying stale-ok; and the submission page's own
What's done table had said v0.5.1 with a current mark for four releases,
beside a row citing a CHANGELOG section with stale-ok. Neither was ever
reported. A silent checker is worse than an absent one, because the release
trusts it. Each row is now classified by its own mark alone, and both claims
are corrected rather than re-marked.

Deferred, with the reason written into the pages: the three submission
issues, which need each asset's sha256 read from the release page, and
ONBOARD's pin table, which moves only when all thirteen blocks are replayed
on the published 0.5.6.

Verified: specify bundle validate at 1.0.5 well-formed and valid, the suite
211 passing, the self-gate OK (152 registry IDs), and the doc-version check
clean against v0.5.6 with zero warnings, which is the same check the Release
workflow runs before it builds anything.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vzf6Sh5RVMKdFqaXKFF2FY
@rdryfoos
rdryfoos merged commit fe95d12 into main Oct 5, 2026
3 of 4 checks passed
@rdryfoos
rdryfoos deleted the release-0.5.6 branch October 5, 2026 20:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants