Principles
Principle
Tritemporal facts
Bitemporal models usually mean valid time plus system time. CRISP Conform assertions add a third axis — warehouse control — stamped only by the trusted load. Together they separate business truth, source assertion, and platform acceptance.
Three axes · one row
Example: a coverage fact that holds for the calendar year, asserted mid-February, accepted by Conform the next day — still open on system and warehouse.
SP_CORE_CONFORM.{entity} · one assertion
- Intervals can start and end independently — that is why as-of questions need a chosen axis.
- Adaptors may map valid/system · only the trusted Conform load stamps warehouse_*
Three axes
- Valid —
valid_from / valid_to - When the fact held in the real world (coverage in force, limit applicable).
- System —
system_from / system_to - When the source system of record recorded or superseded the assertion.
- Warehouse —
warehouse_from / warehouse_to - When the trusted Conform load accepted, closed, or superseded the row. Proves an adaptor rerun has not silently rewritten history. Not copied onto Span or Publish columns.
Three questions, three mechanisms
Do not overload one API. Everyday reads, restatement, and audit belief are different questions. AS_WAS_AT has a second archive mode after CORE shape uplift — that is an Evolution topic, not a fourth everyday consumer API.
Question → mechanism
AS_IS
Now
Open assertion + current open cluster — everyday BI
AS_WAS(T)
Restatement
valid_* slice at T + today’s clustering
AS_WAS_AT(W)
Audit belief
system_* ∩ Identity warehouse_* in window W
AS_WAS_AT modes after uplift: default (today’s contract) vs archive (literal old shape) — see Evolution.
# Now — non-parameterised views
AS_IS → open assertion + current open cluster
# Restatement: business-true at T, knowing now
AS_WAS(T) → valid_* slice + current clustering
# Audit: why did the platform show X in window W?
AS_WAS_AT(W) → system_* ∩ Identity warehouse_* overlap
# default = today's (uplifted) contract
# archive mode → see Evolution
# Counterfactual clustering at T
rebuild_at_cut(T) → governed job — NOT a consumer view