Repository navigation
Release regenerations without hands - #6
Merged
Merged
Conversation
added 2 commits
November 2, 2026 08:01
The regeneration pull request now sets the next version of every crate (scripts/version.sh bump): a minor version when API_REVISION moved, a patch for a change of the generator alone. merge-regeneration.yml merges it once CI passes on its head commit, if every commit in it is the regeneration workflow's and it adds no crate: a new crate needs its description reviewed and its first version published by hand. release.yml publishes a version on main that has no tag yet to crates.io with trusted publishing, core crate first, skipping crates whose version is published already, tags the commit, and dispatches origincloudhq/mcp's regeneration. The regeneration's push, the merge and the dispatch use a GitHub App's token (REGENERATE_APP_ID, REGENERATE_APP_PRIVATE_KEY), because what the workflow token does starts no further workflows. Without the App, the regeneration works as before and the merge stays by hand.
Every CI run of a refreshed pull request would otherwise comment again.
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.
Context
A change of the API should reach a released SDK, and the MCP tools and CLI built on it, without anyone's hands. Today the regeneration pull request waits for a person to merge it, and a release is published to crates.io by hand. The crates aren't published yet.
Approach
regenerate.ymlsets the next version in its pull request withscripts/version.sh bump. That is theversionof every crate and of theorigincloud-coreeach service crate depends on, followed bycargo update --workspace. It is a minor version whenAPI_REVISIONmoved, a patch for a change of the generator alone. A pending bump that isn't released yet stays; a minor one replaces a pending patch. The crates keep their own versions rather than a workspace version, because the generator's scaffolding of a new crate copies the core crate's manifest.merge-regeneration.ymlruns when CI completes on theregeneratebranch. It merges when CI passed on the head commit and every commit is the regeneration workflow's, unless the pull request adds a crate. A new crate's description and keywords need review, and its first version needs publishing by hand, so that pull request gets a comment and waits.release.ymlruns when CI passes on a push tomain. If the version has no tag yet, and is newer than every tag, it publishes it to crates.io with trusted publishing from the environmentrelease.REGENERATE_APP_ID, secretREGENERATE_APP_PRIVATE_KEY). Without the App, the regeneration works as before, dispatching CI itself, and the merge stays by hand.Before it can release
The first publish of
origincloud-core,origincloud-pvsandorigincloud-locationis by hand, and each crate needs this repository as its trusted publisher (release.yml, environmentrelease). Until then, a merge tomainmakes the release fail, naming the crates.Trade-offs / risks
A bot-only regeneration merges and releases with no review in this repository. It holds only what the generator makes from a reviewed API change, and CI, including
cargo package, checks it.How to test