Add explicit coordination between checkpoint and flush of tiered tables to ensure that no block is written to a file we are flushing after the final checkpoint of that file. This will ensure the invariant that in a tiered object every block containing data must be referenced from one or more checkpoints in that object.
Implementation details in the Technical Design for PM-2956
I've left a bunch of comments providing additional detail about how this could work and where it would go in the code. All IMO, there may be gotchas I didn't spot. This is certainly enough work that it could be broken into more tickets if functionality distinct pieces can be pulled out.