6.13.2.20 RecordRevision
6.13.2.20.1 Purpose¶
Revision metadata carried by evidence, resolutions, periods and identity decisions: the chain a record belongs to, its revision number, and the writes that made it available and replaced it.
6.13.2.20.2 Fields¶
| Field | Type | Cardinality | Description |
|---|---|---|---|
logical_record_id |
string (uuid) |
1..1 |
|
revision_number |
integer |
1..1 |
|
available_in |
WriteCommit | 1..1 |
The write that made this revision available. Its committed_at is the readable clock; cutoffs use the write number, because two concurrent writes can become visible in a different order than their timestamps. |
replaced_in |
WriteCommit | 0..1 |
Written once, by the write that appends the next revision of the same logical record: an index for as-of range queries, not payload. Empty on the current revision. |
6.13.2.20.3 Relationships¶
References
RecordRevision.available_in→ WriteCommit (1..1)RecordRevision.replaced_in→ WriteCommit (0..1)
Used by
AnimalProfileEvidence.revisionCanonicalObservation.revisionObservationSession.revisionCanonicalEvent.revisionCanonicalPeriod.revisionResolvedEvent.revisionEventEvidence.revisionAnimalLink.revisionFeedCoverage.revisionSample.revisionProductMaterial.revisionObservationSelection.revision
6.13.2.20.4 Rules & constraints¶
- Inline metadata on evidence, resolution, periods, samples/material and identity decisions.
- Parent id identifies one immutable payload revision;
logical_record_idgroups the chain,revision_numberincreases. - The previous revision has the same
logical_record_idandrevision_number- 1; one current head per logical record. - Which parse job, sync run or app user wrote a revision is read from its
available_inwrite (WriteCommit.parse_job,WriteCommit.sync_run,WriteCommit.user); it is not copied here, because copies can disagree. - A correction, cancellation, reinstatement or changed decision appends a revision; do not overwrite old payload/status.
- The next revision is found by
replaced_in; it is not stored on the earlier revision, for the same reason. available_inis the first platform availability of this revision, not sourceproduced_ator phenomenon time.- Historical readers select the latest revision available at the cutoff, then its status; never apply today's cancellation retroactively.
- Input revisions must already be available; replay keeps availability, whereas a new backfill/algorithm result is available only now.
- Conflicting source versions or key collisions are issues; arrival order alone is not authoritative source version order.