The approval-as-object point matches something we hit building a Jira workflow validator: an approval can go stale between when it's raised and when a human actually clicks it, if the evidence underneath shifted in that gap (code changed, a dependency moved) while the approval object still shows the old state. Do you re-check the evidence at the moment of approval, or is an approval good against whatever it was checked against when it was first raised?
The exchange in the responses about stale approvals is the most practical part of this for me. An approval tied to the reviewed revision and its evidence, rather than a permit with no expiry, is the difference between a human in the loop and a human rubber stamp.
We use the same rule when agents work on client systems: the approval records what was reviewed, the commit or data snapshot it was checked against, and who approved it. If any of those moved before delivery, the approval no longer counts and the change goes back for review. It feels slow for about a week, and then it becomes the thing everyone relies on when someone asks why a change shipped.
The coordination framing matches what we see as well. With several agents running, the model is rarely the bottleneck. Knowing who owns which decision is.