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)
- Core engine (
angarabase): SQL semantics, transactions, storage API, WAL/recovery primitives. - Adapters (
angarabased, future): pgwire/HTTP/admin surfaces, protocol transformation. - Tooling (
angara-cli,tools/*): utilities, runners, test harnesses. - Distribution/Packaging tooling (
packaging/*,tools/release/*): release artifacts, signatures, package manifests, publication scripts. - 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
Related Documents
- 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