Skip to content

docs(release): pin the executable editor recipe to the published CLI and MCP server version #2743

Description

@Rul1an

Measured defect

Measured on origin/main 2b1339e309c7027d63970dd5913b28b3bab36409, published release v5.5.2.

docs/guides/editor-mcp-recipe.md is an executable launch-facing recipe, but its two prerequisite commands are floating:

cargo install assay-cli --locked
cargo install assay-mcp-server --locked

The repository already requires cargo install assay-cli --version $PUBLISHED_VERSION --locked across the outward release surface. The editor recipe is selected by that gate but is not one of its pinned install-command obligations, and scripts/ci/check-editor-mcp-recipe-truth.sh currently requires the floating forms. A later crates.io publication can therefore silently change the binaries installed by the flagship recipe while the recorded Claude/Codex launch evidence remains bound to v5.5.2.

This is not a current wrong-version claim: today the floating commands resolve to the published release. It is a self-arming release-integrity defect and must close before launch communication.

Parent decision: #2739 chooses to keep Darwin MCP archives unsupported and retain an exact crates.io route.

Behavioral DoD

  • RED first: show that a stale --version, a missing --version, and a second floating install can currently survive the relevant guards.
  • The plugin-install section contains exactly one published-version-pinned install for assay-cli and exactly one for assay-mcp-server, both with --locked.
  • cargo install --path crates/assay-mcp-server --locked remains the intentionally unpinned source-checkout route.
  • Published-version truth comes from .github/assay-release-tag through the existing reader, never a new literal.
  • One guard owns the exact install-command rule. The editor transport guard must not reimplement a second version rule that can drift; retain its stdio/protocol and executable-section obligations.
  • Comments, prose, a command in another section, duplicate commands, and source-path installs cannot satisfy the published-install obligation.
  • A release-pin change selects the guard locally and in CI.
  • Focused self-tests, actual guards, git diff --check, and public-string inspection are green.

Non-claims

This does not add Darwin archives, Apple signing/notarization, MCPB support, host discovery, marketplace discovery, or a new release. It does not retrofit immutable v5.5.2 assets. It only makes the documented crates.io journey identify the same published version the launch evidence measured.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cluster:release-integrityRelease-prep surface and the release-blocking gate that guards itdxProject phase/areahorizon:mvpRequired for the current minimal install-to-verifiable-evidence product pathpriority:P1Next high-impact product, security, reliability, or adoption work; not a release blockersize:SAI-assisted: a few hours. One component plus its tests.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions