Component DAG
This page records the component DAG ruled in ADR-0112, ADR-0113, and ADR-0114 (Accepted 2026-10-19). The repo design is plans/component-fixes-2026-10-19.md. Do not edit those ADRs.
This is the code view. The runtime view (2026-10-22, ADR-0123 Proposed) lists the host services that run these components, why each exists, and what depends on it.
Cut-over status
Cut-over has not happened. origin/master at 0faca7a7 — prod deployed 2026-10-19T11:41:39Z — is a backup-and-deploy of the in-progress tree (ADR-0113), not the cut-over. Cut-over remains: integration passes the fleet tier, old src/orchestrata_ultimate trees removed, one merge, /opt/orchestrata ships from that tree.
Components
| component | import name | depends on | state |
|---|---|---|---|
| contracts | orchestrata_contracts | none | landed |
| governance | orchestrata_governance | contracts | landed |
| knowledge_graph | orchestrata_kg | contracts | landed |
| kernel | orchestrata_kernel | contracts, governance, knowledge_graph | landed |
| session | orchestrata_session | contracts, knowledge_graph, governance | landed |
| volks | orchestrata_volks | contracts, kernel, knowledge_graph, governance | landed |
| gateway | orchestrata_gateway | contracts, kernel, session, knowledge_graph, governance | landed |
| tools | orchestrata_tools | contracts, knowledge_graph, governance | landed |
| integration | orchestrata | kernel, gateway, volks, session, knowledge_graph, governance, tools | INT-01 landed (SPEC-125 PROPOSED delta + release scaffold: pyproject with 8 component pins + 9 frozen-lock constraint pins, console scripts orchestrata/session, mint-token N4-gated; 3 import-free inits; committed uv.lock). INT-02..25 not started |
| plugin | none | gateway, tools, integration | packaging track, not a realize component |
Notes:
- knowledge_graph: the on-disk src dir is
packages/knowledge_graph/src, notpackages/kg/src. - tools: ADR-0107 made it a package. ADR-0112 forbids kernel imports; Redis and embeddings go through contracts protocols. That seam is committed (
9bf101eb9).
Graph sync
Prod orchkg (database orchkg, main instance_2 at 10.53.1.123:7687) has the component packages. Measured 2026-10-20T01:59:52Z:
| check | count |
|---|---|
Module nodes for orchestrata-ultimate |
5232 |
modules whose file path contains orchestrata_contracts |
403 |
| Spec | 71 |
| Requirement | 639 |
| RequirementItem | 5786 |
| TRACES_TO from this project's code | 15366 |
Package module counts from the same sync: contracts 403, governance 254, knowledge_graph 161, kernel 411, session 59, volks 382, gateway 73, tools 28. The on-disk knowledge_graph root is packages/knowledge_graph/src, not the packages/kg/src path named in ADR-0114.
The first full sync died on a SYNC-replica RPC timeout after Class and Function nodes. The resume did not clear. It wrote Method, Parameter, and the edges. 24 method rows collapsed on a duplicate qualified name (31706 nodes from 31730 rows). Component module paths are src.orchestrata_<import>… because each declared root's directory is named src. That is not the packages.<name>.src… prefix ADR-0114's mechanism sentence expected. file_path still carries packages/<name>/src/…. The Accepted ADR body was not edited.
Ontology
The ratified architecture ontology already has Component and DEPENDS_ON. This page does not add a node type. Graph ids are orchestrata-ultimate:<name>.
Ontology seed — DONE and verified on prod orchkg (session 272, 2026-10-19/20)
scripts/seed_component_dag.py (commit ae2c23736, writer-only: upsert_component + link_depends_on, tests 6/6 green on the test fleet, coverage 98%) was run by the coordinator against prod orchkg (neo4j://10.53.1.160:7691, database orchkg). Result: {'components': 10, 'depends_on': 30} — one routing write-handshake flake auto-retried by the driver, the known ADR-0109-era behaviour.
Verified read-only per-instance (direct bolt, main 10.53.1.123:7687 AND replica 10.53.1.128:7687 agree):
| check | result |
|---|---|
the ten DAG rows exist with the ruled required flags (integration/plugin false, rest true) and boundary = import root |
10/10 |
orchestrata-ultimate:tools DEPENDS_ON contracts, governance, knowledge_graph — and NOT kernel (ADR-0112 shape) |
exact |
| project-scoped DEPENDS_ON edges | 30 |
| project-scoped Component nodes | 50 (5 legacy capitalised service rows + the 10 DAG rows + ~35 pre-existing namespace rows, below) |
Two anomalies measured during the run — one resolved to NOT-a-defect before any cleanup, both recorded:
- Routing-URI reads are divergent. The same
neo4j://10.53.1.160:7691endpoint served one connection the fresh state (stats: Component 50, DEPENDS_ON 30) and another connection an ANCIENT view (5 project rows, 0 DEPENDS_ON — predating the 2026-10-20 sync). Direct per-instance bolt reads are consistent and are the only trustworthy verification path after a prod write.SHOW INSTANCESis unreachable from this host's port map (.160:7687refused; via routing it errors "Coordinator was not initialized as coordinator port"). - The per-namespace Component rows are a traced runtime feature, NOT pollution — deletion REFUSED. ~35 project-scoped Component rows (
:agents,:core,:cli,:orchestrata_ast, ...) looked like namespace pollution; Mohamed granted cleanup permission on that framing (2026-10-19). Producer-first measurement found the source:kernel/pipeline_kg.py::sync_components_to_kg()(@tracesREQ-008-006) MERGEs one Component per depth-0 AST Package +PART_OFProject so the live(:Volk)-[:OWNS]->(:Component)work-context traversals resolve (SPEC-008 FR-002 gap #2 — the stats'PART_OF = 42is its edge count). Deleting them would regress a traced requirement, so the permission was NOT exercised; the corrected finding superseded it. Seven DAG ids (kernel, session, gateway, governance, knowledge_graph, tools, plugin) pre-existed as package Components and the seed's MERGE unified the design row onto the runtime node — ruling 2 of the ratified ontology ("the design-time Component IS the runtime-ownership Component") working as designed;responsibility/required/boundarycoexist withtype='package'/path/PART_OFwithout overwrite.
The five legacy capitalised rows from scripts/sync_architecture_to_graph.py's self-described-architecture table (re-synced by the SessionStart hook) were CORRECTED on prod orchkg 2026-10-20 (P-ARCHSYNC, repo commit 7e23e5315, Mohamed: "we are not using neo4j models get confused make this clear" + delete/cleanup permission): the Neo4j row is now orchgraph (the Memgraph 3.11 fork HA cluster; the Neo4j node was retired via the script's new scoped --retire-legacy flag with its pre-delete snapshot printed), Kernel required flipped false → true (Hard Rule 7), and the gRPC phrasing (rows + the gRPC kernel is out-of-process Constraint) became the cxpt direct transport (the old Constraint retired, the renamed one re-bound with its 3 edges). Census verified per-instance, main == replica: project Components 50 / Constraints 6 before AND after (each +1 new, −1 retired); Neo4j and the old Constraint return 0 rows. The capitalised service vocabulary (VizInt UI, Gateway, Kernel, Redis, orchgraph) still coexists with the lowercase DAG + per-package rows — unifying the three vocabularies remains a cut-over-era decision, recorded as such.