The Files With No Owner
Most of a landing touches material that belongs to exactly one unit of work, and a claim protects it. But a few files are shared by everyone: a registry that every new item registers in, a message catalog that every new item adds keys to. Nothing claims those, several sessions edit them the same afternoon, and that is where the interesting failures live.
The asymmetry is worth learning, because it tells you which half-finished state is dangerous. A registry entry whose material has not landed yet renders nothing and crashes nothing — it fails safe. A registry entry whose message keys are missing throws when the page is built — it fails loud. So the lethal combination is exactly one: committing a neighbor's registry entry without their message keys.
Which yields a rule sharper than "be careful with shared files": check the key, not the entry. Before committing shared wiring, assert that every entry in the registry — not only yours — resolves in every catalog. If somebody else's does not, wait. Do not helpfully author their block.
The Policy That Beat Every Clever Alternative
When many sessions run in parallel, the settled answer is: each session commits only its own material, and one final pass wires all the shared registration together in a single coherence-checked commit. It has a visible cost — until the wiring lands, the material exists and is not indexed anywhere — and naming that cost out loud is part of proposing the policy.
It also has a property that is easy to miss: leaving both your registry entry and your catalog keys uncommitted in the working tree is safe and self-healing. They travel together, so whichever session commits the shared files next carries yours as a complete unit. The anxiety that makes people reach for clever staging is unfounded; the wiring does not need to be held hostage until the repository is quiet.
What generalizes is this: the rule for a shared file is not "be careful" but knowing which half-finished state fails loud. Leave the ones that fail safe alone and block the single loud one with a check. Then what you have to be careful about shrinks to one list, and a list can be turned into a script.