- seeds/ontology.yaml: 59 entity types (5 abstract, is-a hierarchy), 46 relationship types with cardinality, 6 lifecycles with terminal states and named precondition checks - seeds/inventory.yaml: 110 entities / 142 relationships translated from legacy inventory.yaml (fleet, services, ingress, storage, governance, archaeology); thin spots marked for backfill - seeds/policy.yaml: 4 risk classes, 27 approval rules (hierarchy-aware, per-entity overrides), autonomy kill-switch off (cold start) - api/openapi.yaml: full v1 REST contract (40 paths), RFC 9457 errors, cursor pagination, idempotency, ETag/If-Match, scopes; redocly-clean - docs/adr/0001-0010: initial architecture decision records - scripts/validate-seeds.py: Phase 0 gate — hierarchy, lifecycles, endpoints, cardinality, policy cross-refs (0 errors) - plan: layer CHECK gains 'meta' (root type), cardinality gains 'many-to-one' Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
24 lines
1.0 KiB
Markdown
24 lines
1.0 KiB
Markdown
# ADR 0003 — DB-native ontology with YAML seed manifests
|
|
|
|
Status: accepted (2026-07-07) · Plan: rev 3, R3-1
|
|
|
|
## Context
|
|
Rev 1 kept inventory/ontology/policy as YAML files parsed at runtime.
|
|
Agents need graph queries (blast radius), transactional mutations with
|
|
audit, and a future UI needs to edit the model without file round-trips.
|
|
|
|
## Decision
|
|
The DB is the runtime source of truth. entity_types form an is-a hierarchy
|
|
(parent_type, is_abstract); relationship endpoint constraints may name
|
|
abstract types and validation walks the hierarchy. YAML files under seeds/
|
|
bootstrap the DB (idempotent, content-hashed via seed_versions) and serve
|
|
DR; `GET /api/v1/export` regenerates them for version control (round-trip
|
|
byte-stable, tested in CI).
|
|
|
|
## Consequences
|
|
- Ontology changes are API calls (policy-gated), not redeploys.
|
|
- Seeds can drift from DB between exports — export is part of the routine
|
|
(commit after meaningful model edits).
|
|
- Abstract types let policy rules and relationships bind once at the right
|
|
altitude (e.g. `compute-entity provides service`).
|