At my current workplace (at the time of writing), we have what could be best described as the classic “trunk based” development pattern.
A branch called main, with release branches cut off from it at arbitrary points. Work merged in whenever it was ready. You get the idea, but if not, this seems to be a good illustration
This works pretty well and is ultimately what will continue to be used by us for days to come. However, I had a specific set of problems with this method, that I aimed to solve using pretty specific approach, that builds on top of trunks, and is the namesake of this post.