Freshness & TTL
Freshness answers whether a canonical result is inside its validity regime; it is not confidence.
Validity regime
Immutable facts use valid_until = 0. Mutable facts expire when the contract current time passes valid_until.
Display rules
- Use contract/API freshness semantics, not a permanent client boolean.
- Do not mark old canonical data fresh because a newer unresolved attempt exists.
- Show the exact timestamp and human-readable TTL together.
Contract truth
Use is_fact_fresh or the normalized API freshness field.
Integration note
Refresh mutable facts through the wallet flow; do not mutate cache state from the browser.