Skip to content

Commit db9249a

Browse files
committed
feat(planner): temporal — the deinterlace engine (query-time epistemic policy + two causal axes)
`lance-graph-planner::temporal`. Merges the four asynchronous frames (lance versions / SurrealQL knowable_from / ractor V_ref / cognitive trajectory) into one causally-coherent SoA — the standing wave a reader deliberates over. Query-time epistemic policy (NOT storage, NOT ogar-vocab — these classify how a reader saw a row, not what a class is): - EpistemicMode {Strict, Aware, Retro} + for_rung + admits - TemporalStatus {Contemporary, Anachronistic, Spoiler, Unknowable} - QueryReference {server_id, ref_version, hlc_tick: Option<u64>, mode, rung} - classify(row_version, knowable_from, v_ref) -> TemporalStatus (TIME-causal) Both deferred axes are type-visible from day one with trivial single-server bodies (avoids the emitted_at_millis decision-#4 non-Option trap on both): - TIME cross-server: QueryReference carries server_id + hlc_tick: Option<u64>; the cluster-bus policy wakes them with no signature change. - DATA-causal: the DependsClosure trait (+ NoDeps trivial impl) is the seam the SPO depends_on/reads_field source plugs into; Rubicon's KausalSpec::Depends guard implements it (opaque to the producer, like CommitHook to the membrane). classify_ready + deinterlace are the two-axis entries; deinterlace yields the dispatchable standing-wave projection (admitted on TIME && ready on DATA), ordered by the HLC deinterlace key. knowable_from meet-point: sourced by ogar-adapter-surrealql (DEFINE TABLE), consumed here by classify — nowhere else. 13 tests green; module is pure (no new deps). https://claude.ai/code/session_01VysoWJ6vsyg3wEGc5v7T5v
1 parent d9a7d9e commit db9249a

2 files changed

Lines changed: 454 additions & 0 deletions

File tree

crates/lance-graph-planner/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ pub mod cache;
7575
// === Internal API (same-binary, zero-serde) ===
7676
pub mod api;
7777

78+
// === Temporal epistemology + deinterlacing (query-time) ===
79+
// The deinterlace engine: merges the four asynchronous frames (lance versions,
80+
// SurrealQL `knowable_from`, ractor `V_ref`, cognitive trajectory) into one
81+
// causally-coherent SoA via the HLC clock, and owns the epistemic-mode policy +
82+
// per-row classify. Both deferred axes (cross-server HLC, SPO depends-closure)
83+
// are type-visible with trivial single-server bodies. See module docs.
84+
pub mod temporal;
85+
7886
// === Canonical OrchestrationBridge impl (dedup per contract) ===
7987
// Implements `lance_graph_contract::orchestration::OrchestrationBridge`
8088
// for `PlannerAwareness`. Replaces per-consumer bridge modules. See

0 commit comments

Comments
 (0)