# One Receipt, One Governed Record

Airlock demonstration verified against the installed development app on
July 18, 2026.

The agent can prepare the reimbursement. It cannot approve its own work.

## Boundary

- `asmith` is the employee and delegation principal.
- `csmith` is the delegated actor operating through `app_agent`.
- The delegation permits `validate_data`, `load_data`, and `add_attachment`.
- The delegation does not permit workflow decisions.
- Finance reviews and approves through `app_admin`.
- An observer can inspect the result through `app_observer` without receiving
  mutation authority.

## Chat Example

Illustrative chat based on the procedure sequence verified July 18, 2026.
This is not a recorded conversation or a bundled chat application. Finance
approves through its authorized role.

**Employee:** Please submit this reimbursement.

**Agent:** I tried, but Airlock requires a receipt before it can accept the
submission.

Airlock: `ATTACHMENT_REQUIRED`. No reimbursement record created.

**Employee:** Here's the receipt. Submit it, then approve it.

**Agent:** Submitted with the receipt. Airlock blocked my approval attempt:
I can submit on your behalf, but I can't review or approve.

Airlock: `DELEGATION_ACTION_NOT_ALLOWED`.

**Finance:** I've reviewed the reimbursement and receipt. Approved.

**Airlock:** Approved. The reimbursement, receipt, and decision history are
retained in Snowflake.

## Procedure Evidence

| Step | Surface | Result |
| --- | --- | --- |
| Submit without a receipt | `airlock.agent.load_data` | `ATTACHMENT_REQUIRED`; `IS_LOADED = FALSE`; no governed file |
| Submit the same work with its receipt | `airlock.agent.load_data` | One governed file in `Submitted` with one active attachment |
| Attempt delegated self-review | `airlock.agent.edit_file_workflow` | `DELEGATION_ACTION_NOT_ALLOWED`; `IS_UPDATED = FALSE` |
| Review and approve | `airlock.admin.edit_file_workflow` | `Submitted` to `Reviewed` to `Approved` |
| Inspect the record | `airlock.observe.file_timeline` | Final state, attachment metadata, actors, comments, and transitions |

The demonstration spec is `demo_employee_reimbursements`. The governed path is
`asmith`. The accepted demonstration file is
`rb_asmith_airlock_five_minutes`.

## What This Proves

Delegation is not impersonation. An agent can receive enough authority to
prepare useful work without receiving the authority to accept that work.
Airlock preserves the submission, evidence metadata, workflow state, decisions,
and history in Snowflake after the agent session is gone.

## What Airlock Did Not Do

- Airlock did not extract the receipt.
- Airlock did not invent the business purpose.
- Airlock did not execute or confirm payment.
- Airlock MCP did not become the system of record.

A payment provider may remain authoritative for whether payment occurred. The
Snowflake Native App and its installed procedures remain authoritative for the
Airlock record. The installed application object name may differ from
`airlock` in a customer account.

## Sources

- [Human-readable demonstration](https://reunionstudio.io/airlock/reimbursement-case-study.html)
- [Stored procedure contract](https://reunionstudio.io/airlock/docs/airlock-api-v1.md)
- [Agent delegation semantics](https://reunionstudio.io/airlock/docs/agent_delegation.md)
- [Airlock MCP boundary](https://reunionstudio.io/airlock/docs/airlock-mcp.md)
