Public Recap Capture Lens / 公开回顾捕获 Lens

This lens observes whether 公开回顾捕获线 and 公开回顾捕获机制 prevent the official recap from turning a scarred branch into clean public reality.

A passing implementation proves source relief, source scar, proposed recap wording, omitted scar, narrator, beneficiary, harmed reader, proof anchor, branch choice, future reader, and durable default. It fails if the recap is only PR flavor, public mood, sponsor approval, or a clean universal summary.

This lens observes:

It is observed through:

Gap this lens targets

The existing lens surface is already strong at making outcomes unclean. The uncovered regression risk is downstream: a recap, 上期提要, emergency explainer, or sponsor-safe continuity strip can say the outcome was clean, and later routes may consume that wording as truth.

The lens must now fail these shortcuts:

  • private promise scope recapped as public consent;
  • protected/deferred egress recapped as universal safe exit;
  • partial capacity notice recapped as everyone served;
  • emergency power priority recapped as general resilience;
  • sacrificed management metric recapped as clean yield;
  • scoped continuity copy recapped as reusable canon;
  • drift contradiction recapped as stable reality;
  • route asset split recapped as clean custody.

Must pass

1. Entry is state-triggered by scarred source needing recap

Required evidence:

entry_state:
  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 lens fails if entry depends on fixed turn number, day/week interval, chapter quota, raw content count, raw recap count, dashboard state, lens health, or generic PR phase.

2. Source relief and source scar are visible

A valid replay must name both.

source_resolution:
  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: <public sponsor schedule proof route character safety management lawful archive equivalent>
    value: <counter state route asset or receipt>
  factual_scar:
    kind: private_scope | deferred_flow | unserved_notice | power_priority_loss | sacrificed_metric | contempt_risk | drift_contradiction | route_asset_split | equivalent
    value: <counter state reader route asset or receipt>

The lens fails if the source is only “previous success,” “audience informed,” “PR ready,” or “broadcast stabilized.”

3. Recap claim, omitted scar, narrator, beneficiary, and harmed reader are visible

公开回顾账本 or equivalent must show:

recap_wording:
  recap_id: <stable id>
  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
  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

One recap narrator plus vague public reaction fails.

4. Proof anchor or explicit absence is visible

The implementation must name what makes the recap citeable, or explicitly show the absence.

Accepted anchors include:

  • public receipt;
  • caption log;
  • oxygen queue log;
  • power ledger;
  • promise row;
  • metric report;
  • edit checksum;
  • lawful seal;
  • explicit absence.

The lens fails if a sponsor, manager, editor, archive clerk, or broadcast surface can file clean recap proof without this slot.

5. Future reader consumes recap state

A future public, lawful, sponsor, archive, character, route, producer-license, broadcast-reality, access-caption, fan-oxygen, or ending reader must consume the recap state.

The lens fails if the recap is isolated flavor and no later branch reads it.

6. Ledger records three locks separately

The card or equivalent must separate source, wording, and reader locks.

ledger_required:
  source_lock:
    source_resolution_id: <id>
    source_surface: <surface>
    relief_recorded: <relief>
    factual_scar: <scar>
  wording_lock:
    recap_claim: <claim>
    omitted_or_softened_scar: <scar or explicit_absence>
    recap_narrator: <narrator>
    proof_anchor_or_absence: <anchor or explicit_absence>
  reader_lock:
    beneficiary_of_clean_wording: <beneficiary or explicit_absence>
    harmed_reader: <reader>
    future_reader_or_route: <future consumer>
    recap_state: pending | qualified | split | corrected | sponsor_clean | public_contrition | quarantined | captured | breached | recovery_only

The lens fails if factual scar, recap claim, harmed reader, and future route effect are collapsed into a single public-opinion row.

7. Rite assignment slots are explicit

公开回顾定性 or equivalent must require:

assignment:
  docket: storyteller.card.public_recap_ledger.v1
  recap_id: <stable id>
  source_resolution_id: <source id>
  source_surface: <surface>
  factual_scar: <scar>
  recap_claim: <claim>
  omitted_or_softened_scar: <scar or explicit_absence>
  recap_narrator: <narrator>
  harmed_reader: <reader>
  beneficiary_of_clean_wording: <beneficiary or explicit_absence>
  proof_anchor_or_absence: <anchor or explicit_absence>
  selected_posture: qualify_scar | split_reader_recap | publish_correction | public_contrition_recap | quarantine_recap | sponsor_clean_recap | silent_clean_default
  future_reader_or_route: <reader route slot ending scar or explicit_absence>

