Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Architecture Layers and Dependency Governance

Status

The layering model is stabilized (active). Changes are made only via RFC.

Goal: To have a simple, verifiable model of layers and dependencies, so that changes do not blur the boundaries.

Layers (Working Model)

  1. Core engine (angarabase): SQL semantics, transactions, storage API, WAL/recovery primitives.
  2. Adapters (angarabased, future): pgwire/HTTP/admin surfaces, protocol transformation.
  3. Tooling (angara-cli, tools/*): utilities, runners, test harnesses.
  4. Distribution/Packaging tooling (packaging/*, tools/release/*): release artifacts, signatures, package manifests, publication scripts.
  5. Operational surfaces: configuration, runbooks, policies, evidence packs.

Dependency Rule (Most Important)

  • Core does not depend on adapters and tooling.
  • Adapters may depend on core.
  • Tooling may depend on core and adapters (but without backward hooks into core).
  • Distribution/Packaging tooling may depend on tooling/core artifacts and does not introduce runtime dependencies in core/adapters.

Visual Diagram

flowchart TB
 subgraph Core[Core engine (angarabase)]
 CoreAPI[engine public API]
 end

 subgraph Adapters[Adapters (angarabased, pgwire, ...)]
 Pgwire[pgwire]
 Admin[admin surfaces]
 end

 subgraph Tooling[Tooling (angara-cli, tools/*)]
 CLI[angara-cli]
 Runners[test/bench runners]
 end

 Adapters --> Core
 Tooling --> Core
 Tooling --> Adapters
 CoreAPI --> Core
  • Do-not-block constraints: angarabook/src/architecture/constraints.md
  • Engine core map: angarabook/src/architecture/components/engine_core.md
  • Governance RFC: RFC-2026-449-architecture-layering-and-dependency-governance-v0