Skip to content

fix: prepare canonical MCP release delivery - #118

Merged
owjs3901 merged 2 commits into
mainfrom
devfive/3099154426bffbeef8b62999b80bb038/release-delivery-helper
Nov 4, 2026
Merged

owjs3901 merged 2 commits into
mainfrom
devfive/3099154426bffbeef8b62999b80bb038/release-delivery-helper

Conversation

@devfive-relay-c70423

@devfive-relay-c70423 devfive-relay-c70423 Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Run 41735774706 compiled the binaries successfully but failed during upload: changepacks emitted an upload URL for Cargo.toml, while the workflow required crates/devup-mcp/Cargo.toml. Because the action creates non-draft releases while publish is off, the workspace devup-mcp(Cargo.toml)@0.20.0 release was already public and marked latest without binary assets, and its tag is not recognized by existing MCP clients (release_check.rs only accepts devup-mcp(crates/devup-mcp/Cargo.toml)@).

Keep changepacks responsible for version PRs and synchronized Cargo.lock, and let the delivery stage prepare the canonical MCP draft from the inherited workspace version. A new main run can recover 0.20.0 without another version bump.

  • Preserve the canonical client-compatible tag and freeze the source SHA across builds and retries.
  • Verify uploaded size/SHA-256, reuse identical assets and recover interrupted empty draft uploads.
  • Require all three platform binaries and the MCPB bundle, plus unchanged tag/source identity, before publishing as latest.
  • Preserve the already published workspace release and reuse its notes during recovery.

Workflow status: the .github/workflows/ci.yml change is included in this PR (112abb6). It is the workflow diff prepared as d9dab3e, plus two corrections found during review:

  • release.py prepare runs before changepacks/action. After opening the Update Versions PR, the action leaves HEAD on changepacks/main with the logs consumed, so running prepare afterwards would fail every main push that carries changepacks.
  • macOS runner images ship only python3. The helper suite runs on ubuntu with python3 (like the lockfile test), ubuntu-only jobs call python3, and the build matrix pins Python 3.13 with actions/setup-python@v7 for the upload helper on all three platforms.

Validation: 15 isolated Git/API lifecycle tests passed locally and actionlint 1.7.12 passed on the final workflow. Application Rust/TSX code is unchanged; this changes only CI/packaging delivery, so the changepacks configuration requires no version-bump log.

Retrying the original failed run uses its original workflow. Recovery requires a new main run containing this fix: after merge, that run creates the canonical devup-mcp(crates/devup-mcp/Cargo.toml)@0.20.0 draft, uploads the three binaries and the MCPB bundle, and publishes it as latest.


Submitted via Devfive hub.
Employee Git identity (self-declared): <>
Device: 3099154426bffbeef8b62999b80bb038

leader and others added 2 commits November 4, 2026 10:29
Applies the workflow change prepared as d9dab3e (attached to this PR): changepacks keeps version PRs and lockfile sync with create_release disabled, packaging/release.py prepares the canonical devup-mcp(crates/devup-mcp/Cargo.toml)@<version> draft, build and bundle check out its frozen source SHA, and uploads/finalize go through the verifying helper.

Review corrections: prepare runs before changepacks/action, because after opening the Update Versions PR the action leaves HEAD on changepacks/main with the logs consumed and prepare would fail on every such push. macOS runners ship no unversioned python, so the helper suite runs on ubuntu with python3 and the build matrix pins Python 3.13 via actions/setup-python.
@owjs3901
owjs3901 marked this pull request as ready for review November 4, 2026 07:41
@owjs3901
owjs3901 merged commit 0c6073e into main Nov 4, 2026
9 checks passed
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