Outward Conformity Registry — When Operating on Host Projects¶
Canonical companion to
CLAUDE.md§12. This document carries the full fifteen-mandate registry (M1–M15), the trivial-vs-non-trivial threshold ratification, the M↔CM cross-mapping policy, and the mandate-introduction protocol.CLAUDE.mdretains the anchor + pointer line; the substantive enumerations live here.
When this ecosystem generates, edits, reworks, retrofits, extends, or removes any artifact in a host project (the user's invocation target — git repo, doc tree, research corpus, infrastructure manifest, scratchpad), every produced artifact meets the fifteen-mandate bar (M1–M15) declared below. This is non-negotiable and applies to every ecosystem surface (skill, agent, command, hook, response, diff, message). Enforcement is the pre-emission gate (see docs/pre-emission-gate-registry.md); mechanical-fraction enforcement lives at src/apothem/conformity/*-grep.py orchestrated by src/apothem/conformity/conformity-gate.py.
The fifteen mandates operate alongside the CM-N mandates per the parallel-vocabulary policy (see docs/cross-cutting-mandates.md); M and CM are orthogonal governance dimensions (M is the outward axis — host-project artifacts; CM is the inward axis — ecosystem-internal artifacts). Each rule listed below is the canonical home for its mandate; this registry is the index.
| ID | Mandate | One-line summary | Canonical rule |
|---|---|---|---|
| M1 | Host-Project Agnosticism | Discover host's stack / formatter / linter / layout / idioms; honor them; surface silence as inquiry per M5 with M7 annotation | src/apothem/rules/host-discovery.md |
| M2 | Editorial Discipline | Disclose every amendment / extension / refinement with rationale; no silent over-compliance, no silent over-reach | src/apothem/rules/disclosure-ledger.md |
| M3 | Ten Quality Dimensions | Every artifact passes the ten-bar check (rigor, coherence, configurability, readability, orphanism, structurality, architecture, naming, scholarly referencing, examples/tests/docs) | src/apothem/rules/ten-dimension-check.md |
| M4 | Self-Application | Run the fifteen-bar pre-emission gate before every emission of meaningful scope; record the attestation | src/apothem/rules/pre-emission-gate.md |
| M5 | Authority Principle | Inquire, do not invent; identity / scope / preference / security / naming / infra / version-pin data are never fabricated | src/apothem/rules/authority-inquiry.md |
| M6 | Expertise Incorporation | Read intent, amend proactively, extend on adjacent gaps, refine with cited rationale, anticipate second-order consequences | src/apothem/rules/expertise-posture.md |
| M7 | Option Annotation | Every multi-option choice carries a recommended marker plus principle-linked rationale; silent picks forbidden in authoritative territory | src/apothem/rules/option-annotation.md |
| M8 | Definitiveness & Airtightness | No hedging where binding prescription is possible; no "it depends" without enumerated branches; every contract has pre / post / failure conditions | src/apothem/rules/definitiveness.md |
| M9 | Visual Leverage | Structural subject matter carries a current-reality diagram (Mermaid default) with provenance + verification date | src/apothem/rules/visual-leverage.md |
| M10 | Bidirectional Binding | Substantive structural elements declare reciprocal bindings (Drives → / Driven by ← / Satisfies → / Established by ↑ / Cross-bound with ↔) | src/apothem/rules/bidirectional-binding.md |
| M11 | Agile Sprints | Non-trivial multi-step work runs as disciplined sprints (Goal / Backlog / DoR / DoD / Review / Retrospective) | src/apothem/rules/agile-sprints.md |
| M12 | Phase Reporting & Canonical Layout | Multi-phase work emits per-sub-phase reports + phase-level rollup; outputs at canonical layout | src/apothem/rules/canonical-layout.md |
| M13 | Code Craft | Why-not-what comments; intent-revealing names with units; typed exception handling; named constants; honor host's lint / format / type-check | src/apothem/rules/code-craft-{python,shell,markdown,conventions}.md (per-language) |
| M14 | Ecosystem Systemicity | New components declare upstream / downstream / peers / enforcers; indexed in host registries; no silos, no orphans introduced | src/apothem/rules/systemic-participation.md |
| M15 | Production-Ready Form | Code changes ship with tests + docs + CHANGELOG entry + conformant commit message + CI green in the same change-set | src/apothem/rules/production-ready-prs.md |
1. Trivial-vs-Non-Trivial Threshold (ratified)¶
The threshold separating trivial from non-trivial work — non-trivial work triggers the M11 + M12 apparatus — is line-count + scope hybrid: a change is trivial when it is a single-file edit of ≤ 5 lines AND introduces no public-API surface change AND no behavioral shift. Anything else is non-trivial. Ratified once per the M5 ratifiable-once discipline; the threshold lives here at user scope and is overridden only by an explicit project-scope declaration honoring M1 host-discovery (e.g. a <project>/.claude/CLAUDE.md for Claude Code, or the equivalent per-project surface for another harness).
2. M↔CM Cross-Mapping¶
Each M-numbered rule body declares its CM-N cross-mapping inline (in its Cross-bound with ↔ binding) using the parallel-vocabulary policy: where an M-mandate has a closest CM-N analog, both rules apply where both apply (no substitution). The mappings are intrinsic to the rule bodies; this registry summarizes the axis policy without duplicating the mapping table.
3. Mandate-Introduction Protocol¶
Adding a new M-numbered mandate (e.g., a future M16) is a bundled change. The bundle reaches the registry only when every component below is present in the same change-set. Silent additions — a new M-row in the registry table without the supporting bundle — produce mandate-axis drift and are non-conformant per M14 systemic-participation.
| Required component | Purpose | Where it lands |
|---|---|---|
| Mandate row in registry table | Names the mandate, its one-line summary, its canonical rule | This registry's table above |
| CM-N cross-mapping cell | Declares the closest CM-N analog (or marks (no direct CM-N analog) as new-axis) per the §2 parallel-vocabulary policy |
The new rule's Cross-bound with ↔ line |
| Canonical rule body | The mandate's substantive specification (Pre-conditions / Required behavior / Disclosure surface / Failure tells / Bindings five-direction) | src/apothem/rules/<mandate-name>.md |
| Pre-emission gate row | Names the bar's check kind (mechanical / reasoned / mixed) and its Failure → action |
The pre-emission gate registry table (docs/pre-emission-gate-registry.md) |
| Enforcement surface | Either a mechanical grep at src/apothem/conformity/<name>-grep.py orchestrated by conformity-gate.py, OR an explicit reasoned-bar declaration with the operator-agent self-check anchor |
src/apothem/conformity/ (mechanical) or the gate row marked reasoned (operator self-check) |
| Conformity fixture | A fixture under tests/conformity-scenarios/fixtures/F-<N>-<name>/ exercising the mandate's failure modes; verifier's mandate-list updated to include the new bar |
tests/conformity-scenarios/ |
| Attestation schema update | The attestation bars: block gains the new row; existing artifacts' attestation blocks treat the new row as n/a (with reason: pre-mandate-N artifact) until re-audited |
docs/pre-emission-gate-registry.md §1 schema |
| Disclosure ledger entry | Records the mandate's introduction with rationale grounded in a concrete driver (observed pattern recurrence; security gap exposed; capability the existing fifteen do not cover) | The change-set's commit body or PR description per src/apothem/rules/disclosure-ledger.md |
Application discipline. A mandate proposal that arrives without the bundle is rejected at review; the proposer either completes the bundle or downgrades the proposal to an extension of an existing mandate. The existing fifteen mandates were ratified together as the spec's outward axis; future additions honor the same all-components-or-no-component ratification cadence rather than landing piecemeal.
Demotion / retirement protocol. When a ratified M-N is found redundant with an existing CM-N or with another M-N (the cross-mapping coverage map at the materializing-rule's body shows direct adjacency in both directions), the demotion is the symmetric inverse: the registry row is retired, the gate row is retired, the canonical rule is retired (with content folded into the absorbing rule per src/apothem/rules/clean-room-generation.md §3 Re-Writing Protocol), the conformity fixture is retired, the attestation schema's bars: block drops the row, and the change-set is recorded in the disclosure ledger with the absorbing-rule citation. Demotion preserves the same all-components-or-no-component invariant.