ADR-002: Adopt MORPHISM as the Governance Model¶
NON-NORMATIVE. This document records rationale and tradeoffs. Enforceable invariants are in docs/governance/morphism-kernel.md.
Status: Accepted Date: 2026-02-16 Author: @alawein Ticket: N/A (foundational decision)
Context¶
The monorepo had grown to include governance docs, CI workflows, git hooks, SSOT atoms, and policy scripts — but lacked a single, coherent model explaining why these pieces exist and what invariants they collectively enforce.
Without a unifying model: - Governance docs drifted from scripts (two truths) - Scope of each rule was implicit ("just conventions") - Enforcement was inconsistent — some rules blocked merge, others were advisory - New contributors had no principled basis for deciding where a new rule belonged
The core problem: entropy increases silently and is expensive to reverse.
Decision¶
Adopt MORPHISM as the governance model for this repository. Normative requirements are defined in docs/governance/morphism-kernel.md (the Kernel). This ADR records the rationale and tradeoffs.
The model rests on three structural elements:
- One Truth Per Domain — every governance assertion has exactly one canonical source (SSOT atom). Derived artifacts reference it; they do not restate it.
- Read–Verify–Execute protocol — all governance-touching transitions follow an explicit three-phase sequence. Verification is not optional.
- Entropy monotonicity — system ambiguity must not increase across releases without explicit authorization, measured by
maturity_score.py(Kernel Invariant I-5).
The "category theory / entropy functor" framing in the theory doc (docs/architecture/morphism-theory.md) is non-normative — it is an explanatory tool, not an enforcement document. The Kernel contains the enforceable invariants.
Consequences¶
Positive¶
- Single principled basis for deciding "where does this rule live?"
- Enforcement is mechanical (CI gates) not cultural (hoping people remember)
- Drift between canonical sources and consumers is detected automatically
- New contributors have a clear amendment process (not just "ask someone")
- Maturity score provides a ratchetable, auditable governance health metric
Negative¶
- Adds overhead for governance changes: must update Kernel + ADR + re-extract atoms
- The normative language (must/shall) in the Kernel is strict; exceptions require documented rationale
- Teams accustomed to informal governance may experience friction initially
Neutral¶
- The framework is internally consistent but does not prescribe application architecture
- Existing governance docs (AGENTS.md, SSOT.md, GUIDELINES.md) are compatible; this ADR does not supersede them — it provides the unifying rationale
Governance Fields¶
SSOT Impact: docs/governance/morphism-kernel.md becomes a new canonical governance atom. scripts/ssot_extract.py should extract it; scripts/ssot_verify.py will verify its hash.
Enforcement: CI integration-gate job runs verify_pipeline.py + maturity_score.py. Kernel invariants I-1 through I-7 each have mapped enforcement scripts.
Audit: Run python3 scripts/maturity_score.py for a 0–100 score across 10 governance dimensions. Run python3 scripts/ssot_verify.py to confirm all atoms are current.
Alternatives Considered¶
Alternative 1: Wiki-first (docs only, no CI enforcement)¶
- Pros: Low friction for contributors; easy to update
- Cons: No enforcement means drift accumulates silently; "governance" becomes aspirational
- Why rejected: The original state of this repo. Demonstrated that drift increases faster than manual correction.
Alternative 2: Process-only (checklists, PR templates)¶
- Pros: No tooling overhead
- Cons: Depends on human discipline; scales poorly; silently bypassed under deadline pressure
- Why rejected: Checklists without gate enforcement are decoration.
Alternative 3: External governance platform (Backstage, Cortex)¶
- Pros: Richer dashboards, team portals
- Cons: Additional infrastructure; not version-controlled; enforceability depends on the external platform
- Why rejected: Over-engineered for current scale; stdlib scripts in-repo provide the same guarantees at zero infra cost.
Alternative 4: Pure convention (naming rules, no tooling)¶
- Pros: Minimal overhead
- Cons: Same failure mode as wiki-first; conventions drift faster than conventions documents
- Why rejected: Naming conventions without enforcement are semantics, not governance.
References¶
- docs/governance/morphism-kernel.md — Kernel (normative)
- docs/architecture/morphism-theory.md — mathematical exposition (non-normative)
- docs/governance/MORPHISM.md — tenet enforcement matrix
- scripts/maturity_score.py — entropy/maturity gate
- scripts/ssot_verify.py — SSOT drift detection
- scripts/policy_check.py — unified policy orchestrator