Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0126

ADR-0126: The kg is branch-aware: each synced branch is its own project, serialized from a clean commit and checked after every sync

field value
Status Proposed — Proposed (the direction ruled by Mohamed 2026-10-22; the naming and mechanics proposed)
Date 2026-10-22
Register factory (docs/adr, 4-digit ids)
Source docs/adr/0126-the-kg-is-branch-aware-each-synced-branch-is-its-own-project.md — recorded on branch fix/ship-sanctioned-gate-pytest at 8c7031c9a, not yet on master
Wiki register entry ADR-0126 (wiki status: Proposed)

← ADR-0125 · ADR-0127 →

The record

Status: Proposed (the direction ruled by Mohamed 2026-10-22; the naming and mechanics proposed) · Date: 2026-10-22

Context

Measured 2026-10-22 on the prod kg (orchkg, main 10.53.1.123 and replica 10.53.1.128 agree):

Decision (Mohamed, verbatim: "make the tree branch aware option b")

  1. Branch-aware (ruled). The kg holds each synced branch as its own project, so syncing one branch never overwrites another.
  2. The components branch is synced now (ruled, option B).
  3. Naming (proposed). The default branch keeps the bare id (orchestrata-ultimate = master), so every existing consumer keeps working. Any other branch is <project>@<branch>, for example orchestrata-ultimate@components. Node ids already embed the project id, so branches never collide.
  4. Source of a sync (proposed). A kg snapshot is serialized from a clean export of a commit (git archive <sha>), with the commit's own env/ast-roots.env, never from a working tree.
  5. Every sync is checked (proposed). After a sync, the module paths in the kg are compared with the snapshot. Any missing module is re-synced (incremental --modules) and the comparison repeated until it is empty.

Alternatives rejected

Consequences

Provenance

No other ADR is named in this record.

Rulings cited

Specs cited

None (or no spec page exists for the ones named).