Skip to content
TACITUS
Section pages
All notes

NOTES BY TACITUS

Two clocks for an assessment: what applied, and what was recorded

TACITUS Research · no independent peer review claimedPublished Revised ·TACITUS Research·5 min read·Methods

Research and design work. TACITUS remains under development; proposed mechanisms and evaluation plans are identified in the article. Check current product capabilities.

bi-temporaldesigncommitment

TL;DR

  • 01Valid time describes when a recorded assertion applies; transaction time describes when a version was current in the database.
  • 02A source publication date is another field, not a substitute for the database recording time.
  • 03Historical reconstruction needs the source and interpretation versions as well as temporal predicates.

A corrected date should improve today’s analysis without rewriting what a reviewer could have known last week. Bitemporal records make those two questions explicit.

Revision: Rewritten with a dated correction example and SQL predicates. Separates database transaction time, source publication time, uncertain event dates, and attributed belief. Added the scoped day 8 must not borrow day 15’s consultation example and its evidence boundary.

An ordinary correction changes two different answers

On 10 September, an analyst records a report saying an undertaking became effective on 8 September. On 12 September, a correction says the effective date was actually 9 September. A briefing written on 11 September may therefore differ from one written on 13 September even though both ask about the same event. The system should be able to explain the difference.

Temporal database work distinguishes valid time from transaction time. Valid time concerns the modeled reality; transaction time concerns the period during which a record was current in the database. Snodgrass develops these distinctions and their combination in bitemporal tables. In contested analysis we should say “the recorded assertion applies,” not pretend a timestamp establishes what really happened. [1]

Make the two versions visible

An as-recorded query for 11 September returns v1. The same question with a recording cutoff of 13 September returns v2. Asked whether the undertaking applied on 8 September, the earlier snapshot says yes; the later snapshot says no. Neither result alone answers whether the source was reliable or whether a qualified reviewer accepted its interpretation.

A conflicting second source is not automatically a correction. If another participant disputes the effective date, retain both attributed claims with their evidence and review state. Supersession should describe an explicit replacement decision or source correction, not quietly erase disagreement.

Fictional correction history using half-open intervals [start, end). The rows describe recorded versions, not independent confirmation.
VersionAsserted effective intervalCurrent in databaseSource
v1[8 September, open)[10 September, 12 September)Initial report
v2[9 September, open)[12 September, open)Corrected report

The query needs both dimensions

Here valid_during is a daterange and recorded_during is a tstzrange. PostgreSQL provides containment, overlap, and explicit inclusive or exclusive range bounds. It does not make this application bitemporal automatically: the write path must maintain versions and recording intervals consistently. A date-granularity claim should not acquire invented second-level precision merely because the database supports timestamps. [2]

An atomic correction can close the current recording interval and insert its successor, while an audit log retains the operation. An append-only implementation can instead derive interval ends from later events. Either approach must prevent overlapping current versions caused by concurrent writes and distinguish an unknown endpoint from an assertion of indefinite validity.

Illustrative PostgreSQL query; application schema and parameters are examples · sql
SELECT claim_id, source_revision, interpretation
FROM claim_versions
WHERE valid_during @> DATE '2026-09-08'
  AND recorded_during @> TIMESTAMPTZ '2026-09-11 12:00:00+00'
  AND review_state = 'accepted';

Do not collapse the other clocks

The event date, document publication date, ingestion time, reviewer decision time, and effective interval can all differ. A late-arriving document must not be backdated into an earlier database snapshot. Record its earlier publication date separately. An import can preserve the exporting system’s history as attributed provenance while recording a new local ingestion event.

Uncertain dates need their own representation: an event may have happened within a window rather than throughout that window. OWL-Time supplies vocabulary for instants, intervals, durations, and ordering, but choosing the intended semantics remains the modeler’s responsibility. “Before” is not “caused,” and two overlapping intervals do not establish a common event. [3]

A historical answer depends on more than timestamps

Replaying a query with an old time filter is insufficient if entity aliases, access rules, or the ontology have changed underneath it. Pin the relevant record and rule versions. Retain the source revision and the activity that produced an interpretation; PROV-O provides terms for derivation, revision, and attribution. A historical view should reveal unavailable or redacted evidence rather than imply it was never present. [4]

Temporal filters may reduce the context sent to a model, but a short chronology can lose an exception or an unresolved interval. Recompute or invalidate summaries whose temporal dependencies change. Account for that update work separately from any per-question token saving.

Test time travel before relying on it

Use fixtures for late arrival, retroactive correction, contradictory sources, timezone changes, open endpoints, and concurrent updates. Check that a past recording snapshot remains stable after later corrections, while a current retrospective answer reflects the corrected record. Then ask a second analyst to explain why two answers differ.

For TACITUS, the intended boundary is a reviewed temporal record in DIALECTICA and an inspectable assessment in PRAXIS. Bitemporal completeness across capsule creation, import, and agent output remains development and evaluation work. The schema is a way to make errors observable, not evidence that we have eliminated them.

Day 8 must not borrow Day 15’s consultation

Event time, publication time, workspace recorded time and applicable intervals remain separate. The Group Q example adds a notice published on 20 August but captured on 22 August: publicly knowable and known in this workspace answer different questions. [5]

The authored reporting assignment.
ViewWhat it containsWhat it cannot establish
Day 8 / A636 records; January proposal and industry transition requestJuly consideration or an adopted validity interval
Day 15 / B640 records; adds S03 / E03 / C03 / T03Adoption, mandatory pilot or funding approval
Change ledgerP01 / R01 / O01–O05 amended; 629 unchangedAutomatic reversal or silent reapproval of history

SOURCES

  1. [1]Richard T. Snodgrass. Developing Time-Oriented Database Applications in SQL (2000).Primary technical text, especially chapters 8 and 10 and the glossary definitions of valid and transaction time.
  2. [2]PostgreSQL 18 documentation. Range Types, section 8.17.Date/time ranges, inclusive and exclusive bounds, containment, and overlap.
  3. [3]W3C. Time Ontology in OWL (Candidate Recommendation Draft, 15 November 2022).Temporal vocabulary for instants, intervals, and ordering; this cited revision is a draft.
  4. [4]W3C. PROV-O: The PROV Ontology (Recommendation, 2013).Entities, activities, agents, derivation, revision, and invalidation.
  5. [5]Worked example / implementation boundaryAuthored website demonstration or reference explanation. Not independent analytical validation or production integration proof.

SHARE