Skip to content

Revert to classic GitFlow; stay on semver 10.x until a breaking change is needed - #653

Merged
dennisdoomen merged 4 commits into
mainfrom
dennisdoomen-gitflow-adoption-impact
Aug 24, 2026
Merged

Revert to classic GitFlow; stay on semver 10.x until a breaking change is needed#653
dennisdoomen merged 4 commits into
mainfrom
dennisdoomen-gitflow-adoption-impact

Conversation

@dennisdoomen

@dennisdoomendennisdoomen commented Aug 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR reverts the branch and versioning model from calendar versioning back to classic GitFlow and semver. Unlike the version originally in this PR, it does not resume at v11 right away — the project stays on 10.x indefinitely, and defers a breaking major for as long as possible.

  • Adds ADR-0009. It replaces ADR-0004 (calendar versioning). It keeps ADR-0007 (cut release branches on demand) and ADR-0008 (no separate experimental branch) as decisions, just renamed onto the new branch layout.
  • Branches are renamed, not created fresh: the current main becomes develop (integration trunk, publishes preview builds); the current release/v10.4 becomes main (production trunk, gets tagged for GA).
  • release/vX.Y is cut from develop on demand for every 10.x minor (10.5, 10.6, ...), same as before — not just for an eventual major.
  • Every 10.x release stays non-breaking. Dependabot/Renovate users can always safely upgrade within 10.x. v11 is reserved for whenever a breaking change actually becomes necessary — no fixed date — and that move will use fallout-migrate, the same tool already used for the NUKE-to-Fallout migration.
  • The older support/v10 line (versions before 10.4) is untouched.
  • Updates AGENTS.md, CONTRIBUTING.md, README.md, the release/branching docs, version.json, the build config, and the CI workflow files to match.
  • Also rewrote docs/branching-and-release.md for length — it was too long and repeated itself across several near-duplicate release-flow examples. It's about a third of its original length now, with one consolidated release walkthrough instead of three overlapping ones.

Not done here

Renaming main to develop, renaming release/v10.4 to main, and making develop the GitHub default branch are settings changes for you to do directly on GitHub. ADR-0009 notes this.

Verification

  • ./build.ps1 Compile succeeds. The build regenerated build.yml and build-cross-platform.yml itself.
  • dotnet test tests/Fallout.Build.Specs passes, except 3 tests that were already failing before this change. They check for a hardcoded Fallout-build/Fallout remote name and fail on any forked checkout.
  • git merge-tree shows no conflicts against current main.

🤖 Generated with Claude Code

@dennisdoomendennisdoomen added documentation Improvements or additions to documentation target/vCurrent Targets the current version labels Aug 23, 2026
@dennisdoomen
dennisdoomenforce-pushed the dennisdoomen-gitflow-adoption-impact branch 3 times, most recently from d26d294 to 92f1843CompareAugust 23, 2026 18:41
@dennisdoomendennisdoomen changed the title Revert to classic GitFlow + semver majors, resuming at v11Revert to classic GitFlow; stay on semver 10.x until a breaking change is neededAug 23, 2026
@dennisdoomen
dennisdoomen marked this pull request as ready for review August 23, 2026 18:42
…breaking change is needed
This ADR replaces ADR-0004 (calendar versioning). It keeps ADR-0007's
on-demand release-cut rule and ADR-0008's decision against a separate
experimental branch, just renamed onto a develop/release-vX.Y/main
layout. It also changes part of ADR-0001: GA tags move back to main.
develop and main are renames of branches that already exist (main and
release/v10.4), not new branches. The project stays on semver 10.x
indefinitely -- every 10.x release is non-breaking, so Dependabot and
Renovate upgrades within 10.x are always safe. v11 is reserved for
whenever a breaking change actually becomes necessary, with no fixed
date, and that move will go through fallout-migrate, the same tool
already used for the NUKE-to-Fallout migration.
Updates the amendment notes on ADR-0001, ADR-0004, ADR-0007, and
ADR-0008, and the ADR index, so each ADR points to what replaced or
kept its decision.
Rewrites AGENTS.md, CONTRIBUTING.md, README.md, and the release,
branching, conventions, experimental-API, obsolete-API, and roadmap
docs for the ADR-0009 model: develop (renamed from main; integration
trunk, preview builds) -> release/vX.Y (cut on demand per 10.x minor,
rc builds) -> main (renamed from release/v10.4; production, GA tags)
-> support/v10 (legacy, unaffected).
Also rewrites docs/branching-and-release.md for length and clarity --
merges duplicate release-flow examples into one walkthrough, drops
redundant tables, and tightens the branch-protection section.
- version.json: preview core "10.5.0-preview.{height}" (the next
10.x minor), updated publicReleaseRefSpec for main/release-v/
support-v, release branch template "release/v{version}".
- build/Build.cs: adds a DevelopBranch constant, repurposes
MainBranch as the production trunk, updates the ReleaseBranchPattern
and SupportBranchPattern comments and examples.
- build/Build.CI.GitHubActions.cs: the ubuntu-latest PR gate now also
targets develop. The cross-platform release-intent gate now also
targets main, since a PR into main is always a release/vX.Y GA merge
or a hotfix. build.yml and build-cross-platform.yml were regenerated
by the build, not hand-edited.
- build/Build.CodeGeneration.cs: tool-wrapper source links point at
develop, the new default branch.
- Hand-written workflows (publish-packages-preview.yml,
publish-packages-release.yml, build-skip.yml,
prune-preview-packages.yml): triggers and comments updated for
develop/main and the 10.x version examples.
The older support/v10 line (versions before 10.4) is not affected.
Renaming main to develop, renaming release/v10.4 to main, and making
develop the GitHub default branch are settings changes for the
maintainer to do separately. ADR-0009 notes this.
The rename from ADR-0005 to ADR-0009 missed the bare "0005" mentions
in docs/adr/README.md (the table's link label and three cross-reference
notes) -- the earlier find-and-replace only matched "ADR-0005" and the
old filename, not the bare number. Also moves the row to keep the
table in ADR-number order.
@dennisdoomen
dennisdoomenforce-pushed the dennisdoomen-gitflow-adoption-impact branch from 2f4ff4e to c4f8e29CompareAugust 24, 2026 05:21
@dennisdoomen
dennisdoomen requested a review from a team as a code ownerAugust 24, 2026 05:44
@dennisdoomen
dennisdoomen merged commit d6a6a31 into mainAug 24, 2026
8 checks passed
@dennisdoomen
dennisdoomen deleted the dennisdoomen-gitflow-adoption-impact branch August 24, 2026 05:51
@dennisdoomendennisdoomen mentioned this pull request Aug 24, 2026
dennisdoomen added a commit that referenced this pull request Aug 24, 2026
Where main and develop diverged on the same lines, keep develop's
version: the branching/versioning-model docs and version.json reflect
develop's GitFlow reversion (#653), and the migration-engine files
(ScriptRewriter folded away, RewriteCsFilesStep/RewriteCsprojsStep,
their specs) keep develop's refactor. docs/rebrand-plan.md stays
deleted, matching develop.
Non-conflicting changes from main (workflow tweaks, generated tool
wrappers, AbsolutePath fix, etc.) are carried through as-is.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationtarget/vCurrentTargets the current version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@dennisdoomen@ChrisonSimtian