Logging every tool call as a receipt changed how I debug agents. When a run goes sideways I replay the receipt trail instead of guessing from chat. Cheap to store and it cuts the mystery hours.
Yes - I’d put that in a third bucket: execution trace.
Session memory helps the agent continue.
Project memory preserves what the project must not forget.
Receipts preserve what actually happened during a run.
All three reduce different kinds of forgetting, and the receipt trail is invaluable when you need evidence instead of reconstruction.