Add stale-derived-status: freshness dates the cell, not the root - #110
Merged
Merged
Conversation
The profile already carries two cases where agreeing evidence is worth less than it looks: copied-consensus is about count, incomplete-search is about coverage. This is the third in that family, and it is about recency. A memory cell asserts a current state. Its only recorded time is lifecycle.observed_at, which says when the cell was written. One of its claims is a restatement whose derived_from points at an older observation. The roots collapse correctly -- the profile already handles that -- but nothing in the document dates the observation the restatement rests on, so a consumer reading a fresh-looking cell about a current state cannot tell whether the underlying observation is minutes or months old. This contradicts something the README already claimed. Point 4 read "Freshness, nonce, and revocation fields make replay and stale evidence visible to the consumer", without qualification. They do, for the cell. They do not for a derived claim's root. The wording is now qualified and points at the fixture, because a profile that overstates one of its own invariants is worse than one that names the boundary. The validator assertion is deliberately an assertion of absence: no claim carries an observation time. A claim-level timestamp would resolve this case, and that it does not exist is the finding. Asserting it here means adding one becomes a visible change to this file rather than a silent improvement. Standard library only. 5 examples, 8 adversarial cases still rejected. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The profile already carries two cases where agreeing evidence is worth less than it looks:
copied-consensus— about countincomplete-search— about coverageThis is the third in that family, and it is about recency.
The case
A memory cell asserts a current state. Its only recorded time is
lifecycle.observed_at, which says when the cell was written. One of its claims is a restatement whosederived_frompoints at an older observation.The roots collapse correctly — the profile already handles that. But nothing in the document dates the observation the restatement rests on, so a consumer reading a fresh-looking cell about a current state cannot tell whether the underlying observation is minutes or months old.
It contradicts a claim the README already made
Point 4 read, without qualification:
They do — for the cell. They do not for a derived claim's root. The wording is now qualified and points at the fixture. A profile that overstates one of its own invariants is worse than one that names the boundary, and this is exactly the kind of overstatement the profile exists to catch elsewhere.
The assertion is deliberately about absence
A claim-level timestamp would resolve this case. That it does not exist is the finding. Asserting it here means adding one later becomes a visible change to this file rather than a silent improvement nobody notices.
Provenance
This case was not invented. It is a defect that occurred: a status record asserting "not yet sent" was read and reported as current when the underlying state had changed hours earlier. The cell was honest, the roots were traceable, and the consumer still could not age it.
Standard library only. 5 examples, 8 adversarial cases still rejected.
🤖 Generated with Claude Code