Consumption. A deploy job should refuse to run unless a valid record matches the artifact it is about to ship. Compute the digest of what you are deploying, query the log for an unconsumed record with that digest, unexpired, under the currently active policy version, and with a reviewer whose scope covers the action. If exactly one matches, proceed and append a new entry with the commit reference and consumption timestamp. If zero or many match, fail closed and say why. Two valid approvals for one artifact usually means something went wrong upstream, and the right response is to investigate rather than pick one.
Point the commit back at the approval with a trailer or deploy metadata field such as Approval-Record: apr_7f3c..., so anyone reading history can jump to the evidence. When the artifact is a model output or agent run, the same field goes in the run metadata, the same idea as attaching a provenance attestation to an artifact.
Querying during an incident. The value shows up at the worst moment. The queries you should run without writing code:
| Incident question | Query |
|---|
| What shipped in this window? | Approvals where consumed_at falls in the window |
| Who approved the change that broke checkout? | Match on artifact.diff_sha256, read reviewer and scope |
| Did anyone approve out of scope? | Reviewer scope does not cover the action |
| Are we shipping on stale approvals? | consumed_at later than expires_at (should be zero) |
| Did policy change mid-incident? | Policy versions in force at each decided_at |
The last query is the one almost nobody can answer and often the decisive one. If a policy tightened two days before an incident, approvals granted under the old version may have been legitimate then and inadequate in hindsight. Distinguishing those cases is the difference between "we followed our process" and "our process was wrong," and only a stored policy version tells them apart. Sweep in the other direction too: a compromised account or a confused reviewer probably approved more than one thing.
Reversing. Approvals are sometimes wrong. Reversal has three parts: append a revocation record referencing the original approval_id with a reason, revert the artifact and record the reversal commit in that entry, then audit the blast radius by querying everything else approved under the same policy version or by the same reviewer in the same window.
Reversibility of the action itself still matters. Reading wrong records is recoverable; deleting them, sending an external notification or charging a card is not per this analysis of bounding worst-case agent impact. The record cannot make an irreversible action reversible. It can tell you quickly which irreversible actions ran under the same flawed approval, which is the next best thing.
A worked example with numbers: a policy requires release-manager approval with a 24 hour expiry. Over a month the pipeline logs 400 approvals. A query finds 380 consumed inside the window and 20 consumed late, all by the same two reviewers during a holiday stretch. That is a 5 percent stale-approval rate concentrated in a known window and a known pair of people. Without the record the finding is invisible; with it, you have a target (shorter expiry plus calendar-aware escalation) and a measurable before-and-after.