Skip to content

Bump skill↔binary contract version to 2 — 0.23.0 rejects an out-of-date binary#443

Merged
clkao merged 1 commit into
mainfrom
spacedock-ensign/contract-version-bump-v2
Jun 30, 2026
Merged

Bump skill↔binary contract version to 2 — 0.23.0 rejects an out-of-date binary#443
clkao merged 1 commit into
mainfrom
spacedock-ensign/contract-version-bump-v2

Conversation

@clkao

@clkao clkao commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

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

  • Bump the binary's contract-version constant 1 → 2
  • Both plugin manifests now require contract >=2,<3
  • Update the contract-range text in the FO contract + retarget the compatibility fixtures/tests

Evidence

  • go test ./... green (15 pkgs); the only non-test source change is the single CONTRACT_VERSION line
  • Proven against the real published v0.22.0 binary: doctor → "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")
  • Detached adversarial audit clean — every claim-breaking revert REDs; the vacuity probe stays green

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

…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>
@clkao
clkao merged commit ba18936 into main Jun 30, 2026
4 of 8 checks passed
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>
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.

1 participant