Ending Scar Audit / 结局伤痕审计

Ending Scar Audit is the event emitted when terminal resolution tries to ignore a scar that is still durable in route, custody, liability, release, proxy, public proof, or broadcast reality state.

It is the late-game audit event for 结局伤痕账本 and 结局资格听证. It prevents the final screen from laundering earlier branch costs into a clean ending.

This event must not be a generic epilogue warning.

Event triggers

Trigger or record this event when any of the following are true:

  • an ending is selected while an Ending Scar Ledger row remains pending, contradiction_pending, false_owner, captured, or recovery_only;
  • 私有洁净收编 is proposed while public receipt, fan oath, artist refusal, witness copy, pirate relay, or black-box proof still contests exclusive truth;
  • 公开伤痕裁决 is proposed while sponsor, inspector, archive, or editor custody still has enforceable lawful or contractual capture;
  • 分裂托管正典 is proposed without two named copy carriers;
  • 仅可复原播出 is upgraded into clean closure without spending a new proof carrier and adding a new scar;
  • Black Box Opened exposes a source claimant that the proposed ending omitted;
  • a stabilization, release, proxy, or route-asset scar is still active but no terminal claimant is harmed by the chosen ending.

No trigger may be based on a fixed numbered turn.

Required event payload

event: storyteller.event.ending_scar_audit.v1
proposed_ending: public_scar_verdict | private_clean_capture | split_custody_canon | recovery_only_broadcast | black_box_opened | equivalent
ledger_row:
  scar_id: <stable id>
  source_storyline: stabilization_liability_handoff | clean_ending_seizure_cascade | recourse_collection_release | proxy_posture_chain | route_assets_and_custody | equivalent
  source_session_id: <session id if inherited>
  source_seed: <seed if inherited>
  source_row_id: <ticket, docket, receipt, proxy row, route asset, event, or proof object>
  scar_state_before: pending | clean_requested | underwritten | released_with_scar | public_only | lawful_only | split | captured | false_owner | recovery_only | contradiction_pending
audit_cause: unseated_scar | exclusive_truth_contradicted | public_verdict_overclaims | split_missing_copy | recovery_cleanwashed | black_box_omission | harmed_claimant_missing
claimant_calling: sponsor | inspector | archive | editor | fan_public | artist | witness | pirate | route_claimant | public_audience | black_box | schedule_board
claimant_omitted: sponsor | inspector | archive | editor | fan_public | artist | witness | pirate | route_claimant | public_audience | none
proof_carrier_before: public_receipt | legal_seal | edit_checksum | sponsor_contract | fan_oath | proxy_testimony | pirate_relay | route_asset | black_box | explicit_absence
ending_state_after: blocked | costlier | public_only | lawful_only | split | captured | recovery_only | contradiction_pending
route_effect_after: ending_blocked | ending_costlier | public_audit_required | split_canon | private_capture | recovery_only_terminal | contradiction_pending

The event is invalid if it only changes a popularity score, displays a final warning, or erases the proposed ending without naming the scar.

Outcome families

Outcome A — Block exclusive private truth

A private clean claimant tries to end the story while public proof still survives.

Expected deltas:

ending_state_after_any:
  - blocked
  - costlier
  - public_only
cost_any:
  - sponsor_stop_loss_pressure_up
  - inspection_heat_up
  - public_audit_required
route_effect_after_any:
  - private_clean_route_blocked
  - public_scar_verdict_required

Outcome B — Block over-clean public verdict

The public version tries to claim moral closure while lawful capture, release refusal, or private proof still binds the asset.

Expected deltas:

ending_state_after_any:
  - costlier
  - lawful_only
  - contradiction_pending
cost_any:
  - bureau_favor_debt_up
  - edit_debt_up
  - source_ambiguity_up
route_effect_after_any:
  - lawful_challenge_required
  - split_canon_required

Outcome C — Force split canon

Two copies survive, and either exclusive ending would lie.

Expected deltas:

ending_state_after: split
cost_any:
  - archive_debt_up
  - public_receipt_distrust_up
  - reality_drift_up
route_effect_after_any:
  - split_canon
  - contradiction_pending

Outcome D — Downgrade to recovery-only

A clean or exclusive ending is blocked because the scar can only be repaired, not resolved.

Expected deltas:

ending_state_after: recovery_only
cost_any:
  - recovery_cost_up
  - hostile_claimant_survives
  - route_blocked
  - black_screen_pressure_up
route_effect_after_any:
  - recovery_only_terminal
  - ending_costlier

Outcome E — Reopen black-box contradiction

Black-box proof exposes the causal structure or hidden claimant behind a proposed terminal version.

Expected deltas:

ending_state_after: contradiction_pending
cost_any:
  - source_ambiguity_up
  - archive_heat_up
  - public_contradiction_up
route_effect_after_any:
  - black_box_opened_possible
  - public_audit_required

Future play mutation

The event must mutate at least one durable surface:

  • an Ending Scar Ledger row;
  • ending eligibility;
  • proof carrier state;
  • route asset state;
  • public receipt legitimacy or distrust;
  • legal seal or edit checksum standing;
  • sponsor, inspector, archive, editor, fan, witness, artist, pirate, or proxy posture;
  • broadcast reality or black-box contradiction state.

Recovery hooks

Recovery is allowed, but never clean:

  • seat a new public proof carrier and accept audit;
  • spend legal seal and accept lawful-only route;
  • split copies and accept source ambiguity;
  • recover a route asset through release receipt or proxy rescue;
  • reopen black box and accept contradiction;
  • downgrade a clean ending into recovery-only terminal state.

Non-goals

  • Not a random ending penalty.
  • Not a final-score correction.
  • Not a fixed calendar or turn timer.
  • Not a generic morality judgment.
  • Not valid unless it names proposed ending, source scar, calling claimant, omitted claimant, proof carrier, ending state after, and route effect.