# What an Agent Receipt Actually Proves | Reelier

A Reelier 0.32.0 run receipt records outcomes for one execution. When present, `skillContentSha256` identifies caller-hashed retained skill bytes, while absence establishes no binding. It does not establish authorship, intent, approval, signature, safety, correctness, or completeness; push may later add a current-file fallback hash.

Evidence state: reproduced against released `reelier@0.32.0` on 2026-08-11.

## Evidence note

A released-package reproduction and retained receipt support the bounded fields described here; fields outside that record remain unproved.

## Receipt anatomy

A receipt identifies the recorded skill and, when present, `skillContentSha256` identifies caller-hashed retained skill bytes. Its absence establishes no binding; when present, the hash identifies content only. The receipt retains ordered step number, title, outcome, totals, and any failure text. It does not reproduce the full skill source, action tool or args, an explicit intent field, or every successful assertion expression.

## Evidence states

Treat fields as present only when the receipt records them. A passing local verification can detect a failed present claim, while an absent or unchecked field remains outside the proof rather than becoming a pass.

## Non-claims

This does not prove that an action was safe or semantically correct.

This does not prove that every write was observed or receipted.

## Retained proof context

The immutable proof bundle retains the released-package reproduction, its observed facts, and the byte-retained receipt used for this bounded claim.

## Reproduction

The local proof creates and verifies one unsigned receipt at a pinned source revision. It demonstrates the recorded run fields it prints; it does not establish safety, semantic correctness, complete observation, authorship, intent, trusted execution time, active policy, or a write-state delta.

```powershell
$expectedPackageIntegrity = "sha512-XFrsLKdPuw7R0+gNcvduUIHDj2RE4m9j6eLgmRPKLOKS+Z1SiQEj0sLEmIkxaUujoM8NUfyzeUgIOXL1kAihrQ=="
$actualPackageIntegrity = (npm view reelier@0.32.0 dist.integrity).Trim()
if ($LASTEXITCODE -ne 0) { throw "npm view failed: $LASTEXITCODE" }
if ($actualPackageIntegrity -ne $expectedPackageIntegrity) { throw "Unexpected package integrity: $actualPackageIntegrity" }
npx --yes reelier@0.32.0 --version
if ($LASTEXITCODE -ne 0) { throw "npx version failed: $LASTEXITCODE" }
$proofDir = Join-Path $env:TEMP ("reelier-receipt-proof-" + [guid]::NewGuid().ToString("N"))
New-Item -ItemType Directory -Path $proofDir | Out-Null
Push-Location $proofDir
try {
$skill = Join-Path $proofDir "httpbin-echo-check.skill.md"
Invoke-WebRequest -ErrorAction Stop -Uri "https://raw.githubusercontent.com/seldonframe/reelier/bd44bf81bbd41915543fb647f433ddb386cc6a1d/examples/registry-seeds/httpbin-echo-check.skill.md" -OutFile $skill
$expectedSkillSha256 = "04748fc814f8a983f941ea2f97e66a6f38ba472e62bab0fe2cbd774a8dfc49df"
$actualSkillSha256 = (Get-FileHash -Algorithm SHA256 $skill).Hash.ToLowerInvariant()
if ($actualSkillSha256 -ne $expectedSkillSha256) { throw "Unexpected skill SHA-256: $actualSkillSha256" }
npx --yes reelier@0.32.0 run $skill
if ($LASTEXITCODE -ne 0) { throw "reelier run failed: $LASTEXITCODE" }
$receipt = Join-Path $proofDir ".reelier\runs\httpbin-echo-check.jsonl"
npx --yes reelier@0.32.0 verify $receipt
if ($LASTEXITCODE -ne 0) { throw "reelier verify failed: $LASTEXITCODE" }
} finally {
Pop-Location
}
```


## Falsifier

A present hash that does not identify the retained skill bytes, or a receipt with no recorded outcome, would falsify this claim.

## Sources

- [Reelier 0.32.0 registry metadata](https://registry.npmjs.org/reelier/0.32.0)
- [Released runner contract](https://unpkg.com/reelier@0.32.0/dist/runner.d.ts)

## Citation-friendly definition

A Reelier receipt records outcomes for one execution and, when present, `skillContentSha256` identifies caller-hashed retained skill bytes. Its absence establishes no binding; when present, the hash identifies content only.

## Related evidence

- [Receipt vs. audit log](https://www.reelier.com/evidence/receipt-vs-audit-log)
- [Receipt completeness limit](https://www.reelier.com/evidence/receipt-completeness-limit)
- [Record MCP tool calls](https://www.reelier.com/evidence/record-mcp-tool-calls)
- [Test MCP server behavior](https://www.reelier.com/evidence/test-mcp-server-behavior)
- [Detect MCP tool-call drift after an upgrade](https://www.reelier.com/evidence/detect-mcp-tool-call-drift-after-upgrade)
- [Duplicate agent writes](https://www.reelier.com/evidence/duplicate-agent-writes)
- [Run receipt reference](https://www.reelier.com/learn/run-receipt)

Canonical: https://www.reelier.com/evidence/what-agent-receipt-proves

Markdown twin: https://www.reelier.com/evidence/what-agent-receipt-proves/md

Proof links:
- [Executable receipt proof](https://github.com/seldonframe/reelier/blob/27479b61eb29da7437729594afdccd7009d5810d/docs/evidence/receipt-proof/EXECUTABLE-PROOF.md)
- [Proof observation](https://github.com/seldonframe/reelier/blob/27479b61eb29da7437729594afdccd7009d5810d/docs/evidence/receipt-proof/PROOF-OBSERVATION.md)
- [Retained receipt](https://github.com/seldonframe/reelier/blob/27479b61eb29da7437729594afdccd7009d5810d/docs/evidence/receipt-proof/PROOF-RECEIPT.jsonl)

