Skip to content

docs: distinguish integration trunk from GitHub default branch#19

Merged
amcheste merged 1 commit into
developfrom
docs/branch-model-clarification
May 12, 2026
Merged

docs: distinguish integration trunk from GitHub default branch#19
amcheste merged 1 commit into
developfrom
docs/branch-model-clarification

Conversation

@amcheste-ai-agent
Copy link
Copy Markdown
Contributor

Why

The branch model docs conflated two distinct concepts under the single word "default":

  1. Integration trunk — the branch contributors create features from and PR against. Always develop.
  2. GitHub's default branch repo setting — a UX pointer that controls landing page, git clone target, and PR-base UI suggestion.

These are different concerns and the rules differ:

  • The integration trunk is always develop. It doesn't change.
  • The GitHub default branch setting should be develop until first release, then flip to main so external visitors see the shipped product on the landing page.

What changes

  • Branch model table: rename develop's row from "Default branch" → "Integration trunk", clarify scope.
  • New subsection: GitHub default branch setting — names the distinction, states the rule.
  • Setup section: clarify that develop-as-default is correct for new repos, with the flip happening at first release.
  • Release ceremony: new Step 5 ensures main is the GitHub default branch. Idempotent (only fires on first release; no-op after).
  • Release-ceremony-at-a-glance diagram updated to reflect the flip.

Companion changes (separate PRs)

  • /publish-release skill update in mac-dev-setup to implement Step 5 in code.
  • Manual gh repo edit --default-branch main on the 6 repos that have releases but currently still have develop as their GitHub default: assets, cam-brand, engineering-handbook, niche-hunter, overleaf-mcp, overleaf-mcp-site.

The philosophy doc (branching-strategy.md) doesn't need updates — its principle "main = latest release" is actually strengthened by this change (under the old model, landing on the repo showed develop, not main, so the principle was true but not the visitor's default experience).

The branch model table conflated two concepts under the single word
"default": (1) the integration trunk that contributors branch from
and PR against, and (2) GitHub's "default branch" repo setting that
controls landing page, clone target, and PR-base UI suggestion.

These are different concerns and the rules differ:

- Integration trunk: develop, always. Doesn't change with release
  state. Where every change lands.
- GitHub default branch setting: develop until first release, then
  main. So pre-release the landing page shows the integration state
  (the only meaningful state), and post-release it shows the shipped
  product to external visitors.

Updates:

1. Rename develop's row in the branch model table from "Default
   branch" to "Integration trunk" and clarify its scope.
2. Add a new GitHub default branch setting subsection that names
   the distinction explicitly and states the rule.
3. Clarify the setup-repo description so it's clear develop-as-
   default is correct for new repos (no releases yet), with the
   flip happening at first release.
4. Add Step 5 to the release ceremony: ensure main is the GitHub
   default branch. Idempotent — only takes effect on the first
   release; no-op afterwards.
5. Update the release-ceremony-at-a-glance diagram to show the
   default flip at first release.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: amcheste <13696614+amcheste@users.noreply.github.com>
@amcheste amcheste merged commit 4fc9015 into develop May 12, 2026
5 checks passed
@amcheste amcheste deleted the docs/branch-model-clarification branch May 12, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants