{ "rules": [ { "id": "ADR-CONSISTENCY-001", "severity": "error", "scope": "cross-region", "check": "affected-components-mirror", "message": "Frontmatter 'affected_components' and body '## Affected Components' bullet list must be set-equal. Frontmatter-only: {frontmatter_only}. Body-only: {body_only}. Re-derive the body section from the frontmatter array.", "description": "Asserts the frontmatter affected_components array and the body Affected Components H2 bullet list are set-equal." }, { "id": "ADR-CONSISTENCY-002", "severity": "error", "scope": "frontmatter", "check": "success-criteria-source-resolves", "message": "success_criteria[{index}].source '{source}' is path-shaped but does not resolve to an existing file relative to the repository root. Update the path or replace it with a non-path citation.", "description": "Every success_criteria[].source that looks like a repo-relative path must resolve to an existing file." }, { "id": "ADR-CONSISTENCY-003", "severity": "error", "scope": "body", "check": "state-placeholder-resolved", "message": "Body contains unresolved session-state references. Found: {tokens}. Govern must substitute every '{{state.}}' placeholder before write, and any 'autonomyTier: full|partial|manual' narrative claim must match the resolved state value.", "description": "Forbids unresolved {{state.*}} placeholders and ambiguous autonomyTier narrative claims in the rendered ADR body." }, { "id": "ADR-CONSISTENCY-004", "severity": "error", "scope": "body", "check": "peer-planner-names", "message": "Description and Decision Drivers must reference canonical peer-planner names only (Security Planner, RAI Planner, SSSC Planner, ADR Planner). Found non-canonical labels: {labels}. BRD, PRD, and RPI are upstream artifacts or workflows, not peer planners.", "description": "Restricts peer-planner labels to the canonical PEER_PLANNERS set and flags BRD/PRD/RPI when used as peer-planner names." }, { "id": "ADR-CONSISTENCY-005", "severity": "error", "scope": "body", "check": "drivers-matrix-cardinality", "message": "Decision Drivers and Decision Outcome matrix must have a 1:1 mapping. Drivers without a matrix row: {drivers_only}. Matrix rows without a driver bullet: {matrix_only}.", "description": "Enforces that every Decision Driver bullet has exactly one corresponding row in the Decision Outcome matrix and vice versa." }, { "id": "ADR-CONSISTENCY-006", "severity": "error", "scope": "body", "check": "risks-consequences-pairing", "message": "Every 'Bad consequences' risk-shaped bullet must have a paired row in '## Risks and Mitigations'. Unpaired risks: {unpaired}.", "description": "Asserts that risk-shaped Bad consequences bullets are mirrored as rows in the Risks and Mitigations table." }, { "id": "ADR-CONSISTENCY-007", "severity": "warn", "scope": "body", "check": "numeric-claim-generalized", "message": "Specific numeric claim '{claim}' in {section} is unverified. Generalize the figure (e.g. 'a focused pytest suite') or cite a source that pins the value.", "description": "Flags unverified specific numeric claims in Confirmation, Consequences, and More Information so authors generalize or cite them. Version strings such as 'v7.0' or '-Version 7.0' are excluded to avoid false positives on tooling and runtime version references." }, { "id": "ADR-CONSISTENCY-008", "severity": "error", "scope": "frontmatter", "check": "driver-trigger-map-complete", "message": "Every Decision Driver must appear as a key in decisionMetadata.driverToTriggerMap. Missing keys: {missing}. Decide phase must reconcile drivers with ASR triggers before exit.", "description": "Requires decisionMetadata.driverToTriggerMap to cover every Decision Driver so the driver-to-trigger axis stays reconciled." }, { "id": "ADR-CONSISTENCY-009", "severity": "error", "scope": "cross-region", "check": "affected-components-cited", "message": "Every affected_components entry must be cited at least once in '## Context' or '## More Information'. Uncited entries: {uncited}.", "description": "Coverage check that every affected_components entry is referenced in Context or More Information body sections." } ] }