← Back to research
Tool

Receipts

Receipts remembers which expensive build or test already passed, so the next agent reruns it only when relevant inputs change.

A new session checks receipts for the current project. Media, web and server, catalogs, and native apps have matching pass receipts. Transport and package proofs have no matching receipt, so those results remain unknown.
4 expensive proofs recovered 2 scopes still unknown

A passing result outlives the conversation

Pixel Brite can spend hours building FFmpeg or checking a platform-specific playback path. A new agent sees the code but may never see the conversation where that work passed. Without a durable result, it pays the same cost again.

Look up the inputs before running the job

The project computes a key for one expensive check. Receipts looks for a passing result under that exact key. A match lets the command reuse the result; a miss runs the check. The project records a pass only after the command succeeds and its inputs still produce the same key.

That last comparison matters when agents share a working tree: a run that started before a relevant edit cannot certify the files that exist after it. Failed or interrupted runs leave no passing receipt.

Only relevant changes invalidate a receipt

The key covers source files, dependencies, build settings, toolchain, target platform, and the check’s definition of success. Editing web copy leaves an FFmpeg receipt valid. Changing a codec, compiler flag, or playback assertion changes the key and runs the work again.

The project chooses those inputs using its dependency graph or existing artifact checks. Receipts only stores and retrieves the result. The skill describes that division; receipt.py provides a small Python implementation.