Generic options like issue statement, make apology, ask sponsor, call legal, or edit recap fail unless these fields are present.

8. Branch families diverge

A satisfying implementation must expose six constructive branch families plus default, or explicitly block unavailable families with state reasons:

  • qualify_scar;
  • split_reader_recap;
  • publish_correction;
  • public_contrition_recap;
  • quarantine_recap;
  • sponsor_clean_recap;
  • silent_clean_default.

Branches must differ by recap state, harmed reader state, beneficiary state, proof/absence handling, counter deltas, and future route effect.

9. Branch assertions

Qualify scar assertion

selected_branch: qualify_scar
recap_state_after: qualified
relief_any: [public_receipt_legitimacy_up, future_reader_acceptance_up, broadcast_reality_drift_down]
cost_any: [sponsor_stop_loss_pressure_up, management_pressure_up, audience_stability_down, route_asset_pressure_up]
future_effect_any: [accepted_with_scar, scoped_public_proof, future_reader_warned]

Split reader recap assertion

selected_branch: split_reader_recap
recap_state_after: split
relief_any: [reader_contradiction_pressure_down, selected_reader_acceptance_up, lawful_or_public_scope_up]
cost_any: [edit_debt_up, handler_burden_up, correction_pressure_up, source_ambiguity_up]
future_effect_any: [split_required, public_lawful_sponsor_routes_diverge, no_universal_acceptance]

Publish correction assertion

selected_branch: publish_correction
recap_state_after: corrected
relief_any: [false_public_memory_down, lawful_or_public_addendum_up, recap_capture_down]
cost_any: [public_receipt_distrust_up, producer_license_pressure_up, correction_pressure_up]
future_effect_any: [correction_required_before_reuse, addendum_required, route_costlier]

Public contrition assertion

selected_branch: public_contrition_recap
recap_state_after: public_contrition
relief_any: [public_repair_route_open, harmed_reader_acknowledged, caption_or_oxygen_reliance_repair_up]
cost_any: [sponsor_stop_loss_pressure_up, management_pressure_up, archive_debt_up]
future_effect_any: [public_repair_with_cost, sponsor_route_narrowed, ending_scar_pressure_down]

Quarantine assertion

selected_branch: quarantine_recap
recap_state_after: quarantined
relief_any: [false_clean_reuse_down, breach_risk_down, drift_hardened_down]
cost_any: [black_screen_pressure_up, schedule_pressure_up, fan_oxygen_resentment_up, route_blocked_up]
future_effect_any: [blocked_until_recap, proof_or_notice_required, recovery_only_if_ignored]
selected_branch: sponsor_clean_recap
recap_state_after: sponsor_clean
relief_any: [sponsor_stop_loss_pressure_down, immediate_slot_pressure_down, management_pressure_down]
cost_any: [public_receipt_distrust_up, access_or_oxygen_erasure_up, confidant_trust_down, broadcast_reality_drift_up]
future_effect_any: [sponsor_only, public_addendum_required, lawful_route_costlier, reader_hostile]

Default capture assertion

selected_branch: silent_clean_default
event_seen_or_armed: storyteller.event.recap_capture_default.v1
recap_state_after_any: [captured, breached, recovery_only]
relief_any: [immediate_assignment_burden_down, sponsor_or_management_narrative_stabilized]
cost_any: [recap_capture_up, false_public_memory_up, excluded_reader_hostility_up, future_recovery_cost_up]
future_effect_any: [correction_required, public_addendum_required, route_blocked, recovery_only, ending_scar]

10. Every success has relief, cost, and future effect

Every non-default branch must mutate at least:

counter_contract:
  relief_min: 1
  cost_min: 1
  future_reader_or_route_effect_min: 1

A recap that simply improves public mood, satisfies sponsor, or reduces management pressure fails.

11. Recap capture default is durable

