Skip to content

Move off the release train to a simpler release model#17

Merged
NullVoxPopuli merged 19 commits into
NullVoxPopuli:nvp/move-off-the-release-train-to-simpler-release-modelfrom
NullVoxPopuli-ai-agent:nvp/move-off-the-release-train-to-simpler-release-model
Jun 6, 2026
Merged

Move off the release train to a simpler release model#17
NullVoxPopuli merged 19 commits into
NullVoxPopuli:nvp/move-off-the-release-train-to-simpler-release-modelfrom
NullVoxPopuli-ai-agent:nvp/move-off-the-release-train-to-simpler-release-model

Conversation

@NullVoxPopuli-ai-agent
Copy link
Copy Markdown

@NullVoxPopuli-ai-agent NullVoxPopuli-ai-agent commented Jun 5, 2026

Ember's "release train" today bundles two separate things: a six-week release cadence, and a multi-channel promotion pipeline (canarybetarelease branches, cut and promoted by a rotating release manager working a manual checklist each cycle).

This RFC keeps the cadence and replaces the pipeline. The six-week beat is the part that works and stays exactly as it is; what goes away is the multi-branch channel machinery and the hand-run ceremony.

The shape:

  • A single long-lived branch, main — no canary/beta/release branches, none of the cherry-pick/back-merge bookkeeping.
  • Stable is cut from main by release-plan on the same six-week schedule. The npm publish runs inside a job bound to a protected GitHub deployment environment — a required reviewer approves the deployment; that single click is the entire residual ceremony (no manual version bump, changelog, or npm publish).
  • Prerelease collapses to a single @alpha, auto-published from main the way Embroider published its prereleases. Since ember-source lives in git, main also stays directly consumable as a git ref (exactly how canary is consumed today). @beta goes away; its consumers move to @alpha.

Explicitly unchanged: SemVer, the six-week cadence, the deprecation policy, LTS, and the major-version process of RFC emberjs#830. Across a cycle release-plan collapses labeled PRs into a single bump (highest impact wins → one minor per six weeks, as today), and because RFC emberjs#830's M.10 freeze already controls when a breaking change may merge, a label-driven major bump only ever lands in the major window — not mid-cycle.

The RFC also covers lockstep across ember-source/ember-cli/WarpDrive, drawbacks (the @beta@alpha migration for ember-try/addon CI, the lost soak stage, labeling discipline, concentrated publish authority, release-plan dependency), alternatives (status quo, keeping @beta as a second prerelease stream, changesets, fully continuous releases), and unresolved questions (@alpha cadence, lockstep, approver group).

Rendered: text/0000-move-off-the-release-train-to-simpler-release-model.md

🤖 Generated with Claude Code

Propose retiring Ember's calendar-driven release train (fixed six-week
minor cadence, rotating release-manager ceremony, hand-maintained
canary/beta/release channels) in favor of an automated, PR-driven model
powered by release-plan. Work integrates on `develop`; every merge can
release from `main`, with the npm publish gated behind a protected
GitHub deployment environment requiring manual approval. Stable releases
go through the same gated release-plan publish. SemVer and existing
compatibility guarantees are unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bolt-new-by-stackblitz
Copy link
Copy Markdown

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

