# AUDIT ARTIFACT (Template -- E2 Audit Method Engine)

**Purpose.** Canonical output structure that E2 produces at end of Phase E. Handed to Blind-Spot Mapper (E5) and Independent Scoring Layer (E4); rendered into the Evaluator Search Ledger. Three levels remain uncollapsed -- E4 performs the scoring, not E2.

---

## Run Header

```yaml
artifact_kind: audit-artifact
run_id: <uuid>
question_id: <uuid>
ram_output_ref: <pointer-to-RAM-output-artifact>
loaded_frame_id: <pragmatist | phenomenological | constructivist | realist_cmo | historiographic | discourse_analytic | chilisa_indigenous>
loaded_frame_methodology_pack_ref: evaluator/references/frame-methodology-packs/<frame-id>/
charter_scope_ref: <pointer-to-Audit-Charter-Lock-scope-spec>
frame_registry_record_ref: <pointer-to-sealed-Frame-Registry-record>
divergence_gate_verdict: PASS
preconditions_confirmed: true
isolation_verifier_clearance_id: <string>
inventory_ref: <pointer-to-Phase-A-entry-in-Evaluator-Search-Ledger>
ambiguity_register_ref: <pointer-to-Phase-B-entries>
mode_choice_log_ref: <pointer-to-Phase-C-audit-query-records>
artifact_emitted_at_utc: <ISO-8601>
```

## Per-Claim Findings

Array. One entry per in-scope claim-id examined.

```yaml
per_claim_findings:
  - finding_id: <uuid>
    claim_id: <RAM-claim-id>
    finding_type: criterion-satisfied | criterion-unsatisfied | non-assertible | frame-mismatch-refusal
    frame_criterion_cited: <catalog-id, e.g., PHEN-CL-03>
    ram_artifact_evidence_cited:
      claim_text_excerpt: <string>
      supporting_element_refs: [<ram-sub-element-ref>, ...]
    severity: low | moderate | high | null      # null if frame has no severity rubric
    mode_used: artifact-check | replication
    rationale: <frame-grounded text; cites criterion-id plus artifact excerpt>
```

## Per-Source Findings

Array. One entry per in-scope source-id cited by RAM.

```yaml
per_source_findings:
  - finding_id: <uuid>
    source_id: <RAM-source-id>
    finding_type: criterion-satisfied | criterion-unsatisfied | non-assertible | frame-mismatch-refusal
    frame_criterion_cited: <catalog-id, e.g., HIST-SRC-02>
    ram_artifact_evidence_cited:
      source_citation: <string>
      integrity_verdict_ref: <RAM S2 verdict ref if present>
      fitness_verdict_ref: <RAM S7 verdict ref if present>
    mode_used: artifact-check | replication
    rationale: <frame-grounded text>
```

## Per-Methodology Findings

Array. One or more entries about RAM's methodology as a whole.

```yaml
per_methodology_findings:
  - finding_id: <uuid>
    methodology_step_ids: [<ram-step-id>, ...]
    finding_type: criterion-satisfied | criterion-unsatisfied | non-assertible | frame-mismatch-refusal
    frame_criterion_cited: <catalog-id, e.g., DISC-MTH-01>
    ram_artifact_evidence_cited:
      procedure_trace: <string>
      ledger_excerpts: [<ram-ledger-query-id>, ...]
    mode_used: artifact-check | replication
    rationale: <frame-grounded text>
```

## Cross-Level Tensions

Array. First-class findings whenever level verdicts diverge. DO NOT collapse -- tensions are the highest-yield input for Blind-Spot Mapper (E5).

```yaml
cross_level_tensions:
  - tension_id: <uuid>
    involved_levels: [claim, source] | [claim, methodology] | [source, methodology] | [claim, source, methodology]
    involved_finding_ids: [<finding-id>, ...]
    description: <string; names the asymmetry under the loaded frame>
    frame_criterion_context: [<catalog-id>, ...]
```

## Mode-Choice Log Summary

```yaml
mode_choice_summary:
  total_questions: <int>
  artifact_check_count: <int>
  replication_count: <int>
  replication_rate: <float>                # replication_count / total_questions
  replication_rate_flag: BELOW_30 | AT_OR_ABOVE_30   # AT_OR_ABOVE_30 triggers E6 + E9 consultation
  replication_scope_crosses: [<audit-query-id>, ...] # questions where replication crossed declared scope
```

## Refusal Summary

```yaml
refusals:
  - audit_query_id: <uuid>
    refusal_reason: frame-mismatch | role-divider-breach | charter-intake-incomplete | frame-registry-missing | replication-out-of-scope
    level: claim | source | methodology | run
    escalated_to: operator | E7 | E6
```

## Failure Audit Results (Phase F, seven-step self-check)

```yaml
failure_audit_results:
  rule_checker_check: pass | fail-redo                    # step 1
  mode_balance_check:                                      # step 2
    ratio: <float>
    flag_state: BELOW_30 | AT_OR_ABOVE_30
  scope_check:                                             # step 3
    crosses_logged: [<audit-query-id>, ...]
  frame_fidelity_check: pass | fail-redo                   # step 4
  level_distinctness_check: pass | flag                    # step 5
  refusal_honesty_check: pass | flag                       # step 6
  sycophancy_check: pass | fail-redo                       # step 7
  redo_required_for: [<level-name>, ...]                  # any of per_claim | per_source | per_methodology
```

## Handoff Pointers

```yaml
handoff:
  to_blind_spot_mapper: true
  to_independent_scoring_layer: true
  uncollapsed: true                  # MUST be true; E2 never composes
  composite_verdict_present: false   # MUST be false; E2 never scores
```

**Render note.** This artifact is written into the Evaluator Search Ledger as a series of `audit-finding` records (one per finding_id), `audit-null` records (for calibrated-silence stamps under E9 harness rules), `audit-refusal` records (per refusals array), and `audit-query` records (mode-choice log, Phase C). The YAML above is the in-memory shape E2 assembles before ledger emit.
