# REOPEN_EVENT_RECORD (Template)

**Type:** Template -- structured record for every E7 invocation that produces a verdict.
**Written to:** Evaluator Search Ledger (via write-through from Independent Scoring Layer E4).
**Also emitted to:** Phase 7 orchestration enforcement-surface (verdict + basis only).

---

## Fields

```yaml
cycle_id: <audit-cycle identifier>
invocation_id: <E7 invocation UUID; monotonic within cycle>
timestamp: <ISO-8601 with timezone>

verdict: <one of: REOPEN | PASS | PASS-DEFERRED | ESCALATED>

# Composite-trigger evaluation (see references/COMPOSITE_TRIGGER_SPEC.md)
predicate_evaluation:
  P1_material_finding_present: <true|false>
  P2_material_disagreement_present: <true|false>
  P3_e9_over_report_absent_or_justified: <true|false>
  P4_evidence_novel_vs_prior_close: <true|false>
  P5_defect_class_in_scope: <true|false>
  reopen_eligible: <true|false>  # iff P4 AND P5 AND count({P1,P2,P3} TRUE) >= 2

# Gate results (see references/DWELL_AND_BOUND_RULES.md)
gates:
  dwell_time_floor: <seconds; copied from Charter>
  time_since_last_reopen_close: <seconds>
  dwell_gate_result: <PASS | PASS-DEFERRED>
  sub_dwell_deferral_counter: <int>
  sub_dwell_cap: <int; copied from Charter>
  reopen_count_for_cycle: <int>
  reopen_ceiling_N: <int; copied from Charter>
  bound_gate_result: <PASS | ESCALATED>

# Ceremonial-reopen detection (Phase 2 of SKILL.md)
ceremonial_detection:
  e9_ceremonial_pattern_signal_active: <true|false>
  suppressed: <true|false>
  suppression_record_id: <nullable; set iff suppressed>

# Five-signal inventory snapshot (for Phase 9 telemetry)
signals:
  S1_reopen_count: <int>
  S2_reopen_to_reopen_interval_sec: <int|null>
  S3_repeat_evidence_pattern_detected: <true|false>
  S4_ceremonial_pattern_signal: <true|false>
  S5_metric_identity_flag: <true|false>

# Evidence references
evidence:
  triggering_findings:  # list of E5 finding refs
    - finding_id: <id>
      severity: <num>
      defect_class: <class>
      evidence_ref: <artifact-key>
  triggering_disagreements:  # list of E4 axis delta refs
    - axis: <claims|evidence|interpretation>
      magnitude: <num>
      artifact_ref: <id>
  prior_close_evidence_refs:  # artifact-keys against Ledger, for P4 check
    - <artifact-key>

# Convergence-failure snapshot (set iff verdict == ESCALATED)
convergence_failure:
  reason: <bounded_count_exceeded | sub_dwell_cap_exceeded | repeat_evidence_P4_failure | null>
  history_snapshot: <nullable; full reopen-event chain for cycle>
  receiver_id: <nullable; Charter escalation-receiver-id>
  automated_reopen_frozen_until: <nullable; timestamp or DISPOSITION_REQUIRED>

# Charter snapshot (read-only, for audit trail)
charter_snapshot:
  charter_version: <semver>
  composite_trigger_spec_version: <semver>
  dwell_time_floor: <seconds>
  reopen_ceiling_N: <int>
  sub_dwell_cap: <int>
  materiality_threshold: <num>
  disagreement_threshold: <num>
  noise_floor_declared: <true|false>

# Enforcement-surface handoff (set iff verdict in {REOPEN, ESCALATED})
enforcement_handoff:
  handed_to: <phase_7_orchestration_channel_id>
  acknowledgement_received: <true|false>
  ack_timestamp: <ISO-8601|null>
  degradation_detected: <true|false>  # if TRUE -> EC-ENFORCEMENT-SURFACE-DEGRADED

# Error class (set iff any)
error_class: <null | EC-ADVISORY-REGRESSION | EC-OSCILLATION | EC-GOODHART-DRIFT | EC-CEREMONIAL-MASK | EC-INPUT-MISSING | EC-CHARTER-MISSING | EC-ENFORCEMENT-SURFACE-DEGRADED | EC-RUNTIME-SELF-CALIBRATION>
error_notes: <nullable freeform; audit-trail only; NEVER a verdict substitute>
```

---

## Field Discipline

- `verdict` is the ONLY output channel for the verdict token. It is never repeated as prose elsewhere in the record.
- `error_notes` is an audit-trail field; it MUST NOT contain advisory text masquerading as a verdict.
- `charter_snapshot` is copied in at invocation time. The skill does not write back to it. Ever.
- `signals` exists for Phase 9 telemetry; it is NOT consumed as input to the verdict (thresholds come from `charter_snapshot`).
- When `verdict == PASS` due to ceremonial suppression, `ceremonial_detection.suppressed` MUST be `true` and `suppression_record_id` MUST be populated. Silent PASS is forbidden.
