You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
!SupersedeNode {node, by, reason, evidence} retires a duplicate node in favour of the node
that replaces it, in a revision of its own (story:supersede-node, design § 110). The node and
every edge at it leave the head and are kept in a supersession record — the node and its edges
as they were, by, the revision, the reason and the evidence — which ekr snapshot lists under superseded; assertions about it are not changed, and every earlier revision still reads it.
Every head read omits it. ekr resolve of its type and one of its aliases answers by, even when by is of another type, and those aliases stay taken (alias-already-exists). A read of its id
at the head — /node/<id> in either format, /expand, the MCP describe_node and expand, the
session's — is refused as ekr.views.NodeSuperseded, naming by; /changes lists the
supersession as a NodeSuperseded change, with the node kept in target. Refused by name: supersede-unknown-node, node-already-superseded, supersede-into-itself, supersede-by-unknown-node, supersede-by-superseded-node, supersession-without-reason, supersession-without-evidence, supersession-evidence-unknown and superseded-node-named-in-transaction; a later operation naming a superseded node or a retired
edge is node-superseded, naming by. Applied under every validation profile. The SDK builds
it (NodeSupersession) and reads SnapshotGraph::superseded and ChangeKind::NodeSuperseded.
A store that never supersedes keeps its roots and checkpoint bytes. A read that reaches an
assertion naming a superseded node names its pointer: subject_superseded_by and object_superseded_by in ekr sample and ekr explain, object_superseded_by on every rendered
assertion (SDK SampledFact, ViewAssertion, SnapshotAssertion). /timeline of a superseded subject is ekr.views.NodeSuperseded; ekr compare compares the records as a superseded
category, listed only where either store holds one. ekr apply-extraction replaces a value
under a superseded key on the node kept, and a fact refused after resolving through a
supersession to a node of another type names it.