SOP-017 — Audit rules for conflict, one-home, and dead references
SOP · owner: Rules & Governance (Golden Rule). Layer: SOP/Runbook (
docs/canon.md). The standing integrity check on the rule set: no two rules contradict, every governance fact has one home, and everyGR-#referenced elsewhere resolves to a real entry (the Phase 0 F1/F2 failure mode).
Interface Contract
- Inputs: rule set + governance references ← from self (audit pass) · trigger: “review requested”
- Outputs: rule-conflict / one-home defect list → to Principal · trigger: “review requested”
- Outputs: reconciled rule (
GR-#) → to all agents · trigger: “rule approved” - Handoff trigger (in): a scheduled audit cadence is reached, or a new rule is added that may conflict
- Handoff trigger (out): defects are either fixed via SOP-015 or recorded with a disposition; the rule set reads conflict-free
- Definition of Done before handoff:
- [ ] Every
GR-#checked for contradiction with every other (no two rules conflict) - [ ] Every governance fact single-homed (no rule restated across
CLAUDE.md/CONTRIBUTING.md/ policy) - [ ] Every
GR-Nreference outsideCLAUDE.md§Golden Rules resolves to a real entry or is marked illustrative - [ ]
GR-#numbering is contiguous and no retired number is reused - [ ] Defects fixed (via SOP-015) or recorded with a disposition
- [ ] Every
The audit is self-triggered (Inputs ← from self) on a cadence, so its in-edge is intra-agent and does not create a cross-agent dependency. Any fix routes through SOP-015 (explicit approval, GR-3) before
"rule approved"is emitted; the defect list to the Principal reuses the registered"review requested"phrase.
Purpose
Keep the rule set sharp and trustworthy: catch contradictions, duplicated/multi-homed
governance facts, and dead GR-# references before they mislead an agent who follows
a rule literally. This is the second-line check on the work SOP-015 produces.
When to use
On a periodic cadence (align with the canon staleness sweep / wave checkpoint), and opportunistically whenever a new rule is added or a governance reference is noticed that may not resolve.
Flow
flowchart LR
S["Scan CLAUDE.md +<br/>CONTRIBUTING.md"] --> X["Cross-check for<br/>conflict + duplication"]
X --> G["Grep GR-# refs<br/>across repo"]
G --> F{"Defects?"}
F -->|yes| Fix["Fix via SOP-015 /<br/>record disposition"]
F -->|no| OK["Rule set clean"]
Fix --> OK
classDef s fill:#1d4ed8,color:#fff,stroke:#1e3a8a
classDef d fill:#0f766e,color:#fff,stroke:#134e4a
class S,X,G,Fix,OK s
class F d
Text fallback: scan CLAUDE.md and CONTRIBUTING.md → cross-check every rule
against every other for contradiction and duplication → grep for GR-# references
across the repo and confirm each resolves → if there are defects, fix them via SOP-015
or record a disposition; otherwise the rule set is clean.
Steps
- Scan the homes. Read all
GR-#inCLAUDE.mdand all conventions inCONTRIBUTING.md. - Conflict check. Compare each rule against the others for direct contradiction or scope overlap. Name any conflict; do not silently override — propose reconciliation and escalate ownership overlaps to canon RACI / the Principal.
- One-home check. Confirm no rule is restated across
CLAUDE.md,CONTRIBUTING.md, andhr/policies/(CONTRIBUTING.md“one home per decision”). A rule that serves both audiences must be stated once and cross-referenced. - Dead-reference check. Grep
GR-[0-9](andGR-*) across the repo; confirm each reference outside the rules home resolves to a real entry or is explicitly marked illustrative (Phase 0 F1: theGR-8example in the #governance contract). - Numbering check. Confirm IDs are contiguous and no retired number is reused (Phase 0 F2: candidate “GR-7” shipped as a different rule).
- Dispose defects. Fix via SOP-015 (with approval) or record a disposition with a one-line reason. Capture any learning.
Roles / approvers
Run by Golden Rule. Fixes that change a rule are approved by the Principal (via SOP-015). Cross-cutting defects (e.g. a reference owned by another unit) are flagged to that unit’s Director / the COO cross-cutting log.
Guardrails
- Do not edit another unit’s doc to fix a dead reference — flag it to the owner (e.g. the #governance contract is Operations-owned).
- Do not renumber existing rules to close a gap; numbering is positional and stable references depend on it.
- No rule change without explicit approval (GR-3) — the audit finds defects; the fix goes through SOP-015.
See also: SOP-015 (rule co-creation) · SOP-016 (decision reconciliation) ·
CONTRIBUTING.md (one home per decision; ID scheme) ·
docs/units/rules-governance/charter.md.