release: stamp 4.6.0 and document every version-bump surface - #81
Conversation
Closes #78, by disproving its premise rather than acting on it. #78 claimed the template's version-bump checkbox was unsatisfiable for a content PR, because check_release_consistency.py appeared to require the generated CHANGELOG.md to move with the version while the template reserves that file to release PRs. That is wrong. At PR time the version requirement is met by a changelog.d fragment naming the version; the generated CHANGELOG.md is only the post-release form. Verified by performing the bump and getting a clean result. What actually happened is that the first attempt missed three surfaces and I concluded the gate was impossible instead of finding them. A fourth surface -- the nested skill_version in scripts/skill-build-config.json, which stamps all 47 generated SKILL.md files -- surfaced only when the distribution-contract test caught it, and a fifth mistake (adding a NEW top-level key rather than editing the nested one) made the build silently no-op. So: bump to 4.6.0 across all seven surfaces, and replace the one-line checkbox with the enumerated list plus the two regeneration steps and the nested-key warning. #77 changed distributed content and should have carried this bump; it did not, for the reason above. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Cross-check nit: the fragment listed fewer surfaces than the template, omitting the nested skill_version and its SKILL.md fan-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f0cb31a3a4
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
PR review bot, correctly. Bumping the whatsnew heading with a string replace retitled the existing 4.5.4 entry as 4.6.0, so the section described the Gemini containment change under the new version and the 4.5.4 section disappeared -- mislabelled release notes for both versions. Add a 4.6.0 entry describing what actually shipped (the Claude-host active-model observation from #77) and restore the 4.5.4 heading over the Gemini item. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc62bbbf85
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| 4. root `README.md` — the summary-table row **and** the `## What's new - vX.Y.Z` heading (two separate edits) | ||
| 5. `plugins/agent-collab/README.md` — `Current: **X.Y.Z**` **and** the "this same X.Y.Z package" line |
There was a problem hiding this comment.
List every README version anchor in the bump procedure
When a contributor follows this new seven-surface procedure, these entries omit the package version in the root README introduction and the source-tree version in the package README. A repo-wide search for 4.5.4 demonstrates the regression in this commit: plugins/agent-collab/README.md:187 still says “This 4.5.4 source tree” while the manifests and other documentation declare 4.6.0, and check_release_consistency.py nevertheless passes. Include all README anchors in the procedure and consistency check so future bumps cannot leave contradictory distributed documentation.
Useful? React with 👍 / 👎.
Summary
Closes #78 — by disproving its premise rather than acting on it, and by paying the version bump #77 should have carried.
#78 was wrong. It claimed the template's version-bump checkbox was unsatisfiable for a content PR, because
check_release_consistency.pyappeared to require the generatedCHANGELOG.mdto move with the version while the template reserves that file to release PRs. At PR time the version requirement is met by achangelog.d/fragment naming the version; the generatedCHANGELOG.mdis only the post-release form. I verified this by performing the bump and gettingRESULT: OK.What actually happened on the first attempt was simpler: I missed three surfaces, saw 12 tests go red, and concluded the gate was impossible instead of finding them. That conclusion then propagated into #77's PR body and into #78.
Consequence
#77 changed distributed content and should have been released as a version bump.
plugins/agent-collab/host_policy.pyships in the package. This PR pays that debt:4.5.4 → 4.6.0, minor because #77 added an observation capability with no breaking change.The seven surfaces
Discovered by doing it, not by reading:
plugins/agent-collab/.claude-plugin/plugin.jsonplugins/agent-collab/.codex-plugin/plugin.json.claude-plugin/marketplace.base.json→ re-runbuild_marketplace.pyREADME.md— summary-table row and## What's new - vX.Y.Zheading (two separate edits)plugins/agent-collab/README.md—Current: **X.Y.Z**and the "this same X.Y.Z package" linescripts/skill-build-config.json— the nestedskill_version→ re-runbuild_skills.py, which restamps all 47 generatedSKILL.mdfileschangelog.d/fragment namingagent-collab X.Y.ZSurface 6 surfaced only when
test_current_distributed_version_is_consistentcaught it. My first attempt at it added a new top-levelskill_versionkey instead of editing the nested one, so the build silently no-opped and reported success — the template now warns about exactly that.The checkbox is replaced with this enumerated list, both regeneration steps, and the nested-key warning.
Review note on the diff shape
56 files, but only 9 are hand-edited. The other 47 are
SKILL.mdversion stamps produced bybuild_skills.py. Review the config plus one sample skill and the consistency script, not the churn line by line.Verification
python3 -m unittest discover -s tests -t .— 658 tests, OKpython3 -m unittest discover -s scripts -p 'test_*.py'— 319 tests, OKpython3 scripts/check_release_consistency.py— OK, all ten surface assertions PASS at 4.6.0python3 scripts/build_skills.py --check— all generated files match specspython3 scripts/build_marketplace.py --check— OKpython3 scripts/secret_scan.py— cleanpython3 scripts/check-public-export-safety.py --active-tree— SAFEBoundary declaration
Generated and release surfaces
SKILL.mdin parity (regenerated,--checkclean).changelog.d/fragment present; generatedCHANGELOG.mduntouched.Review and post-condition
Tier 2, cross-checked by Grok (xAI), verdict PROCEED. It confirmed the non-release bump is correct rather than something to defer to
cut_release.py, confirmed 4.6.0 as the right increment for an additive capability, and judged the surface list accurate. Its two non-blocking suggestions are handled: all seven surfaces verified present in the diff by enumeration, and the changelog fragment's summary aligned with the template's seven.Post-condition:
check_release_consistency.pyreports OK at 4.6.0 on the merge commit, and the next release cut starts from a correct version rather than one that silently lagged a shipped change.author: claude
standing_directives: verify a premise before acting on it; pay the version debt a shipped change incurred; document a procedure discovered empirically rather than asserted; generated-file parity; no raw provider command or credential in the public tree
tier: 2
cross_check: PROCEED (grok, xai family, architecture route, read-only) - confirmed the non-release bump is correct and 4.6.0 the right increment, judged the seven-surface list accurate; both non-blocking suggestions integrated (all seven surfaces enumerated and verified present; changelog fragment aligned with the template)
post_condition: check_release_consistency.py OK at 4.6.0 with all ten surface assertions passing; 658 + 319 tests green; the next release cut starts from a version that reflects the shipped change
mcp_coverage_gap: NONE
contributor_rights: OWNER-AUTHORED
operator_reserved: no
Generated with Claude Code