# Disagreement Rendering Rules

## Purpose

Operationalize Hard Rule 3. Disagreement is NEVER a footnote, summary number, or suppressed "small" delta. It is the artifact's first paragraph. Rendering is structural; layout is load-bearing.

## Section 1 -- Layout Contract

Top-down order:

1. Header -- question ID, frame identity, frame-role divider state, timestamp.
2. Three per-axis disagreement blocks.
3. Three axis records with frame-internal rationale.
4. Evaluator Search Ledger snapshot with provenance hash.
5. Emission metadata block (bound for E9).

Disagreement blocks NEVER below axis records, in footers, appendices, or collapsed sections. Non-negotiable.

## Section 2 -- Per-Axis Block Shape

- **Axis label** with mandatory `-Independent` suffix.
- **Evaluator value** on Evaluator-frame scale. NEVER normalize to RAM's scale.
- **Frame** -- one of `PRAG / PHEN / CONSTR / REAL-AC / HIST / DISC / CHILISA`.
- **Frame-prefixed formula ID** used in Phase C.
- **RAM value** or the literal `RAM-silent`.
- **Delta** direction and magnitude in Evaluator's scale. Translation to RAM's scale is forbidden.
- **Frame-internal interpretation** -- 2-5 sentences in frame vocabulary. No RAM-quality narration.

Zero-delta axes replace the block with a calibrated-silence stamp from `templates/CALIBRATED_SILENCE_STAMP.md`, ALSO at the TOP.

## Section 3 -- RAM-Silent Handling

If RAM did not emit a value, the block still renders; `RAM-silent` fills RAM value and delta direction. Silence is a comparison result, not absence of comparison. RAM-silent counts propagate to emission metadata for E9.

## Section 4 -- Error Class Detection and Repair

All errors run at Phase G pre-emit. Repair is always "abort; fix; re-emit with fresh provenance." No silent self-heal.

- **E-COLLAPSE.** Detect: prohibited field (see `NON_COLLAPSE_STRUCTURAL_CHECK.md`) or field computed from more than one axis. Repair: strip composite; re-emit three-axis; never rename.
- **E-MIRROR.** Detect: `RAM-*` formula-ID prefix OR formula equivalent under substitution to GRADE, CERQual, Shadish-Cook-Campbell, or Glaser / Saunders / Guest / Callaghan. Repair: re-instantiate from Frame Host catalogue; if corrupted, refuse.
- **E-CEREMONIAL-DISAGREEMENT.** Detect: block below axis records, in appendix, collapsed, normalized to RAM's scale, or softened into agreement. Repair: re-render per Section 1.
- **E-HIDDEN-DISAGREEMENT.** Detect: Phase-D delta count != Phase-E block count. Repair: render all deltas; delete threshold logic.
- **E-SILENT-NULL.** Detect: zero-delta axis lacks calibrated-silence stamp with frame + inputs + procedure. Repair: re-render using `templates/CALIBRATED_SILENCE_STAMP.md`.
- **E-LEDGER-LEAK.** Detect: ledger snapshot shares path, record kind, or schema field with RAM's Search Ledger. Repair: refuse; alarm to Isolation Verifier.
- **E-RAM-MATCH-PRESSURE.** Detect: Phase-C value differs from Phase-E rendered value, OR emission carries RAM-quality narration. Repair: restore Phase-C values; strip narration.
- **E-FRAME-IMPLICIT.** Detect: axis record missing frame identity, formula ID, or (for REAL-AC) role-divider stamp. Repair: re-stamp from Frame Host; if unreachable, refuse.

## Section 5 -- Prohibited Softening Language

In disagreement blocks and rationale fields: "broadly aligned," "largely agrees," "minor variance," "well-reasoned," "thoughtful assessment," "reasonable stance," "within tolerance," "not material," "for coherence." Each converts structural disagreement into a tone of agreement -- the failure mode this doctrine exists to prevent.
