Bump skill↔binary contract version to 2 — 0.23.0 rejects an out-of-date binary#443
Merged
Merged
Conversation
…tract-1 binary The 0.23.0 skills hard-require binary verbs absent from a contract-1 (v0.22.0) binary (state ready/commit/sweep, merge guard) but the contract version stayed 1, so an upgrade-skills-not-binary user passed the boot gate (1 ∈ [1,2)) and broke cryptically on the missing verbs instead of getting the clean "binary too old — upgrade" abort. - CONTRACT_VERSION 1 -> 2 (internal/contract/contract.go); the only non-test source change — no verb behavior touched. - Both plugin manifests requires-contract >=1,<2 -> >=2,<3. - first-officer-shared-core Startup contract-version-gate range text -> >=2,<3 (byte-neutral: same length, stays 28583). - Doctor/bracketing fixtures retargeted to keep their verdicts: compatible.json and vendored testdata/plugin.json -> >=2,<3; too-old-binary.json -> >=3,<4. - TestCompatibleUpgradeHint cases pairing CONTRACT_VERSION with the range, the gate predicate cases, and the install/decoupling/codex manifest fixtures tracked to the new pair. - New skills/integration AC-1 skew test: the live repo range rejects a contract-1 binary (too-old-binary) and admits the current CONTRACT_VERSION — divergeable, fails if either side is left at 1 / >=1,<2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
gcko
added a commit
that referenced
this pull request
Jun 30, 2026
Brings the seam PR up to latest main (0.23.0): the skill<->binary contract bump 1->2 (#443), the resident launcher (#442), the signal-forward pump fix (#444), and the entity end-value gate (#441). Conflict: .claude-plugin/plugin.json — kept this branch's `hooks` key and adopted main's `version: 0.23.0` + `requires-contract: >=2,<3` (CONTRACT_VERSION is now 2). shared-core.md auto-merged (disjoint regions). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Jared Scott <jared.scott@infuseai.io>
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.
Bump the skill↔binary contract version to 2 so a v0.23.0 plugin cleanly rejects an out-of-date binary instead of breaking on missing verbs.
What changed
contract >=2,<3Evidence
go test ./...green (15 pkgs); the only non-test source change is the singleCONTRACT_VERSIONlinedoctor→ "Upgrade the binary to continue." exit 1 under>=2,<3(was OK under>=1,<2); a contract-2 binary → OK; the symmetric skew (contract-2 binary + old skills → "Update the plugin")Review guidance
Contract/release surface. The matched-version live boot is unchanged; the skew rejection is exercised by the real-binary tests + the detached audit, and the v0.23.0 tagged-commit Runtime Live E2E is the authoritative live check.
7h3