- 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>
1.1 KiB
ADR 0006 — Learning is proposal-only (no self-authorization)
Status: accepted (2026-07-07) · Plan: rev 3 (resolves audit S3/S4/SA2)
Context
The learning loop (feedback → patterns → skills) informs the classifier that decides auto-act vs escalate. If learning could expand its own autonomy, poisoned feedback (flapping services, biased probes) could unlock destructive auto-act.
Decision
The learning engine cannot write to governance (policy/autonomy) tables — enforced structurally: its DB role has no grants on them. Pattern activation (validated → active) and any autonomy expansion require operator approval. Confidence is the Wilson lower bound capped by evidence_count/5; anomalous feedback bursts quarantine the pattern; no skill ever auto-promotes an action into destructive autonomy (hard-coded). Lowering autonomy (kill-switch) is always immediate, never gated.
Consequences
- Cold start is slow by design — the agent escalates until trust is earned.
- The operator is the only path to more autonomy; the audit trail shows every grant.