You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Bump skill↔binary contract version 1->2 so 0.23.0 skills reject a contract-1 binary (#443)
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>
0 commit comments