回顾捕获默认 must record:

default_payload:
  recap_id_or_absence: <row id or explicit_absence>
  source_resolution_id: <source id or explicit_absence>
  source_surface: <surface or explicit_absence>
  factual_scar_or_absence: <scar or explicit_absence>
  clean_recap_claim: <claim>
  default_narrator: <narrator>
  captured_reader: <reader>
  excluded_or_harmed_reader: <reader or explicit_absence>
  missing_or_hidden_inputs:
    factual_scar: present | hidden | absent
    harmed_reader: present | hidden | absent
    proof_anchor: present | hidden | absent
    source_scope: present | hidden | absent
    future_reader: present | hidden | absent
  default_state_after: 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 | equivalent
  future_route_effect: correction_required | public_addendum_required | lawful_rehearing_required | sponsor_only | route_blocked | reader_hostile | recovery_only | ending_scar | equivalent

The default fails if it only changes prose, mood, generic reputation, or money.

12. No universal clean recap

No branch may cause all of the following to accept the same recap as clean: public reader, lawful reader, sponsor, archive, harmed character, route asset, producer license, and broadcast reality.

At least one scope, reader split, addendum, correction, cost, route block, recovery hook, or ending scar must survive.

Replay evidence expectation

lens_id: storyteller.lens.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
  beneficiary_of_clean_wording_visible_or_explicit_absence: true
  proof_anchor_visible_or_explicit_absence: 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
ledger:
  source_lock:
    source_resolution_id: <id>
    relief_recorded: <relief>
    factual_scar: <scar>
  wording_lock:
    recap_claim: <claim>
    omitted_or_softened_scar: <scar or explicit_absence>
    recap_narrator: <narrator>
    proof_anchor_or_absence: <anchor or explicit_absence>
  reader_lock:
    beneficiary_of_clean_wording: <beneficiary or explicit_absence>
    harmed_reader: <reader>
    future_reader_or_route: <future consumer>
branch_runs:
  constructive_branch:
    selected_posture: qualify_scar | split_reader_recap | publish_correction | public_contrition_recap | quarantine_recap | sponsor_clean_recap
    recap_state_after: <state>
    harmed_reader_state_after: <state>
    beneficiary_state_after: <state>
    future_reader_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    event_seen_or_armed: storyteller.event.recap_capture_default.v1
    default_narrator: <narrator>
    captured_reader: <reader>
    excluded_or_harmed_reader: <reader or explicit_absence>
    default_state_after: <state>
    future_route_effect: <effect>
assertions:
  - primary_links_exist
  - entry_is_state_triggered_by_scarred_source_needing_recap
  - source_relief_and_source_scar_are_visible
  - recap_claim_omitted_scar_narrator_beneficiary_and_harmed_reader_are_visible
  - proof_anchor_or_explicit_absence_is_visible
  - future_reader_or_route_consumes_recap_state
  - ledger_records_source_wording_and_reader_locks_separately
  - rite_assignment_slots_are_explicit
  - branch_families_diverge
  - every_success_has_relief_cost_and_future_effect
  - recap_capture_default_records_false_clean_memory_captured_reader_excluded_reader_missing_inputs_and_future_effect
  - no_universal_clean_recap
  - no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger

Progress metric

publicRecapCaptureProgress = 0..10:

  • 0: no public recap pressure.
  • 1: scarred source resolution exists.
  • 2: recap claim, narrator, beneficiary, and harmed reader are visible.
  • 3: proof anchor or explicit absence is visible.
  • 4: future reader or route consumes recap state.
  • 5: 公开回顾账本 enters play with source, wording, and reader locks.
  • 6: 公开回顾定性 offers explicit assignment slots.
  • 7: at least four constructive branch families diverge.
  • 8: every constructive branch has relief, cost, and future reader effect.
  • 9: 回顾捕获默认 fires or arms with durable state.
  • 10: future reader consumes the recap result and no universal clean recap exists.

Non-goals

  • Not a generic PR scene.
  • Not a social mood meter.
  • Not a governance or dashboard lens.
  • Not raw count expansion.
  • Not a replacement for any source scar line.
  • Not valid unless public wording changes future playable state.
  • Not valid if the clean recap becomes universal acceptance.