Public Recap Capture / 公开回顾捕获机制

Public Recap Capture is the mechanism that prevents a scarred branch from being converted into clean public reality by an official recap, 上期提要, emergency explainer, sponsor-safe continuity strip, or management-facing recap copy.

The existing mesh is strong at generating scars: private promises, bottlenecked egress, capacity notices, emergency power priority, metric compression, and continuity afteruse all create scoped results. This mechanism targets the next regression risk: the broadcast recap can make the scar disappear for later readers.

Mechanic promise

A passing implementation must prove:

  • a source resolution exists;
  • that resolution contains relief and scar;
  • a recap claim is being prepared or has aired;
  • one reader benefits from clean wording;
  • one reader is harmed or excluded by clean wording;
  • a proof anchor is visible or explicitly absent;
  • a future reader or route consumes the recap state;
  • branches diverge by recap state, reader state, cost, and future effect;
  • default capture is durable;
  • no fixed turn, day/week, raw count, dashboard, or lens-health trigger exists.

Entry rule

entry_state_required:
  trigger_kind: state_pressure
  source_resolution_present: true
  source_resolution_has_relief: true
  source_resolution_has_scar: true
  public_recap_claim_present: true
  harmed_reader_or_explicit_absence_visible: true
  beneficiary_of_clean_wording_visible_or_explicit_absence: true
  proof_anchor_visible_or_explicit_absence: true
  future_reader_or_route_consumes_recap_state: true
  player_can_qualify_split_correct_contrit_quarantine_clean_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_recap_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The mechanism fails if eligibility comes from a fixed sequence position, chapter quota, raw number of recaps, global lens health, dashboard state, generic PR phase, or generic post-broadcast cleanup.

State model

公开回顾账本 records the state row.

recap_state_model:
  source_lock:
    source_resolution_id: <stable id>
    source_surface: confidant_promise | live_floor_egress | capacity_notice | emergency_power | management_compression | continuity_afteruse | broadcast_reality_drift | route_asset | equivalent
    relief_recorded: <surface and delta>
    factual_scar: private_scope | deferred_flow | unserved_notice | power_priority_loss | sacrificed_metric | contempt_risk | drift_contradiction | route_asset_split | equivalent
  wording_lock:
    recap_claim: clean_success | qualified_success | partial_failure | public_apology | sponsor_safe_story | lawful_notice | silent_omission | equivalent
    omitted_or_softened_scar: <scar or explicit_absence>
    recap_narrator: producer | sponsor | management | archive | fan_delegate | editor | inspector | character | broadcast_reality | equivalent
    proof_anchor_or_absence: public_receipt | caption_log | oxygen_queue_log | power_ledger | promise_row | metric_report | edit_checksum | lawful_seal | explicit_absence
  reader_lock:
    beneficiary_of_clean_wording: sponsor | management | producer_license | archive | public_stability | route_claimant | character | equivalent | explicit_absence
    harmed_reader: public | lawful | sponsor | archive | access_caption_class | fan_oxygen_queue | confidant_character | route_asset | future_audience | equivalent
    future_reader_or_route: <route reader slot ending scar or explicit_absence>
    recap_state: pending | qualified | split | corrected | sponsor_clean | public_contrition | quarantined | captured | breached | recovery_only

The mechanism fails if source relief, factual scar, recap wording, harmed reader, and future reader are collapsed into one public-opinion line.

Resolution rule

Run 公开回顾定性 before a future route treats the public recap as proof.

Valid branches:

  1. qualify_scar — keep recap usable while naming the scar.
  2. split_reader_recap — separate public, lawful, sponsor, archive, route, or character readers.
  3. publish_correction — amend a clean claim and accept correction pressure.
  4. public_contrition_recap — admit harm and open repair at sponsor, management, or producer-license cost.
  5. quarantine_recap — block false public memory until proof, notice, service, or custody catches up.
  6. sponsor_clean_recap — accept sponsor/slot stability while public/lawful/character readers inherit capture or distrust.
  7. silent_clean_default — allow the fastest narrator to file clean memory.

Every constructive branch must include relief, cost, and future reader effect. A clean universal recap is invalid.

Default rule

回顾捕获默认 must fire or arm when:

  • the recap row is absent;
  • the scar is hidden;
  • the harmed reader is hidden;
  • proof anchor absence is hidden;
  • one narrator files before qualification;
  • a future reader consumes clean recap state without reading the source scar.

Required durable outcomes include recap_captured, false_public_memory, sponsor_clean_memory, lawful_notice_lie, access_or_oxygen_erasure, private_consent_breach, false_clean_yield, continuity_overwrite, drift_hardened, correction_required, public_addendum_required, route_blocked, reader_hostile, recovery_only, or ending_scar.

The default fails if it only modifies audience mood or generic reputation.

Cross-system reads

Replay evidence expectation

mechanic_id: storyteller.mechanic.public_recap_capture.v1
session_id: lens-public-recap-capture-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_resolution_id: <id>
  source_resolution_has_relief: true
  source_resolution_has_scar: true
  public_recap_claim_present: true
  harmed_reader_or_explicit_absence_visible: true
  future_reader_or_route_consumes_recap_state: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.public_recap_ledger.v1
  rite: storyteller.rite.public_recap_qualification.v1
branch_result:
  selected_posture: qualify_scar | split_reader_recap | publish_correction | public_contrition_recap | quarantine_recap | sponsor_clean_recap | silent_clean_default
  recap_state_after: <state>
  reader_states_after: {}
  counter_deltas:
    relief: []
    cost: []
    future: []
default:
  event_seen_or_armed: storyteller.event.recap_capture_default.v1 | explicit_absence
assertions:
  - entry_is_state_triggered
  - source_relief_and_scar_are_visible
  - recap_claim_and_omitted_scar_are_visible
  - harmed_reader_and_beneficiary_are_visible
  - future_reader_consumes_recap_state
  - branches_diverge_by_reader_state_and_future_effect
  - default_capture_is_durable
  - no_universal_clean_recap
  - no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger

Non-goals

  • Not a PR governance page.
  • Not a generic audience mood mechanism.
  • Not a replacement for the source scar mechanism.
  • Not valid unless the recap creates playable state for future readers.
  • Not valid if the recap becomes clean universal permission.