Field note · June 17, 2026
Introducing trunk-based delivery to a team that had never tried it
Long lived branches were the norm, releases were monthly, and every merge was an event. Here is how we moved to trunk-based delivery without a big bang cutover.
- Delivery
- Team
- Continuous delivery
Solidslate engineering · 7 min read
A client team we joined had a familiar setup: feature branches that lived for weeks, a develop branch, a release branch, and a monthly deploy that took a day and usually slipped. Every merge into develop was a small negotiation. Nobody enjoyed it, but it was the process, and changing a process mid flight is risky.
We moved them to trunk-based delivery over about six weeks, without stopping feature work. This is roughly how.
Week one: make main deployable
Before changing anyone's habits, we made sure main could actually go to production at any time. That meant a pipeline that ran the full test suite, built artifacts, and deployed on merge, plus a fast rollback. Until that exists, asking people to merge to main daily is asking them to be reckless.
Weeks two to three: feature flags
We added a simple flag system: a config driven toggle with per environment values and a clear owner for each flag. New work went behind a flag from the first commit. This is what lets an unfinished feature sit in main without being visible. It is also the single biggest unlock, because it separates deployed from released, and once those are separate, small merges stop being scary.
- Every new feature gets a flag on day one, default off
- Merge to main whenever the code is safe, not when the feature is done
- The flag comes on when the feature is ready, in a separate change
- The flag comes out once the feature is stable, as cleanup
Weeks three to five: shrink the branches
We set a soft rule: a branch lives at most two days. If it is going to take longer, the work is too big and needs to be split. This is uncomfortable at first because it forces you to design changes so they can land incrementally. That skill is the actual point. After two weeks it stopped being a rule anyone thought about.
Weeks five to six: drop the ceremony
With small branches, flags, and an automated deploy, the develop and release branches had nothing left to do. We deleted them. Releases stopped being a scheduled event and became a property of merging.
The hardest part is not technical
The tooling took a week. The rest was helping people trust that a ten line pull request reviewed in five minutes is safer than a thousand line one reviewed in an hour. It is, but you have to feel it a few times.
What changed
- Lead time from merge to production went from weeks to under an hour
- Rollbacks became routine and boring instead of alarming
- Code review got faster because reviews got smaller
- The monthly release day, and the stress around it, disappeared
Keep reading
Related pieces
Field note · May 6, 2026
We deploy a walking skeleton before we write a feature
The first thing we put in production is a thin end to end slice that does almost nothing. Here is why that pays for itself in the first week.
ReadField note · July 29, 2026
How we scope fixed-price work so the estimate survives contact
Fixed-price software goes wrong when the estimate is a single number produced before anyone understands the problem. Here is the process we use instead.
ReadWant this on your team?
Tell us what you're working on. We come back within two business days with a point of view and next steps.