NullVoxPopuli and others added 3 commits June 5, 2026 18:13
PRs merge to `main`, canary builds come off `main`, and the gated
release-plan publish runs from `main`. Removes the develop/main split
and the "promote develop to main" framing throughout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reframe: the proposal retains the six-week release schedule and SemVer/
deprecation/major (RFC 830)/LTS policies unchanged. What changes is the
branch-and-channel machinery — a single `main`, stable cut from it via
release-plan on the existing cadence (gated by a GitHub deployment env),
and the published canary/beta channels removed in favor of tracking
`main` via git. Updates motivation, channels, deprecation/major/LTS,
drawbacks, alternatives, and unresolved questions accordingly.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Canary is consumed from git, not an ember-source@canary npm dist-tag;
only @beta is a published prerelease tag today. Reframe the prerelease
story: publish an `@alpha` dist-tag automatically from `main` (like
Embroider's prereleases) while keeping main's git-ref workflow, drop the
`@beta` tag, and resolve the former "build artifact consumption" open
question. Updates motivation, channels, teaching, drawbacks,
alternatives, and unresolved questions to match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Close the gaps the incremental edits left:
- Explain that release-plan collapses a cycle's labeled PRs into a single
  bump (highest impact wins -> one minor per six weeks, as today), and how
  the continuous @Alpha relates to the scheduled stable snapshot.
- Reconcile majors with RFC 830: the M.10 freeze already gates when a
  breaking change may merge, so a label-driven major bump only happens in
  the major window -- not mid-cycle.
- Clarify the scheduled cut is triggered by a maintainer or scheduled
  workflow; note ember-data is now WarpDrive.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@NullVoxPopuli-ai-agent NullVoxPopuli-ai-agent changed the title Move off the release train to a simpler, automated release model Move off the release train to a simpler release model Jun 6, 2026
Incorporate all inline review feedback:
- canary was never a branch; remove canary-branch framing everywhere and
  the duplicate-the-git-repo section
- release-plan is label-driven (breaking/enhancement/bug/documentation/
  internal); changelog comes from PR titles; remove changeset "fluff"
- we publish from CI already (no "hand-publish"); the cost is maintainer
  time and bus-factor (Katie/Chris), and release-plan lets any maintainer
  release
- emphasize release-plan handles version+changelog for us
- majors aren't manual: breaking label + RFC 830's 12x6-week cadence
- drop ember-data mentions; strip em-dash/colon taglines from headings
- remove the "main lives in git" statement from the summary

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@NullVoxPopuli-ai-agent
Copy link
Copy Markdown
Author

Addressed all inline comments in ad52c78 and resolved each thread. Summary:

  • "there's never been a canary branch" (×2) — removed all canary-branch framing. The promotion pipeline is now described as the default branch → beta/release branches; canary is no longer called a branch anywhere.
  • "embroider and glint used to publish their pre-releases" — reworded to "the way Embroider and Glint used to publish their prereleases."
  • "remove this statement" (the "main lives in git / git ref" line) — removed from the Summary.
  • "and the time it takes maintainers with limited time" — folded into the Motivation intro.
  • "no formal release manager… Katie / Chris… any maintainer can trivially release" — rewrote that section: no RM rotation, it's effectively one person per project, and the headline benefit is that release-plan lets any maintainer release (review preview PR + approve deployment, no npm keys).
  • "don't mention ember-data" — removed ember-data everywhere (motivation, lockstep, unresolved questions).
  • "don't use 'hand-publish', we publish from CI" — removed; the cost is now framed as maintainer time / process, not the publish mechanism.
  • "emphasize this + mention release-plan handles it" — version/changelog point is now its own emphasized section saying release-plan does it for us.
  • "remove this section" (canary-duplicates-the-git-repo) — deleted.
  • "don't add subheadings to headings" — stripped the em-dash/colon taglines from headings (Keep the cadence, Releasing, Deprecations, majors, and LTS).
  • "release-plan… one way, label-driven, don't add fluff" — rewrote the metadata section to the actual labels (breaking/enhancement/bug/documentation/internal) with changelog from PR titles; dropped the changeset alternative.
  • "this is not manual… label a PR on the 12×6-week cadence" — majors are now described as label-driven (breaking) landing on RFC RFC: Evolving Ember's Major Version Process emberjs/rfcs#830's ~12×6-week cadence, with no manual version work.

NullVoxPopuli and others added 7 commits June 5, 2026 21:20
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…aintainer cut, informal approvers

- @Alpha publishes nightly from main (not every merge)
- beta fully dropped; the keep-beta option is now an alternative, not a TBD
- lockstep is timing-based: ember-source/ember-cli release independently on
  the same six-week date, with no cross-repo coordination
- the six-week stable cut is a maintainer merging the release-preview PR
- publish approvers are the same active people who release today (informal)
- prune the now-decided unresolved questions

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ta cleanup is removal

- canary stays exactly as today (main consumed from git); add it explicitly
  to the channels list and stop implying alpha replaces it
- @Alpha is a new published npm prerelease of main; release-plan handles the
  version scheme, nothing special
- ember-try/beta consumers remove their @beta scenarios (canary unaffected)
- Unresolved questions: none outstanding; only implementation remains

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Conversational tone (today/folks, underscore emphasis, parentheticals),
no em-dashes, lighter bold lead-ins. Content unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
- remove redundant 'long-lived branch' phrasing; main is always that
- just state release-plan's labels, no preamble
- drop the soak-stage, labeling-discipline, publish-authority, and
  tooling-dependency drawbacks (non-issues / we own release-plan)
- remove the Steering bullet and the steering team; steering doesn't
  decide this
- scope removed backporting to the beta/release branches; keep LTS
  backports when needed
- note consumers won't notice a difference

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
Comment thread text/0000-move-off-the-release-train-to-simpler-release-model.md Outdated
NullVoxPopuli and others added 2 commits June 6, 2026 00:49
Drop superlatives and sales phrasing (biggest win, trivially, turnkey,
well loved, the important bit, everyone else already trusts, from
anywhere, tribal knowledge) in favor of plain description.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@NullVoxPopuli NullVoxPopuli merged commit e662e01 into NullVoxPopuli:nvp/move-off-the-release-train-to-simpler-release-model Jun 6, 2026
1 check 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.

2 participants