amduat/docs/adr-031-asl-tgk-index-separation.md
Carl Niklas Rydberg 3473b19425 trow AI at it.
2026-02-22 00:25:56 +01:00

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)

  1. Visibility alignment: TGK indexes MUST only index artifacts visible under ASL log replay at the same (snapshot_id, log_position).
  2. Tombstone enforcement: TGK indexes MUST respect ASL tombstones and tombstone lifts at their logseq.
  3. No new identity: TGK nodes/edges MUST use ASL Reference identities; TGK MUST NOT introduce a distinct object identity scheme.
  4. Deterministic derivation: TGK index updates MUST be deterministically derived from ASL-admitted records (segments/log). No side-channel writes.
  5. Replay equivalence: Replaying ASL log + sealed segments MUST yield the same TGK index state (up to encoding) as an online build.
  6. Snapshot consistency: TGK queries at a snapshot MUST be consistent with ASL IndexState for 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.