Show me the field crossing the line.
Three settled calls on Base, one token, and a public trace of a single field moving from fresh compute into reuse. Including the freshness bug the trace exposed.
A question prose could not answer
After the last piece, a reader who builds reviewer-facing evidence tooling pushed on the one claim that matters. Economics can discourage the wrong behaviour, he said, but a reviewer still needs to see why a field was eligible for reuse in the first place.
I would want each reused field to carry its own provenance: source block, derivation, dependencies, validity window, and the recomputation that justified reuse.
That is not a question you answer with an argument. So here is a trace. Three paid calls against cbETH on Base, two different wallets, every receipt public. The token was chosen so any reader can verify the values independently.
Three calls, forty-two seconds
| Call | State | Paid | What the buyer paid for |
|---|---|---|---|
| 1 · wry-wasp | miss | $0.003 | the full read at block 49227677, and the seeder slot |
| 2 · arc-adder | hit | $0.001 | a replay still inside the window the answer declared |
| 3 · arc-adder | partial | $0.0016 | a fresh supply read at block 49227697, identity reused |
The third call is the one worth staring at. Its identity artifact id is byte for byte the same as the first call's, and its cache status flipped from miss to hit. Its composite artifact id is new, its computed block is twenty blocks later. One half of the answer was reused. The other half was recomputed. Different wallets, one receipt each.
The supply figure reads the same in all three calls because nothing was minted or burned in those forty-two seconds, not because it was replayed. The proof that the read actually happened is the new block and the new artifact id, not our word for it.
What the trace exposed
Running it honestly meant finding something we did not want to find. The composite answer carried a validity of five blocks, roughly ten seconds. The cache holding it was allowed to live for an hour. So a shared answer could be served long after the window it advertised had closed, while still reporting that the volatile half had been read fresh. The implementation contradicted the promise printed inside its own response.
An artifact must never be served past the validity its own payload declares. That rule was true of the older capabilities and had never been written down, so nothing defended it when the newer ones arrived.
It is fixed for this capability, and the trace above ran against the fix. Reuse beyond the declared window now degrades to a partial, where the volatile field is genuinely re-read and priced above the floor. The buyer pays more and receives real work, which is the version of the price ladder that tells the truth.
The sibling capability carrying the same seam is fixed too, and it needed a different answer. Interface detection stays true while the code at an address is unchanged, so a plain contract can be shared for days. An upgradeable proxy keeps its own bytecode while swapping the implementation behind it, so it earns a window of seconds instead. Validity now follows what the check found rather than a constant, and the answer says which code hash it is standing on.
What this is not
These three calls were made by our own wallets, flagged so they never count as product traction. A trace proves that the freshness contract holds, not that anyone needs it. The signal we still care about is an independent agent paying again on a different day. That remains the bar, and this does not clear it.
Full trace with every field, block and receipt: /evidence/token-metadata-reuse-trace-2026-07-28.json. Receipts stay live at /api/v1/receipts/{invocationId}.
