“Latest” is not a temporal model
A live banking agent is asked why a corporate payment was held. It retrieves a screening result updated three minutes ago, a customer risk record changed yesterday, a sanctions procedure published last week and a payment event created this morning. Every item looks fresh. The result can still be wrong.
The screening record may be a correction entered after the payment decision. The customer risk change may take effect tomorrow. The procedure may replace an earlier version only for payments initiated after a transition date. The event time carried by the payment may differ from the time the message reached the bank. An analyst may need the best current explanation, the evidence actually available when the hold occurred, or both.
Recency scoring collapses these questions into one number. A timestamp is sorted, newer items rise, and the model is told to prefer recent sources. That design confuses arrival, observation, validity, publication and decision time. It also treats replacement as similarity: the retired procedure remains almost identical to its successor and may rank beside it.
A decision-grade agent needs temporal semantics before it needs a freshness boost. Every material claim should carry the time in the world for which it is asserted, the time the system learned it, its source version, and its relationship to later corrections or replacements. The agent should answer against an explicit temporal frame and preserve evidence that was valid then even when it is no longer current now.
This article develops that design through a composite case at “Harbour Bank.” The institution, customer, payment, timings and operating thresholds are fictional. Public standards and documentation support the architecture; no production outcome is claimed.
Harbour bank’s two correct answers
At 10:04 local time, Harbour Bank receives a corporate payment instruction from Meridian Shipping. At 10:04:08, the screening service produces a possible match and the payment orchestration applies a hold. At 10:06, an operations analyst clears the alert after comparing date of birth and nationality. At 10:09, a source feed issues a correction to the candidate record. At 10:12, the customer’s relationship manager asks the agent, “Why was this payment held?”
There are two defensible answers to different questions. The operational-history answer is that the payment was held because the screening result available to the payment workflow at 10:04:08 met the configured hold rule. The current-evidence answer adds that the possible match was later cleared and the external candidate record was corrected. Saying only “the customer matched” is false now and overstates the evidence then. Saying only “there was no match” erases why the deterministic workflow acted.
The case becomes harder because Harbour’s screening procedure changed that morning. Version 7 was published at 08:00, approved at 09:30, configured with an effective time of 11:00 and intended for payments initiated after that time. A search ordered by publication time will retrieve version 7. The 10:04 decision was governed by version 6.
| Question | Valid-time target | Knowledge cut-off | Governing procedure | Proper answer shape |
|---|---|---|---|---|
| Why did the system hold at 10:04? | Payment and control state at 10:04:08 | Evidence available to workflow at 10:04:08 | Version 6 | Historical causal account |
| Was the candidate actually the customer? | Identity proposition at current review time | Evidence known by 10:12 | Current source and correction | Current evidential assessment |
| Did the hold follow the applicable rule? | Rule applicability at 10:04:08 | Approved policies known at review | Version 6 | Reperformance against historical rule |
| What would version 7 have done? | Counterfactual using 10:04 case facts | Declared simulation snapshot | Version 7 | Clearly labelled simulation |
| What should operations do now? | Current case and payment state | Latest validated evidence | Current effective procedure | Prospective recommendation, human authority retained |
History, current truth and counterfactual replay are separate products. A fluent paragraph can contain all three only if each clause identifies its temporal basis.
Four clocks, not one timestamp
The architecture needs at least four clocks. Valid time says when a proposition holds in the represented world. Observation time says when a source observed or asserted it. System time says when Harbour recorded that assertion. Decision time says when a control or human acted. Publication and effective time are specialised clocks for governed artefacts.
System-versioned databases often focus on when a row was current in the database. Microsoft’s current temporal-table documentation describes a current table, a history table and system-managed period columns that support point-in-time queries. This is valuable for reconstruction, but application semantics may need a second valid-time interval supplied by the business event.
A source can report late. A beneficial-ownership change valid from Monday may reach the bank on Thursday. A correction recorded today can say that a prior fact was never valid. A procedure published today can become effective next month. One updated_at column cannot represent these cases.
| Temporal field | Meaning | Typical authority | Common mistake |
|---|---|---|---|
valid_from, valid_to |
Interval in which the proposition applies in the world or policy | Source or approved interpretation | Populating it with ingestion time |
observed_at |
When the source observed or asserted the fact | Source message or signed artefact | Treating observation as occurrence |
recorded_from, recorded_to |
Interval in which Harbour’s store held this version | Temporal store | Overwriting the old row |
decision_at |
When a workflow or person acted | Immutable decision event | Reconstructing it from case close time |
published_at |
When an artefact was released | Publisher or policy registry | Treating publication as effectiveness |
effective_from, effective_to |
When a governed version applies | Approved policy metadata | Sorting by file modification time |
retrieved_at |
When an evidence packet read the source | Retrieval receipt | Calling this source freshness |
RFC 3339 defines an interoperable Internet timestamp profile, while RFC 9557 extends it with additional information including time zones. These standards help encode instants; they do not decide which clock a field represents. Every temporal field still needs explicit semantics and a declared time zone or UTC normalisation rule.
Timestamp precision does not create temporal meaning. 2026-07-22T10:04:08.123Z can be precisely wrong if it stores arrival when the decision needs validity.
Use bitemporal evidence for correctable facts
Bitemporal storage keeps valid time and system time. It can answer, “What did we believe on 22 July about what was valid on 20 July?” That question is essential when data arrives late or is corrected.
Suppose the candidate feed initially says a date of birth is 1978. At 10:09 it corrects the value to 1987 and states the earlier value was an editorial error. The 1978 assertion was present in Harbour’s system between 10:04 and 10:09, but it was never a valid birth date according to the corrected source. The store retains both facts: one as historical system knowledge, the other as the source’s current valid-time assertion.
A bitemporal evidence row should be immutable. A correction creates a new assertion and a relationship; it does not rewrite the old payload. The system can materialise a current view for fast operations, but the evidence ledger retains the history needed for reperformance.
The design does not mean retaining every personal-data version forever. Legal, privacy and records policies govern retention. Temporal correctness and minimisation can coexist through scoped history, cryptographic evidence references, approved redaction and deletion receipts. Where a historical value must be erased, the system should preserve a non-sensitive event that a correction or deletion occurred rather than pretend the original version never existed.
Supersession is a graph, not a boolean
A superseded=true field says an artefact is no longer primary. It does not say what replaced it, for which scope, from when, or whether some provisions survive. Policies are amended, partially replaced, corrected, consolidated, suspended, reinstated and retired. Evidence sources are retracted or updated. Model and index artefacts also acquire successors.
Represent the relationship as a typed edge with scope and time. replaces can cover the full predecessor. amends can target clauses. corrects changes interpretation without necessarily changing effective scope. retracts warns that a source should not support new conclusions. consolidates may provide a convenient view while preserving the authority of constituent changes. suspends is temporary and may be followed by reinstatement.
Crossref’s current versioning and correction guidance illustrates why typed update relationships matter in scholarly records: significant updates, corrections and retractions should be identifiable and connected rather than silently overwriting the prior record. Bank policy artefacts need their own controlled vocabulary, but the recordkeeping principle transfers.
| Edge type | Retrieval treatment | Historical treatment | Required metadata |
|---|---|---|---|
| Replaces | Exclude predecessor for covered future scope | Keep for decisions during prior interval | Successor, scope and effective condition |
| Amends | Compose changed clauses with surviving base | Reconstruct amendment set as of decision time | Target clauses, precedence and intervals |
| Corrects | Prefer corrected assertion for current truth | Preserve original as then-known evidence | Error description, authority and correction time |
| Retracts | Do not use as affirmative support unless historical question requires it | Show that it influenced a past state, with warning | Retraction notice and reason class |
| Suspends | Exclude affected operation during interval | Preserve pre-suspension and post-reinstatement states | Scope, start, end or resolution condition |
| Consolidates | Use as navigation if authority permits | Retain constituent versions | Included versions and compilation date |
| Narrows scope | Apply successor only to specified cases | Predecessor may remain valid elsewhere | Machine-readable scope predicate |
Never discard the predecessor merely because a successor exists. Never present the predecessor as current merely because history is retained.
A temporal evidence envelope
Every item admitted to an agent context should arrive in a temporal evidence envelope. The envelope separates source content from claims about its status. It names the proposition, evidence class, source and version; valid and system intervals; supersession edges; retrieval time; authority, and integrity reference.
The source content may be a short excerpt, structured record or object reference. The envelope should not claim more precision than the source provides. A policy can have a date with no time. A customer statement may say “since June” without an exact instant. Approximate and open intervals are legitimate values; they should not be filled with midnight defaults that later look authoritative.
The W3C PROV-O Recommendation offers a standard vocabulary for provenance involving entities, activities and agents, and includes generation and invalidation times. The W3C OWL-Time specification describes temporal entities and interval relations, though its current published page is a Candidate Recommendation Draft and explicitly notes limits. A bank can use concepts from both without claiming either specification defines its full evidential semantics.
Envelopes make derived evidence honest. A model-generated summary points to the exact source versions and a generation activity. It gets its own recorded time and validity limitation. It cannot inherit the authority of the underlying policy. If the policy is corrected, the summary becomes stale even if its text remains semantically similar.
Freshness is a contract per proposition
Some facts change many times a second; others remain stable for years. Freshness cannot be one global maximum age. It is a contract among the decision, proposition, source and consequence.
For a live payment decision, account status and screening configuration may require a near-live authoritative read. A customer’s incorporation date may be read from a validated reference with a longer permissible age. A policy clause is fresh if the correct effective version and all active amendments are present, not if the PDF was downloaded recently. A research note may be current enough for background but inadmissible for the decision.
| Proposition | Freshness basis | Revalidation trigger | Safe stale behaviour |
|---|---|---|---|
| Payment state | Latest committed orchestration event | Any state transition | Stop action and reread authoritative service |
| Screening result | Source version plus configuration and list snapshot | New list, correction or case action | Show historical result only; do not imply current match |
| Customer risk tier | Approved record version and effective time | Human approval or source event | Mark unavailable for consequential decision |
| Procedure clause | Effective and supersession graph completeness | Policy release, amendment or suspension | Use last confirmed version only for historical scope |
| Static identity fact | Source-specific review and event policy | Contradictory source or material-change event | Mark age and evidence class |
| Market or rate data | As-of time and market calendar | New tick, fixing or correction | Use only where decision permits delayed data |
| Derived summary | Dependency versions | Any source, policy or transformation change | Regenerate or exclude |
The freshness contract includes an outage disposition. must_revalidate stops a live decision if the source is unavailable. historical_only permits explanation of what was previously known but not a new action. bounded_stale may allow a low-consequence task within an approved interval. manual_source routes an authorised user to the system of record.
Staleness is a decision state, not a search penalty. Lowering a score still lets an expired waiver or retired procedure enter the answer.
Snapshot the evidence state for reperformance
An evidence packet that stores only URLs cannot be replayed. The source may change behind the URL, the index may be rebuilt, and a database query may return a different row. Reperformance needs stable versions or snapshots.
Open table formats provide useful infrastructure. Apache Iceberg’s official documentation describes snapshot-based time travel for reproducible queries. Delta Lake’s documentation describes data versioning and time travel. Microsoft temporal tables support system-time queries. These technologies preserve storage states; they do not automatically capture policy meaning, external source corrections or the data actually exposed to a model.
Pinning all sources to one wall-clock instant is not always possible. External APIs may expose only current state. In that case the manifest records the retrieval time, response version or hash, and the limitation. A decision may combine a warehouse snapshot at 10:04 with an external response retrieved at 10:05. The packet should state that boundary instead of claiming perfect transactional consistency.
Snapshot retention must align with assurance and records requirements. Iceberg or Delta time travel depends on retaining the referenced history. A snapshot ID that has been expired is not reproducibility. The programme should protect decision-linked snapshots or export a governed evidence extract, subject to privacy and retention policy.
Event time and processing time must not be confused
Streaming pipelines receive late, duplicated and out-of-order events. A payment event created at 10:04 can arrive after a case event created at 10:05. A source can resend the same correction. A clock can drift. If the temporal registry simply applies messages in arrival order, its current view may regress.
Each event needs a stable identifier, source sequence where available, event time, ingestion time, schema version and idempotency rule. The projector evaluates source-specific ordering. It can update a current view while preserving the raw event. Events outside an allowed lateness window are not silently dropped; they enter a correction or reconciliation path.
Watermarks are operational estimates, not proof that no earlier event will arrive. A low-latency agent can use the current materialised view if the decision contract accepts its completeness bound. A historical investigation can wait for reconciliation or query the immutable log directly.
Clock synchronisation also has limits. Use UTC instants for machine comparison and retain source offset or time-zone information where it affects interpretation. Record precision. Do not compare a date-only policy with a nanosecond payment event by inventing an effective instant without an approved convention.
Build temporal queries from the decision schema
The user should not have to formulate temporal SQL. The decision schema identifies which propositions need current truth, historical knowledge or a counterfactual. A temporal query compiler lowers that frame into source-specific queries and validates the returned envelope.
For “why was the payment held,” the schema asks for the payment state and screening observation valid at the decision instant, constrained to system knowledge available no later than that instant. It asks for the procedure effective for the payment event. It separately asks for later corrections so that the explanation can distinguish then-known cause from current evidence.
Temporal joins need explicit boundary conventions. Most intervals work well as half-open [start, end), which avoids double membership at a handover instant. Date-only policies need an approved effective-zone rule. Events with uncertain times require interval reasoning rather than exact equality. A source correction may change valid time retroactively while leaving the historical decision time unchanged.
Invalidate derived artefacts through lineage
Every summary, embedding, index chunk, extracted entity, answer cache and benchmark label depends on source versions. When a source is corrected or superseded, the system must identify which derived artefacts may be invalid.
The OpenLineage specification models jobs, runs and datasets and includes dataset version facets when a platform defines them. It is useful pipeline metadata, not a full assertion-level supersession model. Harbour can combine run lineage with evidence dependencies: source version → extraction run → normalised assertion → chunk → embedding → index snapshot → evidence packet.
Invalidation does not mean deleting the historical chain. It marks derived artefacts unsuitable for new current-state answers and opens impact review for past decisions where the correction could matter. The source owner defines whether a change is editorial, interpretive or decision-material. A punctuation fix need not trigger the same response as a corrected sanctions identifier.
The system needs a completeness check: all production projections of a source class must register lineage. An experimental index that is not in the graph will continue serving stale content. Access logs and package manifests can help discover undeclared consumers.
Temporal consistency across tools
An agent may retrieve a customer state, call a policy service, query a transaction store and ask another agent for analysis. If each call uses “now,” a long task can mix states that never coexisted. A payment can change from held to released midway while the narrative still cites the earlier alert.
The orchestration layer should establish a decision cut-off and propagate it. Where sources support snapshots or as_of reads, each tool uses that time or snapshot. Where only current reads exist, the receipt records actual access time and the orchestrator checks for material state changes before final output or action.
| Tool capability | Orchestration treatment | Residual limitation |
|---|---|---|
| Snapshot ID | Pin and pass immutable version | Snapshot can later expire without retention control |
| System-time query | Query as of decision cut-off |
Valid-time semantics may still be missing |
| Event log | Reconstruct state using sequence and time | Late events can change reconstruction |
| Current-only API with version | Read, record version, recheck before action | Cannot reconstruct older unknown state |
| Current-only API without version | Restrict to low-consequence use or capture governed response | Weak reperformance |
| External web source | Record retrieval time, content hash and status metadata | Publisher can change content and terms |
Before a consequential action, use optimistic concurrency: submit the state version on which the recommendation was based. The downstream system rejects the action if the record changed. The agent then recompiles. Temporal evidence without execution-time version checks leaves a race between reasoning and action.
Present time without hiding uncertainty
Reviewer interfaces often display one “last updated” label. That can refer to the case, screen, source or derived summary. Use labels that name the event: “source observed,” “bank recorded,” “valid from,” “policy effective,” and “packet retrieved.” Show the decision cut-off prominently.
For Harbour’s case, a timeline is more informative than a paragraph. It places the hold, analyst clearance, source correction and procedure change. The proposition ledger then shows which assertion was used for the historical explanation and which supersedes it for current status.
The interface should not colour every old item red. Historical evidence is supposed to be old. Warn when an item is invalid for the selected temporal frame, when a correction exists, when a source could not be read at the cut-off, or when the effective interval is ambiguous. Let authorised users switch between “as decided” and “current evidence” views without merging them.
Test temporal behaviour with adversarial timelines
A conventional golden set gives one query and one expected answer. Temporal evaluation needs a sequence of events and expected states at several cut-offs. The same question should produce different, controlled answers as corrections and effective dates pass.
Create fixtures for late arrival, retroactive correction, future-effective policy, partial amendment, suspension, clock skew, duplicate event, missing end time, date-only effectiveness, snapshot expiry and source outage. Run the agent at each boundary. Verify the selected versions, proposition states and wording.
| Test family | Mutation | Expected invariant | Failure signal |
|---|---|---|---|
| Late event | Deliver an earlier-valid event after decision | Historical then-known view unchanged; current reconstruction updated visibly | Silent rewrite of original explanation |
| Correction | Replace an asserted value retroactively | Current truth uses correction; past knowledge retains original | Original disappears or remains current support |
| Future policy | Publish before effective time | Prior version governs until approved condition | Newer file selected by recency |
| Partial amendment | Change one clause only | Unchanged base clauses survive | Whole base excluded or amendment ignored |
| Boundary instant | Query exactly at handover | One version selected under declared interval convention | Double inclusion or gap |
| Source outage | Remove live source | Contract-specific stale disposition | Cache served without warning |
| Plan duration | Change state during agent task | Final action rechecks version | Action executes on mixed snapshot |
| Retention | Expire an unprotected snapshot | Decision-linked snapshot remains replayable or limitation is explicit | Receipt points to missing history |
Do not score only final wording. Measure temporal version accuracy, supersession resolution, historical-knowledge preservation, current-truth correction, contradiction handling and unsupported precision. Inspect whether citations point to the exact version used.
Operational metrics need temporal denominators
Freshness dashboards often show average data age. An average hides the one source class that must be live. Measure by proposition, decision type and consequence.
| Metric | Definition | Diagnostic use | Risk of misuse |
|---|---|---|---|
| Valid-time completeness | Assertions with valid interval / assertions requiring it | Exposes source-semantic gaps | Filling unknown intervals with defaults |
| Knowledge lag | recorded_at - observed_at by source and percentile |
Shows feed and processing delay | Assuming observation equals occurrence |
| Decision snapshot span | Latest access time minus earliest access time in packet | Shows mixed-state exposure | Forcing false single-time claims for current-only APIs |
| Supersession closure | Versions whose replacement graph resolves for selected scope | Finds orphan and conflicting versions | Counting edges without testing scope |
| Correction propagation lag | Correction receipt to invalidation of affected projections | Measures stale derived artefacts | Closing event before all consumers reconcile |
| Temporal citation accuracy | Claims citing the exact governing source version | Tests evidence presentation | Checking only that a URL exists |
| Stale-use rate | Decisions that used evidence outside its contract | Control effectiveness | Excluding manual fallbacks from denominator |
| Reperformance success | Sample decisions reconstructable at stated cut-off | Assurance readiness | Treating current state as historical proof |
Set service objectives according to source and decision. A sanctions-list projection may have a strict propagation target. A policy registry may require complete supersession closure before a version becomes effective. A historical research corpus can tolerate longer ingestion lag but must preserve correction status.
Report age, lag and validity separately. A source retrieved one second ago can carry a fact valid last year; an old policy can still govern today.
Model assertions, not mutable documents
Document versioning is necessary but too coarse for many decisions. One procedure can contain fifty clauses with different amendment histories. One registry response can assert several facts with different valid intervals. One customer email can include a current address and a forecast that never becomes true. Treating the entire object as one fact makes temporal selection brittle.
The normalisation layer should emit assertions. Each assertion has a subject, predicate, value or object, evidence reference, authority class, temporal envelope and status. It can point back to exact offsets in the immutable source version. Assertions do not become “true” because they were extracted. They are claims attributed to a source and evaluated under an evidence contract.
An extraction run may be probabilistic. The asserted source text, offsets, parser version and confidence are therefore retained. High-consequence fields can require deterministic extraction, a source API or human confirmation. If a later parser extracts a different date from the same PDF, the difference is a transformation correction, not a source correction.
The graph should permit disagreement. A customer record can say one address, a registry another and a returned-payment message a third. Current-state materialisation may choose a preferred operational value under policy, but the evidence layer retains all admitted assertions. A temporal query can then ask which claims were available, which were valid for the period and which authority resolved the conflict.
Typed assertions also improve invalidation. A correction to paragraph 4 need not invalidate embeddings and summaries derived only from paragraph 9 if dependency offsets are precise. Conversely, a document-level dependency should be treated conservatively and invalidated when any material section changes.
Evaluation, assurance and counterevidence
Make policy effective-time release transactional
Policy publication involves several moments: drafting, approval, publication, distribution, system configuration, staff communication and effectiveness. They do not always coincide. The policy registry should not mark a version effective merely because a file appeared in a repository.
A release object binds the approved artefact, applicability scope, effective condition, predecessor edges, implementation dependencies and rollback authority. Before activation, the registry checks that required downstream controls have acknowledged the version. If a screening threshold depends on a rules-engine configuration, the policy should not become operationally “effective” in the agent while the rules engine still uses the predecessor, unless a named owner accepts that split.
Activation should be atomic from the perspective of policy selection. The registry exposes one effective graph per defined scope and decision class. If partial deployment is unavoidable, the status is split and live decisions route according to an approved compatibility rule. Search must not choose whichever version it indexed first.
A rollback does not erase the failed version. It creates another relationship and interval. Decisions made during the version’s effective window still need that version for reperformance. The rollback notice can trigger review of affected decisions if the cause is material.
Corrections need a materiality decision
Every change should not trigger the same response. Correcting a typographical error in a non-operative example differs from correcting a sanctions identifier, a credit threshold or a policy scope. Source and control owners need a materiality classification that drives invalidation and review.
The classification can consider which assertions changed, which decision types depend on them, whether the change is retroactive, the consequence of prior reliance and whether actions are reversible. Automation can identify affected artefacts and candidate decisions. A named owner decides the response for material classes.
| Change class | Example | New-use treatment | Historical-decision treatment |
|---|---|---|---|
| Cosmetic | Spelling or layout with no assertion change | Update display when convenient | No review; retain version relation |
| Clarifying | Wording changed without intended rule change | Refresh summaries and cite notice | Sample if interpretation may have varied |
| Prospective material | New threshold effective tomorrow | Activate through release object | Prior decisions remain under predecessor |
| Retroactive factual correction | Candidate date corrected for the entire asserted period | Replace current support; mark old assertion corrected | Identify decisions that relied on old value |
| Authority withdrawal | Source retracts approval or procedure | Exclude from new decisions | Risk-based review of affected outcomes |
| Scope correction | Rule never applied to an entity as recorded | Recompile applicability immediately | Review all decisions in wrongly included scope |
| Security correction | Classification or permission was wrong | Quarantine and stop affected projections | Investigate exposure and logs |
Materiality itself needs evidence: the changed spans, old and new assertions, owner, reason, decision dependencies and approval. Avoid asking a language model to decide final materiality from a redline. It can summarise differences and propose impacted propositions; a governed rule and authorised owner determine consequence.
For Harbour’s candidate correction, the external source says the earlier date was wrong, and the date helped clear the match rather than cause the hold. The impact review should reconstruct whether any action depended on the erroneous value. It should not assume that because the final outcome was release, the correction is harmless.
Temporal indexing has two different jobs
Search needs a fast current index and a reliable historical path. Combining every version into one undifferentiated vector index invites retired documents into current answers. Keeping only current content destroys historical explanation. Use explicit collections or filters with a temporal query plan.
One pattern maintains a current-effective index for routine prospective work and an immutable version index for historical and assurance queries. The current index is a projection of the supersession graph. The historical index retains all versions with validity and system-time metadata. Both point to the same source registry.
The current projection should not delete its predecessor until the successor graph closes and activation succeeds. During a transition, the registry may expose different current versions for different scopes. Index documents therefore carry scope predicates, not one global is_current flag.
Embeddings bind to exact normalised content, embedding model, preprocessing and dimensions. If content changes, create a new embedding. If only supersession status changes, the vector may remain physically reusable, but query eligibility changes. Record both content identity and eligibility version.
Approximate nearest-neighbour indexes complicate snapshotting. A rebuilt graph can produce different candidate order even with the same vectors. If exact replay of candidate ranks matters, preserve the index snapshot and retrieval configuration. If only evidential reproduction matters, preserve the admitted resource versions and state the ranking limitation.
Cache freshness requires dependency validation
An answer cache can outlive its evidence. Keying on the question and customer is not enough. The entry depends on proposition versions, policy graph, decision frame, source cut-offs, retrieval configuration and access rights. A correction to one source should invalidate every answer whose claim ledger relied on it.
Store dependencies beside the cached result. When accessed, verify that the principal still has access, the temporal frame matches, and no dependency has been superseded or corrected beyond the entry’s allowed disposition. A source event can proactively evict affected entries through the lineage graph.
HTTP caching provides a useful distinction between freshness and revalidation. RFC 9111 defines cache freshness, validators and response directives for HTTP. An evidence cache has richer semantics: a valid content hash does not mean the policy is still applicable, and a resource can remain byte-identical while an external suspension makes it unusable.
Negative results also need care. “No active hold found” should not be cached broadly because a hold may appear a moment later. A no-result entry retains the searched source versions and a short, proposition-specific validity. The action path rechecks authoritative state.
Action-time guards close the temporal loop
Agents often retrieve, reason and act in separate stages. The interval between them can be long enough for a balance, case, policy or entitlement to change. Every consequential command should carry preconditions derived from the evidence packet.
For a payment-release request, preconditions might include payment state version, alert state, approved operator, applicable procedure version and absence of a new hard stop. The action service evaluates them in one transaction with the state change. If any fail, it returns a conflict and the agent recompiles.
This is a compare-and-set pattern applied to governed work. It prevents a correct recommendation based on state 14 from executing against state 17. It also prevents a cached human approval from being replayed after a policy suspension or role change.
The evidence packet supports a decision; the action service proves that its temporal premises still hold.
Reperform the harbour hold without hindsight
An investigator reviewing the 10:04 hold at 15:00 should not use every fact learned later to decide whether the original workflow followed its rule. That would introduce hindsight. The review needs two ledgers.
The “as known” ledger contains the payment instruction, list snapshot, candidate result, customer fields and procedure versions available by 10:04:08. It shows why the rule produced a hold. The “subsequent evidence” ledger contains the analyst clearance, external correction and any later customer evidence. It shows how the case evolved and whether remediation is needed.
The investigator can criticise the original decision if the workflow ignored evidence that was available then, applied the wrong procedure, or violated its threshold. They can separately assess whether the control design should change because later evidence reveals a systematic false-positive pattern. Those are different findings.
The two-ledger design avoids a common narrative error: replacing an earlier supportable uncertainty with later certainty. It also avoids freezing the original state as if corrections do not matter. The final report can say the hold followed the evidence and rule available at the time, the candidate was subsequently cleared, and the source correction warrants a specified control review.
Handle temporal unknowns explicitly
Not every source provides clean intervals. A document may say “effective immediately” without a signed release time. A customer may report an event “last month.” A file system may preserve modification time but not publication. Treat these as uncertain temporal claims.
Represent an earliest and latest possible instant, a date-only value or an open boundary. Record the basis. Temporal logic can determine whether an interval definitely, possibly or definitely not overlaps the decision time. A possible overlap may require human interpretation for a high-consequence decision.
Avoid defaults that turn uncertainty into false precision. Midnight in the server time zone, the ingestion instant and the first day of a month are tempting substitutes. Each can select the wrong governing version at a boundary. If an institutional policy defines such a convention, name its version in the receipt.
Temporal uncertainty should influence wording. “The change was effective by 22 July” differs from “effective at 00:00 UTC.” A model can express that difference when the envelope carries it. If the envelope supplies one fabricated instant, no prompt can restore the lost ambiguity.
Data quality controls for temporal fields
Temporal metadata needs the same ownership and validation as amounts or customer identifiers. Schema checks can catch an end before a start, overlapping exclusive versions, missing time zones and impossible dates. Semantic checks catch future observation times, an effective date before approval where policy forbids it, or two versions both marked wholly effective for the same scope.
Microsoft’s temporal consistency documentation describes checks for system-versioned table structure and non-negative periods. Application-level valid time needs additional controls because the database cannot know a bank’s policy precedence or event semantics.
| Control | Example rule | Owner | Failure response |
|---|---|---|---|
| Syntax | Timestamp conforms to approved profile and carries zone semantics | Platform | Reject event or quarantine |
| Interval | End is after start under declared boundary convention | Source domain | Quarantine assertion |
| Exclusivity | One wholly effective policy per exact scope unless composition is declared | Policy registry | Block activation |
| Sequence | Source sequence does not regress without correction flag | Connector owner | Reconcile stream |
| Plausibility | Observation is not materially in the future beyond clock tolerance | Source domain | Flag clock/source issue |
| Completeness | Required decision propositions have valid and recorded times | Decision owner | Return temporal unknown |
| Lineage | Derived artefact names exact input versions | AI/data platform | Deny promotion to production index |
| Retention | Decision-linked versions remain available for approved period | Records/data owner | Protect snapshot or document limitation |
Monitor distributions rather than only hard failures. A growing gap between event and record time can reveal feed degradation. A spike in open-ended policy intervals can show incomplete release metadata. A rising correction rate in one connector may justify source remediation.
Implementation and operating detail
Govern model and prompt time as well
The model, system prompt, tool catalogue and safety policy are also versioned evidence-processing components. A historical answer replayed with a new model may differ even if its source packet is fixed. Reperformance therefore records the model identifier, prompt bundle, tool schemas, decoding configuration and relevant platform release.
This does not require retaining proprietary model weights. It requires an honest reproducibility claim. If the exact model version is no longer callable, the bank can reperform the evidence selection and compare output behaviour with an approved successor. The report notes that generative reproduction is approximate while the source and control boundary is exact.
Prompt changes have effective times. A new instruction should not silently alter an open long-running case. The orchestration policy decides whether the task remains on its opening bundle or recompiles under the new one. Security-critical restrictions can invalidate active sessions immediately; wording improvements can wait until the next request.
Evaluation labels also have system time. A reviewer may change the expected answer after a policy clarification. Keep the old label, correction reason and new label. Otherwise benchmark trends can improve merely because history was rewritten.
Link temporal evidence to bank data governance
The Basel Committee’s BCBS 239 principles address risk-data aggregation and reporting, not agent context. Their emphasis on accuracy, completeness, timeliness and adaptability is nevertheless relevant to material evidence pipelines. The Committee’s 2023 progress report reported that significant work remained across assessed banks, and the January 2026 newsletter summarises continuing themes while stating that it creates no new expectations.
The appropriate inference is modest. An agent should not bypass established data ownership and lineage by copying values into an opaque vector store. Important temporal fields need domain owners, quality controls, lineage and reconciliation. The agent layer adds its own obligations: context admission, assertion status, snapshot manifests and derived-artefact invalidation.
Bank-wide implementation should reuse canonical party, product, legal-entity, risk and policy taxonomies. It should not build a parallel ontology hidden inside prompts. Where source domains cannot provide valid time, the agent programme records the limitation and funds remediation according to decision risk.
Design connectors as temporal translators
A connector does more than copy content. It translates source semantics into the evidence model. The source contract should state what its timestamps mean, which field identifies a version, how corrections arrive, whether deletions are observable, and how much ordering can be trusted. Without that contract, a pipeline will assign generic meanings that look consistent and are not.
For an event API, the connector can preserve event ID, sequence, producer time and ingestion time. For a document repository, it may receive creation, modification, approval and effective dates; each must remain separate. For a website, it may know only retrieval time and an HTTP validator. For a database table, it may receive a commit sequence but no business-valid time.
The connector declares capability rather than fabricating completeness. supports_historical_read, supports_deletion_event, supports_source_version, supports_valid_time, ordering_scope and maximum_observed_lag are useful capability fields. The temporal query planner can then decide whether the source can satisfy a decision contract.
| Source capability | Strong form | Weaker form | Planner consequence |
|---|---|---|---|
| Version identity | Immutable source-issued version or event sequence | Content hash made at retrieval | Strong form supports direct replay; weak form proves captured bytes only |
| Historical read | Query by stable snapshot or system time | Current state only | Current-only source cannot prove prior state without captured response |
| Valid time | Source-supplied interval with semantics | Inferred from text or procedure | Inference needs validation and uncertainty state |
| Correction signal | Typed correction linked to predecessor | New payload without relation | Weak form requires comparison and owner review |
| Deletion signal | Tombstone with identity and time | Item disappears from listing | Weak form cannot distinguish outage from deletion |
| Ordering | Monotonic sequence within declared partition | Producer timestamp only | Timestamp path needs duplicate and skew handling |
| Authority status | Approved source class and owner | Unclassified repository | Unclassified source cannot support decisive proposition |
Connector tests use source simulators. Deliver duplicate and reordered events, omit a time zone, reuse an identifier with changed content, return a future effective policy, delete an item and issue a correction. Verify the resulting assertions and events rather than only checking document counts.
Temporal retrieval must preserve negative evidence carefully
Absence can matter: no active hold, no approved waiver, no current sanctions match. Search systems are poor at proving absence because indexes can lag or omit. An agent should claim absence only when the evidence contract names an authoritative completeness boundary.
For Harbour, “no active payment hold” can be supported by a versioned read from the orchestration service if that service is authoritative for all hold states. “No relevant policy exception exists” is harder if exceptions live in several repositories. The packet should say which sources and scopes were checked and whether their projections were current.
Temporal absence is even narrower. “No hold existed at 10:03” requires a historical state or event reconstruction. A current read showing no hold says nothing about 10:03. A log search with no event may reflect retention or ingestion gaps.
Define completeness receipts for negative propositions. The receipt names the source population, snapshot, filters, reconciliation status and known outages. If the source cannot produce such a receipt, use “not found in the searched evidence” rather than “did not exist.”
A fresh empty result is not proof of historical absence.
Privacy, retention and temporal evidence can conflict
Historical reconstruction creates pressure to keep every version. Privacy and records obligations may require minimisation, rectification and deletion. The architecture must resolve this through data classes and approved retention, not a blanket claim that audit requires indefinite storage.
Separate the decision receipt from full source content. The receipt can retain resource ID, version, proposition state, decision, authority and integrity digest. Full evidence remains under the source’s access and retention controls. For some decisions, a governed snapshot is required; for others, a stable reference and decision rationale are sufficient.
When a record is corrected, the current operational view should not continue displaying the wrong personal data. Historical access can be restricted to a small assurance role and purpose. When deletion is required, derived indexes, caches, prompts and observability stores must receive the same deletion event. A tombstone can state that evidence was removed under policy without retaining the deleted value.
Retention planning needs to include third-party model services. If a provider retains prompts or outputs, Harbour may be unable to execute a correction or deletion across the evidence chain. The processing arrangement and technical configuration should match the source classes admitted to that provider.
Temporal analytics should prefer aggregate lag and correction measures that do not expose customer histories. Diagnostic samples require access controls and purpose. Traceability is not permission to create a second unrestricted archive.
Incident response for stale or misapplied evidence
A temporal incident begins when an agent uses an evidence version outside its contract, selects an inapplicable policy, loses a correction, or acts after material state changed. The response must determine both exposure and decision impact.
First contain the affected projection, cache or decision type. Invalidate related packets through lineage. Second identify the source version, faulty temporal field or supersession edge. Third enumerate decisions and model calls that admitted the item. Fourth classify whether the issue changed wording, recommendation or executed action. Fifth repair, retest and decide whether past cases require review.
The incident record distinguishes discovery time, defect-valid time and exposure interval. A connector bug discovered today may have affected evidence for three weeks. Counting only time-to-repair understates exposure. The supersession graph and packet manifests make the affected population queryable.
Security incidents may involve deliberate version rollback or deletion of correction events. Signed source events, append-only logs and independent reconciliation raise detection. They do not prevent a compromised authoritative source from issuing a plausible but false update; that risk remains with source controls and human challenge.
A temporal service-level framework
One latency objective cannot cover ingestion, correction, invalidation and action. Define service levels at the control boundaries and align them with decision consequence.
Source-to-record lag measures how quickly the bank observes an event. Record-to-projection lag measures index and materialised-view update. Correction-to-invalidation lag measures how quickly derived artefacts stop serving as current support. Decision snapshot span measures how far apart the packet’s source reads are. Action precondition age measures the time from last authoritative read to execution check.
Use percentiles and tail analysis. A median of two seconds can coexist with a ninety-ninth percentile of twenty minutes. Segment by source, entity and region. Report planned batch sources separately from broken live feeds.
Freshness SLOs need an error budget only where bounded stale use is approved. There is no meaningful error budget for applying a superseded hard-stop policy if the contract forbids it. Some violations are incidents, not tolerated latency.
Human work queues need temporal priority
When a correction affects prior decisions, a queue may contain thousands of cases. Priority should reflect decision materiality, executed consequence, affected proposition, correction scope and reversibility. Recency alone is insufficient; an older unreversed payment action can matter more than a recent draft.
The impact service can produce a candidate population, not final remediation decisions. A reviewer sees the old and new assertion, why each was admitted, the governing policy and what action occurred. Cases where the corrected field was irrelevant can close with recorded evidence. Cases where it changed a recommendation move to the authorised owner.
Avoid asking reviewers to re-read entire transcripts. Show a temporal diff: proposition, old support, correction, dependent claims and outcome. Preserve the original decision record. A corrected rerun is an additional artefact, not an overwrite.
Roll out by temporal risk, not corpus size
Begin with one decision whose events, policy versions and authoritative records can be reconstructed. Instrument the current process before adding a model. Measure how often human analysts use a wrong version, cannot find a correction or depend on current state to explain the past. This establishes the control problem without inventing an automation benefit.
Phase one builds the version registry and decision receipts. Phase two adds bitemporal assertions for a bounded source set. Phase three pins retrieval snapshots and invalidates derived artefacts. Phase four introduces temporal explanations. Phase five allows bounded actions with version preconditions.
| Phase | Scope | Promotion evidence | Deliberately excluded |
|---|---|---|---|
| 1. Record | Source versions, decisions and policy graph | Complete stable references for selected workflow | Generative answer changes |
| 2. Reconstruct | Valid/system time and historical queries | Adversarial timeline fixtures and reviewer reperformance | Current-only sources without limitation |
| 3. Propagate | Index, cache and summary lineage | Correction reaches all registered consumers | Unregistered experimental projections |
| 4. Explain | As-known and current-evidence views | Temporal claim and citation evaluation | Automated consequential action |
| 5. Act | Optimistic concurrency and downstream policy check | Race, replay and rollback tests | Authority transfer to model |
Shadow the temporal planner alongside existing analyst work. Compare selected source versions and cut-offs. Investigate discrepancies. A human’s chosen document is not automatically correct; a registry entry is not automatically correctly interpreted. The review should identify whether the defect is source metadata, policy logic, tooling or practice.
Counterevidence and limits
Bitemporal and event-sourced systems add storage, query and operational complexity. A stable, append-only public corpus may need only source versions and correction notices. A single transactional database may already provide the exact state needed. Introducing an assertion graph can create more failure modes than it removes if the decision does not depend on historical reconstruction.
Time travel is not proof of truth. It reconstructs stored state. A snapshot can faithfully preserve a wrong source. Lineage is not causal proof; it shows declared dependencies. A content hash proves bytes were unchanged, not that they were authoritative. A signed policy can still encode a mistaken interpretation.
Valid time can be contested. Two sources may disagree on when ownership changed. A late event can alter a reconstruction. Some business concepts do not have crisp intervals. The system should preserve those disputes rather than force one precise timeline.
Historical replay can also create hindsight through tooling. A new parser may reveal a fact the old parser missed. To reproduce the original decision, use the original transformation. To assess what the evidence actually contained, a new extraction may be relevant. Label those analyses separately.
The architecture cannot guarantee every external source remains available or versioned. It cannot make provider-managed model execution exactly reproducible. It cannot decide what records law permits Harbour to retain. Those limits belong in the assurance statement.
Use temporal machinery in proportion to the consequence of confusing “valid then,” “known then” and “known now.”
Testable claims and falsification
This design makes six claims that a programme can test. A bitemporal store should reconstruct the evidence known at a historical decision without treating corrected facts as currently valid. A typed supersession graph should select the correct policy across effective-date and partial-amendment fixtures. Snapshot manifests should improve independent reperformance. Lineage-driven invalidation should reduce continued use of corrected source versions. Version preconditions should prevent actions against changed state. Two-ledger explanations should reduce temporal conflation in reviewer assessments.
Each claim has a failure condition. If reviewers cannot recover the original state because source history is absent, reconstruction fails. If the graph selects both predecessor and successor at a boundary, applicability fails. If manifests point to expired snapshots, replay fails. If an unregistered cache continues serving a corrected summary, invalidation fails. If an action service ignores the expected version, the race remains. If reviewers still read later evidence as proof of what was known earlier, the interface fails.
Do not claim improved compliance or reduced loss from architecture alone. Those outcomes require a defined baseline, controlled observation and enough cases. Report control coverage and limitations first.
The reference architecture
The temporal evidence system has four planes. Sources produce versioned events and artefacts. The temporal plane stores assertions, valid and system time, and supersession. The derivation plane creates projections, chunks, embeddings and summaries with lineage. The decision plane pins a frame, assembles evidence, records output and enforces action preconditions.
In Harbour’s case, the architecture can say why the hold occurred without preserving the possible match as current truth. It can apply procedure version 6 to the 10:04 event while recognising that version 7 became effective at 11:00. It can show the later correction and trigger impact review without rewriting the original decision event.
Freshness asks whether evidence is fit for this decision now. Supersession asks which version governs. Valid time asks when the proposition holds. System time asks what the institution knew. None can substitute for the others.
Define temporal answer types
The output schema should prevent a model from merging time frames. Give it distinct answer types: current_state, historical_cause, historical_reperformance, change_since, and counterfactual. Each type requires different evidence and wording.
A current_state answer selects assertions valid at the target time using knowledge available by the retrieval cut-off. A historical_cause answer reports evidence and control state available to the actor when the event occurred. A historical_reperformance answer applies the governing rule and authorised inputs as of that decision. A change_since answer compares two pinned frames. A counterfactual changes named assumptions while freezing the rest.
| Answer type | Frozen elements | Allowed later evidence | Mandatory qualification |
|---|---|---|---|
| Current state | Current target and source cut-offs | Yes, up to stated cut-off | Source lag and unresolved conflict |
| Historical cause | Decision event and then-known packet | Only in separate subsequent-evidence section | “Available to the workflow at…” |
| Reperformance | Original inputs, policy and configuration | Corrections may be analysed separately | Whether exact transformation can be reproduced |
| Change since | Two complete temporal frames | Evidence belonging to either frame | What changed in source versus bank knowledge |
| Counterfactual | Baseline frame plus declared substitutions | Only declared substitutions | Simulation, not observed history |
The schema validator checks that every material claim cites evidence admitted for the answer type. A later correction cannot support the statement “the workflow knew.” An old procedure cannot support a current recommendation. A counterfactual must not be phrased as an event that occurred.
This is safer than asking the model to “be clear about dates.” The output carries temporal roles that downstream interfaces and audit can inspect.
Reconcile current views with history
Materialised current views can drift from their event history through projector bugs, manual corrections or missed messages. Run reconciliation that independently rebuilds a sample of entities from the immutable log and compares it with the live view. Include boundary cases and recently corrected records.
The comparison should understand expected differences. A live view may intentionally omit expired values; the reconstructed state at now should match after applying the same rules. A source may have delivered a late event after the sampled cut-off; the system-time frame determines whether it belongs.
Where full rebuild is expensive, use partitioned reconciliation and source totals. Keep a deterministic set of temporal canaries whose expected state changes at scheduled boundaries. If a future-effective policy does not activate or an expired waiver remains current, the canary alerts before an analyst discovers it.
Reconciliation results need ownership and closure evidence. A mismatch is not resolved when a dashboard turns green after rerun; record whether data, ordering, time-zone logic or applicability caused it and add a regression case.
Make time-zone policy explicit
Banking events cross legal entities and market calendars. UTC is appropriate for storage and ordering, but business rules may depend on local civil time, holidays and daylight-saving changes. “Effective on 22 July” needs a governing location and convention.
RFC 9557 can encode a time-zone name alongside a timestamp, but the application must preserve the time-zone database version used to interpret historical local time. Rules can change. Do not recompute an old local instant using an unrecorded future zone database and assume equivalence.
Market dates and end-of-day controls may use business calendars rather than elapsed duration. A freshness contract saying “one business day” must name the calendar. A date-only policy activation should be expanded under an approved legal-entity convention, not the server region.
Test daylight-saving gaps and repeated local times even if the main bank region does not observe them; customers and sources may. Reject unqualified local timestamps at integration boundaries unless the source contract supplies a stable interpretation.
Temporal red-team scenarios
Temporal controls can be attacked without changing content. An adversary can replay an old signed record, delay a correction, move an effective date, reorder events or restore a superseded policy file at the same URL. Add these scenarios to security testing.
Signatures need freshness and sequence context. A valid signature proves who signed bytes, not that the version is current. The registry checks predecessor, effective state and revocation. Connectors reject sequence regression or route it to reconciliation. Indexers compare stable source versions rather than trusting modification dates.
Test a race where entitlement is revoked after evidence retrieval but before answer delivery. Test a policy suspension during a long agent task. Test an old answer-cache entry whose text remains accurate but whose source authority was withdrawn. Test a future-dated event injected to dominate “latest” sorting.
Detection uses version monotonicity, signed registry state, source heartbeat, lag alerts and cross-source reconciliation. Response follows the lineage impact process. Temporal red teaming belongs with ordinary injection and access tests because stale authority can be as consequential as forged content.
A decision ledger for implementation
Before build, record choices that otherwise become implicit code.
| Decision | Conservative default | Evidence needed for another choice |
|---|---|---|
| Interval convention | Half-open intervals with explicit date-only expansion policy | Domain rule requiring another boundary |
| Unknown valid time | Preserve uncertainty; do not substitute ingestion time | Approved source-specific derivation |
| Source correction | Append new assertion and typed edge | Legal/records rule requiring different storage |
| Current projection | Derived from closed supersession graph | Proven equivalent source-provided current flag |
| Historical replay | Pin source and transformation versions where available | Documented limitation for current-only source |
| Cache use | Validate all material dependencies | Source contract permitting bounded stale use |
| Action | Atomic version preconditions | Equivalent transactional guard |
| Snapshot retention | Protect decision-linked versions under approved schedule | Alternative governed evidence extract |
The ledger is reviewed by source owners, policy, records, privacy, security and operations. No single architecture team can decide every retention and authority question.
What good looks like in the harbour case
At 10:12, the relationship manager receives a two-part explanation. “As acted” states that the payment workflow applied a hold at 10:04:08 under procedure version 6 using the candidate result and source snapshot available at that instant. “Current evidence” states that an analyst cleared the candidate at 10:06 and the source issued a correction at 10:09. It does not call the customer a match.
The packet shows that version 7 was published earlier but did not become effective until 11:00. It links the exact v6 clause, payment event, screening observation, clearance and correction. The procedure, data and model versions are recorded. No later evidence is inserted into the historical-cause ledger.
If an authorised user proposes a release action, the action service checks the current payment and alert versions, current authority and effective procedure. If anything changed after the packet, it rejects the command and requests recompilation.
That result is neither a claim that every source was true nor that the hold was commercially optimal. It is a temporally honest account: what happened, what was known, what changed and what governs now.
Minimum temporal receipt
Even a small implementation should retain a minimum receipt. It names the decision and target time, knowledge cut-off, source versions, governing policy version, material assertion intervals, corrections known at assembly, transformation versions, unresolved lags and the authorised reviewer or workflow. Each item is a stable reference, not a copied data lake.
The receipt also records which temporal capabilities were unavailable. If an external source offers no historical read, say so. If a policy had only a date and the bank expanded it under a local convention, name the convention. If exact model replay is impossible, distinguish evidence reperformance from generative reproduction.
An assurance reviewer should be able to answer four questions from the receipt: what frame was requested, which versions were admitted, which later changes were excluded from the historical view, and which limitations could alter interpretation. If any answer requires the original analyst’s memory, the evidence trail is incomplete.
Temporal integrity is achieved through explicit frames, versioned assertions and honest limitations: not through a “last updated” badge.
The operating model should review temporal defects as a distinct category. A wrong value, wrong version and wrong time frame can produce the same sentence but require different remediation. Trend those causes separately. Give policy, source, platform and workflow owners named actions. Re-run the affected timeline fixtures after repair and retain the failed run beside the passing evidence. This turns a subtle temporal error into a controlled learning loop rather than another instruction added to the prompt.