An answer an agent cannot check is a risk. If a model reads "18,442 unique wallets" from an API, it has no way to tell whether that number is right, out of date, or invented. It has to trust the source.
That kind of trust does not scale to systems that run on their own. So we made provenance part of every answer instead of a feature you request separately.
What provenance means here
For any value Testril returns, you can ask where it came from. We report the source events, the block range, the transformation we applied, and the latest block the answer reflects. The number and the record of how we produced it stay together.
Why computing on demand helps
Testril computes answers from indexed source data rather than serving tables built in advance. Because we run the computation when you ask, the full path from source block to final value is always available, and we can replay it. Nothing sits between the chain and the result that we cannot account for.
This has a useful side effect. Two agents that ask the same question get the same answer, and both can trace it back to the same blocks.
Verifiable by construction
Self-describing JSON tells an agent the shape of a result. A provenance request tells it where the result came from. Together they let an agent confirm an answer before acting on it. That is the point of giving agents data they can reason about rather than data they have to take on faith.