How do I prove which version of an AI output my client approved?
Bind the decision to the artifact. When a client accepts a handover, the acceptance is recorded against steps whose saved results are fixed in verifiable receipts. The approved version is the one in the accepted record; any later edit is a different step with its own receipt and date.
Version arguments survive because approval usually floats free of the artifact: a "looks good" in a thread, three attachments with the same name, a final that was final twice. The fix is structural. Put the version in a record whose contents cannot quietly change, and record the client's decision on that record. After that, "which version did you approve" is a lookup, not a negotiation.
In the Zambo record, each step's saved result is committed in its AER-1 receipt (IETF Internet-draft-zambo-aer1-21) at the moment it is saved. The handover presents the steps as delivered. The client's acceptance is recorded on that handover, by the client, with its date. If the work changes afterwards, the change is a new step or a new handover; the accepted one stays exactly as accepted, and the comparison between the two is a diff anyone can run.
For work you deliver as files, add the file step to the job before acceptance, so the accepted record names the file's saved form. The habit costs nothing at delivery time and retires an entire species of dispute: the silent revision, the wrong attachment, and the client who approved version two and is certain it was version three.
Checklist: version-proof delivery
1. Finish the version. 2. Save it as a step in the job (file steps included) before sending anything. 3. Build the handover from the job as it stands. 4. Send the handover link as the delivery, with the version named in your message ("v3, as in the handover"). 5. Let the client accept on the handover. 6. Never edit an accepted job; changes start a new step or a new handover, labelled as the next version. 7. In any later argument, answer with the accepted handover link and the newer record's date, nothing else.
Worked example
The binding, opened publicly: https://zambo.dev/handover/45434a17-4afc-486a-9646-e689bcee4297 shows an accepted job whose acceptance state, summary, and steps sit on one record. A later version of that work would be a separate record; the accepted one cannot absorb it silently, which is the entire point.
Frequently asked questions
The client approved by email, not on the handover. Does the version still hold?
The version holds if the email names the handover or the exact file the handover contains. An approval that floats free of any fixed artifact is the weak case this page exists to replace; move the decision onto the record.
What if the client wants changes after accepting?
Normal, and handled by the same rule: changes are new steps or a new handover, accepted in turn. The chain of acceptances is the version history, each link checkable, none rewritten.
Can two versions share one receipt?
No. A receipt commits to one saved result. Two versions are two saved results and two receipts, which is precisely what makes the approved one identifiable later.
By Brennan Zambo, founder of Zambo.
Last verified: 2026-10-17.
Try a handover
A handover gives your client one proof link with verifiable receipts to review, then Accept or Flag.
try it: say 'use zambo to hand this over to <client>' in your ai