The order agent quoted a tracking status three days stale
An order support agent told a customer twice that a parcel was out for delivery. Both answers came from the same old cache row.
Your task
Name the span where the agent first went wrong, then fix where the status comes from so the replay passes.
- root_cause_span() returns the FIRST span whose plan contradicted what the agent already knew
- pick_source(entry) returns "cache" or "carrier_api"; entry is the cache row, or None on a miss
- the cache is the first stop, because it is cheap
- a row older than 24 hours (cached_h above 24) is stale, and so is a row with no age
- leave call_tool() and check() alone; the environment is not the bug
The replay runs your pick_source() across cache rows at submit, and your named span is checked against the key.