You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replaces #449 (which becomes a sub-task — beta needs to be reconciled before / during this migration anyway).
Why
The current PINKYBOT_CHANNEL=stable|beta two-branch model has no production fleet on beta. Mac Mini and Pi both run stable. Beta exists as a long-lived integration branch that diverges from main whenever hotfixes land (#449). Today (2026-05-11) the divergence required a careful cherry-pick (#448) instead of a clean rollup (#447 closed).
The cost of maintaining beta exceeds the value, because beta isn't serving as a soak environment — it's just an unmerged-work parking lot.
Proposed end state
One long-lived branch:main. Feature branches off main, short-lived.
Tagged releases:v2026.05.071 calver style.
Channel via tag selection, not branch:
stable → latest v* tag (Mac Mini, Pi fleet)
edge → main HEAD (dev hosts)
beta → deprecated alias for edge
Hotfixes = normal PRs. No special "land on main, backport to beta" pattern.
Design doc
Full plan in docs/plans/task-450-trunk-based-releases.md (gitignored — same as #84, #433).
Why
The current
PINKYBOT_CHANNEL=stable|betatwo-branch model has no production fleet on beta. Mac Mini and Pi both run stable. Beta exists as a long-lived integration branch that diverges from main whenever hotfixes land (#449). Today (2026-05-11) the divergence required a careful cherry-pick (#448) instead of a clean rollup (#447 closed).The cost of maintaining beta exceeds the value, because beta isn't serving as a soak environment — it's just an unmerged-work parking lot.
Proposed end state
main. Feature branches off main, short-lived.v2026.05.071calver style.stable→ latestv*tag (Mac Mini, Pi fleet)edge→ main HEAD (dev hosts)beta→ deprecated alias foredgeDesign doc
Full plan in
docs/plans/task-450-trunk-based-releases.md(gitignored — same as #84, #433).Migration phases
Phase 1 — Additive (this week):
v2026.05.072update_and_restartto recognizeedgeand resolvestableto latest tag/admin/channelendpointrelease.ymlGH Action for manual tag-cut + release-notes:stable/:edge/:v*tag publishingPhase 2 — Subtractive (one week later, after validation):
PINKYBOT_CHANNEL=betabetafrom accepted channel valuesarchive/beta-2026-05-DD, deletebetabranchFiles touched (Phase 1)
src/pinky_daemon/api.py—/admin/channel+/admin/update(channel→ref resolution).github/workflows/release.yml— new.github/workflows/docker-publish.yml— tag-push trigger + multi-tag publishingDockerfile— channel arg semantics (if needed)CLAUDE.md— "Release Channels" sectionEffort
~2 days focused work, spread over a week with validation gaps.
Decisions needed from Brad (in design doc)
v2026.05.072or semver? (rec: calver)Status
Design doc drafted. Awaiting Brad's go on the decision points before Phase 1 step 1 (which is the riskiest).
🤖 Opened by Barsik