Context
The release-process review recommended a branch model that separates upstream sync, feature work, and bug fixes so releases stay coherent (no "archaeological software" where four kinds of change pile into one release).
Current flow: worktree branch → push directly to master. There is no integration branch, and the upstream auto-merge bot pulls upstream master (mixing stable + beta heads).
Proposed model
main # always releasable-ish, no direct agent churn
develop # integration branch for phone-UI work
upstream-sync/st<ver> # one branch per upstream merge, upstream-only changes
feature/<name> # small PRs into develop
fix/<name>
Release flow: upstream-sync/* → build + smoke test → develop; feature/* → PR → develop; develop → release/vX.Y.Z → checklist → tag → release → back-merge to main.
Also (separate upstream tracks)
Split the sync source so public beta/stable builds default to SmartTube stable tags, and only alpha/internal builds track SmartTube beta/head. Gate C correctly landed on 31.94 stable, but by convention, not by mechanism.
Acceptance criteria
Notes
Acknowledged trade-off: this is heavier than the current single-maintainer flow. May be deferred until there are external contributors — but tracking it so the decision is explicit, not forgotten.
Context
The release-process review recommended a branch model that separates upstream sync, feature work, and bug fixes so releases stay coherent (no "archaeological software" where four kinds of change pile into one release).
Current flow: worktree branch → push directly to
master. There is no integration branch, and the upstream auto-merge bot pulls upstreammaster(mixing stable + beta heads).Proposed model
Release flow:
upstream-sync/*→ build + smoke test →develop;feature/*→ PR →develop;develop→release/vX.Y.Z→ checklist → tag → release → back-merge tomain.Also (separate upstream tracks)
Split the sync source so public beta/stable builds default to SmartTube stable tags, and only alpha/internal builds track SmartTube beta/head. Gate C correctly landed on 31.94 stable, but by convention, not by mechanism.
Acceptance criteria
developbranch exists and is the default integration targetupstream-sync/*branches first, not straight to masterNotes
Acknowledged trade-off: this is heavier than the current single-maintainer flow. May be deferred until there are external contributors — but tracking it so the decision is explicit, not forgotten.