Orchestrata Ultimate › Plans › research › audit-07-kg-schema

Audit 07 — KG Schema / Semantic Layer

Source: plans/research/audit-07-kg-schema.md at 8a2cb42ad · last changed 2026-07-27 · first committed 2026-07-04 · 40 lines.

Prose pending.

Plan text

Audit 07 — KG Schema / Semantic Layer

Headline: No single schema/ontology. Three parallel Cypher conventions + SPEC-105 ontology targets Stardog/RDF (disjoint from Neo4j). It's a code-structure graph with bolt-on provenance fragments — NOT domain-semantic. Provenance/ownership/ temporal live in dicts/Redis/Prolog, not graph edges.

Location

src/orchestrata_ultimate/knowledge_graph/ (40 files). Client neo4j_client.py; DDL schema.py:1-143; enums types_enums.py; code-sync sync.py(845)/synchronizer.py/_sync_queries.py; design/RTM kg_design.py::KGDesignStore; queries query_engine.py/search.py/temporal.py/portfolio.py; injectors context_injector.py/volk_context_injector.py. SPEC-105 domaingen/ = OWL/ttl→code+Stardog, never touches Neo4j.

Nodes

Edges (~40 created)

Ontology / properties

None governing Neo4j. SPEC-008 prose (spec.md:124-160) = doc, not enforced, diverges from schema.py. Props ad-hoc per writer (generic Node model bypassed). SPEC-105 ontology is RDF/Stardog, can't answer volk/intent/artifact questions in the live KG. Rich for code structure, shallow for problem domain.

Queries

Mostly inline. Reusable: _sync_queries.py (dead code/untested/inheritance), query_engine.py (multi_hop variable-depth), search.py (fulltext), kg_design.py (RTM/compliance), portfolio.py, volk_context_injector.py (6 task queries). Injection queries never MATCH the requesting Volk — no ownership/history/decision retrieval. No provenance/temporal/cross-store queries.

Constraints/indexes — 3 disjoint sets (~26 uniqueness)

schema.py:79-112, sync.py, kg_design.py:135, cxp_auditor.py:78. No constraints for Session/Volk/Agent/Task/Memory/Fact/AuditEntry/Scenario/Decision/Artifact. Conflicting keys → dup nodes. Dead :Node(created_at) index.

Proposal

  1. Canonical identity first: unify Volk/Agent, Spec/Specification, Class/CodeClass/DesignClass, single Session/Project/Requirement key + uniqueness constraints. Single schema-authority migration module (consolidate 3 DDL sites).
  2. New semantic nodes: Volk(canonical), Intent, Artifact, Decision, PipelineRun, Component, NodeVersion, Concept/OntologyClass+PropertyDef.
  3. New edges: ASSIGNED_TO/OWNS/WORKED_ON/EXECUTED_BY; Intent-[:TRIGGERED]->PipelineRun-[:PRODUCED]->Artifact-[:DERIVED_FROM]->Spec, GENERATED_BY->Volk; Volk-[:MADE]->Decision-[:APPLIES_TO]->Component, SUPERSEDES, JUSTIFIED_BY; HAS_VERSION/NEXT_VERSION; Memory-[:ABOUT]->File/Decision.
  4. New queries: volk-aware injection (ownership+recent decisions — SPEC-008 spec.md:333-347 specced-unimplemented), provenance/blast-radius, traceability audit (intent→req→code→test→run + orphans), temporal as-of, decision reasoning.
  5. Constraints/indexes: uniqueness Volk.alias/Session.id/Task.id/Intent.id/Artifact.id/Decision.id/PipelineRun.id/Component; range on created_at/valid_from; fulltext + Spec.title/Requirement.title/Decision.rationale/Memory.summary.