2.1 KiB
2.1 KiB
ADR-031 — ASL + TGK Index Separation
Status: Accepted Date: 2026-02-21 Decision Owner: Architecture
Context
ASL index/log provide artifact visibility, replay, and tombstone semantics. TGK store provides graph query semantics over TGK edge artifacts. We must decide whether to merge ASL and TGK indexes into one unified index structure, or keep them separated with explicit cross-layer invariants.
Decision
We reject a merged ASL+TGK index.
ASL index/log and TGK index remain separate layers with strict invariants that keep them consistent.
Rationale
- ASL index is about artifact visibility and replay; TGK index is about graph query acceleration. Their update streams and invariants differ.
- Keeping them separate preserves clean layering and deterministic replay.
- TGK indexes can be rebuilt or swapped without changing ASL semantics.
- A merged index risks coupling graph query policies with storage visibility, complicating federation and policy enforcement.
Invariants (Normative)
- Visibility alignment: TGK indexes MUST only index artifacts visible under
ASL log replay at the same
(snapshot_id, log_position). - Tombstone enforcement: TGK indexes MUST respect ASL tombstones and
tombstone lifts at their
logseq. - No new identity: TGK nodes/edges MUST use ASL
Referenceidentities; TGK MUST NOT introduce a distinct object identity scheme. - Deterministic derivation: TGK index updates MUST be deterministically derived from ASL-admitted records (segments/log). No side-channel writes.
- Replay equivalence: Replaying ASL log + sealed segments MUST yield the same TGK index state (up to encoding) as an online build.
- Snapshot consistency: TGK queries at a snapshot MUST be consistent with
ASL
IndexStatefor that snapshot.
Consequences
- ASL and TGK index encodings remain separate specs.
- Conformance tests for ASL and TGK can evolve independently, with explicit cross-layer checks for the invariants above.
- TGK index rebuilds remain possible without touching ASL log/segment formats.