Four Steps That Must Not Be Interleaved
Landing a finished piece of work is four things: commit it, push it, stamp the record that lives with the material, and write the log entry that says this happened. Any one of them alone is unremarkable. What matters is that no other landing may happen between them.
If another session slips a landing in between your commit and your stamp, the repository and the record now describe different histories, and nothing in either one says so. That is the worst class of data problem: silent, plausible, and discovered months later by someone trying to answer an unrelated question.
Be exact about what the lease buys, because it is easy to over-claim. It excludes other landings. It does not make the four steps atomic, and the difference is not academic: if your own process dies after the push and before either record write, you get the identical split history with nobody else involved. Serialization is not transactionality. What closes that remaining gap is not a bigger lock but a reconciliation pass — a view that walks the repository against the record and reports where the two disagree.
The Lease, and Why It Is Not a Lock
The mechanism is a lease held on the target repository for the duration of those four steps. Calling it a lease rather than a lock is not vocabulary fussiness — it names the property that matters, which is that a holder who never comes back can be taken off it.
A lock is held until released. A session that dies holding one has created a permanent outage, and the recovery is a human finding the stale lock and deciding it is safe to break. A lease is held until released, or until someone breaks it deliberately and the break is itself recorded, which turns "the holder never came back" from an incident into a delay. Given that these holders are interactive sessions on laptops that get closed, that distinction is load-bearing rather than theoretical.
Verification Is Part of the Motion Too
One more coupling belongs here: the landing refuses to proceed without a recorded passing verification for this unit of work. Not a suggestion in a document — the command looks for the event and exits if it is absent.
There is an override, and using it writes that fact into the record. That combination is the shape to aim for everywhere: the escape hatch exists, because a guard with no override gets removed the first time it is wrong at an awkward hour, and taking it is never invisible.
You could ask why the verification check lives inside the landing command at all, rather than as a separate step people are asked to run first. That separate arrangement is exactly the one that rotted in the previous track: when verification is independent of the landing, a step that costs nothing to skip eventually gets skipped. Rather than asking for the order to be honored, make the wrong order unable to proceed.