Source Control as Production
A commit is not history; it is a candidate for production state. Branching models, protected branches and required checks as delivery infrastructure rather than team preference.
When merging triggers delivery, the repository stops being a record of what happened and becomes the control plane for what production is.
Branching models are delivery constraints, not team preferences — and there is no universal winner, because they optimise for different release realities.
Small changes, integrated into one mainline at least daily, with main kept releasable at all times — which is a set of demanding requirements, not a branch naming convention.
Divergence has a cost that grows superlinearly with time, and the expensive part — semantic conflict — is invisible to every merge tool.
Rules on the branch pointer that delivery reads from — enforced server-side, because anything enforced on the developer's machine is advice.
Automated checks bound to a branch as a merge condition — useful exactly to the extent that they ran on the right code, mean something, and are trusted.