Bi-Temporal Versioning
GRAFOMEM tracks two independent timelines, so an agent can ask not just what is true but what we knew, and when.
| Timeline | Field(s) | Meaning |
|---|---|---|
| System time | written_at | When the fact was ingested. |
| Valid time | valid_from, valid_until | When the fact was true in the world. |
A retrieve(..., as_of=T) query returns the state as of valid-time T (default: now). supersede(old, new) closes the predecessor's valid interval at the successor's valid_from, so history is preserved rather than overwritten — the superseded version remains visible in audit() with superseded_by set.
This is the BI_TEMPORAL capability (spec §3.2), exercised by workload W2.
Source: docs/01-workload-spec.md (W2), docs/gmp-spec-v0.2.md §3