Repository navigation
docs(recipes): release a package, stable or beta - #11
Merged
Merged
Conversation
recipes/release.md: phases 0-8 from preflight to the closed tracking issue, supervised and autonomous modes, checkpoints, stop conditions; the tracking issue holds the state (a marker per comment) so that a run can be resumed, locally or by a remote orchestration. recipes/release-issue.md: the proposal, the issue description, the phase comments, the registration comment (the bot's mention is built when posted, REL6). Cites REL1-REL6 of ct-conventions and the registrable script of CTActions (REL4). base.md: the release PR in autonomous mode is the one exception to "the human merges", under conditions. adapters/claude-code.md: waiting for checks and external states in the background. pin-conventions.md: the AGENTS.md template gains REL, the exception and a Recurring tasks section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…h is master) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ired checks The recipe now relies on CTActions' release tool rather than on care: release.jl status computes where a release stands from the facts (every session and outward action starts with it, resuming needs no memory), the gate runs locally before the push and as a required check, the breakage report checks REL1 against the base, GitHub's auto-merge merges, the ReleaseTag workflow tags. Every action is "ensure". Autonomous mode is offered only when auto-merge and the required checks are on. GPU: kkt, occidata as fallback, read from the runners' status. REL7: nothing to release is a stop. base.md: the exception is enabling auto-merge, not merging. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
|
Rewritten on top of the release tool (control-toolbox/CTActions#104) and the breakage suite (control-toolbox/CTActions#105), after review:
Checks: markdownlint (GEN2) on the changed files → 0 issues; 0 mention of the registration bot in the repository; the protection and auto-merge commands run on CTBase → |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed on the tag Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gh release.jl register Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rge commit, with the human's go Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
A recipe for an agent to release a package when a human asks for "a stable release" or "a beta":
recipes/release.md(who does what, in which order) andrecipes/release-issue.md(every text it posts). What a correct release is stays in ct-conventions,REL1–REL6(control-toolbox/ct-conventions#44), and the registries in ct-registry'sRELEASING.md: the recipe cites them.Phases (built on
release.jl statusandgate, see the comment below). 0 preflight (read only:mainup to date and green, no release in progress, versions in both registries, changes since the previous release,REL4for a stable) → 1 proposal (version and its reasoning, recap, what the agent and the human will do; always asks the version and the mode) → 2 tracking issue → 3 release PR (run labels read from the package's workflows, plusdocumentation push preview) → 4 checks → 5 merge → 6 tag and GitHub release (notes since the previous stable,REL5) → 7 registration (General: one comment; beta: LocalRegistry) → 8 final comment and close.Modes.
supervisedstops at each checkpoint;autonomousgoes on unless a stop condition. Stable or beta is never inferred: the agent asks.Registration bot (
REL6). Never mentioned before phase 7, in any text; the registration comment builds the mention withprintfwhen posted, so neither these files nor any command pasted in a comment contain it (0 occurrences in the repository). Before posting: a search that finds the mention on the last registered[RELEASE]issue (CTBase.jl#618 → 1) and none on this one, the version absent from General,mainstill at the merge commit. A bot error is a stop: never a second post.Resumable. Each phase ends with one new comment ending with a state marker (
<!-- ct-release phase=… -->): a session, or later a remote orchestration (/release stableon an issue), resumes from the last one.base.md. The one exception to "the human merges": inautonomousmode, chosen by the human for this release, the agent may enable auto-merge on the release PR; GitHub merges once the required checks pass (release gate, breakage report, CI). The agent never merges itself. (Updated after review: see the comment below.)Also.
adapters/claude-code.md: waiting for checks and external states in the background.pin-conventions.md: theAGENTS.mdtemplate gainsRELin the index, the merge exception, and aRecurring taskssection pointing to the recipe (rolled out to the packages with the bump to ct-conventions v0.7.0, together with theRegistrable.ymlcaller of control-toolbox/CTActions#104).README.md: the new recipe.Checks: markdownlint (GEN2 configuration) on the six files → 0 issues; the phase-0
REL4command on CTBaseorigin/main→ ✅; the run-label extraction on CTBase, OptimalControl, CTSolvers → the labels of their workflows (run probeleft out by the recipe); the mention counter on CTBase.jl#618 → 1.Not tested yet: a full run. The first one will be the next CTBase release, in
supervisedmode.🤖 Generated with Claude Code