Repository navigation
Conversation
Quest-Claim: b8cc42eb83d24471
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
Author
|
Stopping this claim: the maintainer scoped this spawn to m0-m2, and this m3 quest was started by mistake. The work so far (the phase rewrite in (Written by Claude Opus 5.5) |
This branch has not been deployed
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.
Finishes
quest/m3/release/cycle-phases.md.Problem
A cut waits for every breaking change, so it grows large (
mainwas 3,190 commits ahead ofreleaseon 2026-11-09), and a deployment that followsreleasecan only take all of it. The maintainer decided (2026-11-09) that after the next cut each cycle runs additive work, then API breaks, then wire changes, withmaincut on demand in the first two phases and patch versions while the cycle is additive. Nothing in the repo described or enforced that.Approach
CONTRIBUTING.md(Releases, Versions): the three phases, what an API break and a wire change are, how the maintainer opens a phase, and the two kinds of cut. An additive cut publishes patches and runs only the readiness checks. An API or wire cut advances the shared minor withjust version, and also needs the migration audit and the API shape, feature, and Cargo feature reviews. The release-to-main merge now comes before every cut, not only breaking ones.version.jsongets aphasefield (null,additive,api, orwire).just versionrejects any other value. It staysnulluntil the0.22.0cut, the same wayminordoes.phaseisadditive, the cut PR's API diff runs with--deny, and a new Nightly job runsjust api-diff --denyonmain. In any other phase that Nightly job skips before the nix setup. Backports still deny, andrelease's missingversion.jsoncounts asnull.quest/README.md,quest/m3/README.md): the phase definitions and the milestone layout after the next cut. m1 is additive work, m2 API breaks, m3 wire changes, m4 and m5 later work, and m6 the deferred bucket. The re-split at the next cut and the shift at each cycle-ending cut are both spelled out.quest/m3/release/cut.md): the cut now recurs per cut. Each cut re-creates itself with noRequiredand a maintainer## Waitingitem naming the next cut's kind. A breaking cut first re-creates the three reviews and the migration audit as itsRequired. A wire cut requires m2 and m3, setsphaseback toadditive, and shifts the milestones. The cut gate moves to m3.Choices made without asking
-wipversion also counts as wire work.just api-diff --denyin the merge queue (the job has a 120-minute timeout and would serialize the queue) and a check on the!in PR titles (Check never blocks, and it misses unmarked breaks).mainbefore the cut PR. That matches today's backports. Go derives its patch in CI, and the FFI packages follow their Rust crate through release-plz.phaseis edited by hand, not byjust version. An API cut advances the minor but keeps theapiphase, so the recipe can't infer the phase. The0.22.0cut and each wire cut set it toadditive. The maintainer opens theapiandwirephases with their own PRs.Impact
version.jsongains"phase": null.sh/version.pynow requires the key.0.22.0: fewer shared minors, more patches.api-diffjob that is a no-op untilphaseisadditive.Alternatives
Requiredbetween milestones. An epic'sRequireddoesn't block its children inquest unblocked(checked onquest/m3/release/). Additive work is also perpetual, so m2 requiring m1 would never unblock.Follow-ups
None recommended.
Notes
moq-relay config::tests::repository_configs_loadfails onmainuntil moq-dev/moq#8486 merges. It is unrelated, and this diff doesn't select it.Checks
just check: passed.python3 sh/version.test.py: 7 tests passed.actionlint,zizmor,quest check, andquest check --base origin/main: passed.Models
Size: M
Implementer: Claude Code, claude-opus-5-5, medium effort
(Written by Claude Opus 5.5 with medium)
Review
Rewritten by
quest reviewafter each round.01a1c84a-dac2-7cf3-bf08-2e276bb44e32, round 2The API-enforcement contradiction is fixed, but the wire cut still needs its completion condition narrowed to avoid waiting on its own release epic.quest/m3/release/cut.md:85:Exclude release execution from the wire cut's waiting condition.github/workflows/api-diff.yml:38:Distinguish a breaking cut from its next-cycle phase;CONTRIBUTING.md's Releases section and quest/m3/release/cut.md:57–59,87–89 defer the additive phase reset to a main PR after the cut merges into release, preserving report-only API checks for breaking cuts.quest/m3/release/cut.md:82:Keep the wire cut outside its prerequisite milestone;Although the explicit m3 prerequisite was removed, quest/m3/release/cut.md:85 still requires no other m3 quest to remain while its containing release epic and post-cut publication work remain there.