Navigate QNTX's attestation history to understand how knowledge evolved.
Every attestation has a timestamp (✦) and causal links (⟶), creating a complete navigable history of system intelligence.
Watch knowledge evolution - how the system's understanding developed over time through continuous learning cycles.
since, until, between)Vision: Ingesters attest their own temporal structure, making QNTX fully domain-agnostic.
# Ingestor declares temporal schema via attestations
ingester:example -> has_temporal_field -> "start_time"
ingester:example -> has_duration_field -> "duration_months"
ingester:example -> temporal_unit -> "months"
ingester:example -> temporal_format -> "RFC3339"
Benefits:
node_type attestations, but for temporal propertiesThis extends the attestation abstraction to time itself, completing QNTX's domain-agnostic vision.
Phase 1: Temporal Range Queries ✅
since, until, on, between temporal expressionsPhase 2: Semantic Awareness (planned)
Reference (XTDB temporal SQL): XTDB v2's bitemporal query extensions (
FOR VALID_TIME AS OF,FOR SYSTEM_TIME AS OF) are a well-designed ergonomic reference if ATS temporal expressions grow beyondsince/until/on/between. XTDB distinguishes valid time (when the fact was true) from system time (when the system recorded it) — a distinction that maps to attestation time vs. ingestion time.
Footnote (OverFilter): Duration aggregation (
over 5y) was explored as a query-time accumulation mechanism — summing duration predicates across attestations per subject to answer "who has over N years of X?" It was removed: the complexity of plugin-provided numeric predicates, unit conversion, and temporal windowing didn't justify itself. If temporal accumulation returns, it belongs in a materialized view or plugin, not the query path.
Footnote (QueryExpander): Natural language semantic expansion (
"is engineer"→role=engineer OR title=engineer) was explored as a Go interface (QueryExpander) that domain-specific implementations could use to expand predicates into semantic equivalents. It was removed: the abstraction added complexity without a concrete implementation beyond NoOp. If semantic expansion returns, it belongs as attestation-based expansion rules (expansions are themselves attestations) or as a plugin service (e.g., MeiliSearch via ADR-015), not baked into the query path.