Failure State Arbitration / 失败态裁定机制
Failure State Arbitration defines how Storyteller handles the collision of multiple live failure states when only one failure can become official broadcast reality without creating contradiction.
This mechanic exists because the current mesh is now good at generating durable scars: drift, insolvency, coalition lock, stabilization recall, audience floor breach, sponsor capture, legal exposure, route asset capture, and blackout pressure. The missing step is not another pressure source. It is a public, assignable arbitration rule for deciding which failure the production carries and what happens to the failures it refuses to carry.
Design gap covered
Without this mechanic, late pressure can silently collapse into a hidden priority order: legal beats public, sponsor beats editor, blackout beats route custody, or whichever event happened last wins. That undermines the game law that broadcast creates reality.
With this mechanic, failure is a contested object:
- at least two claimants say different failures are true;
- the producer chooses the carried failure;
- uncarried failures harden as scars, not erased flags;
- future route availability changes based on the chosen scar.
Entry state
Open arbitration only from live state pressure.
entry_state:
trigger_kind: state_pressure
failure_claim_rows_min: 2
rows_conflict_over_same_broadcast_or_route_asset: true
official_failure_slot_unset: true
each_row_has_claimant_and_target: true
at_least_one_uncarried_row_can_harden: true
no_fixed_turn_trigger: trueThe mechanic fails if arbitration opens from fixed turn count, day interval, chapter quota, global difficulty, raw content count, lens health, or generic late-game escalation.
Failure claim row
Each live failure row must be concrete:
failure_claim_row:
row_id: <stable id>
source_surface: broadcast_reality_drift | broadcast_insolvency | adverse_coalition_lock | stabilization_liability | audience_stability | route_asset_custody | blackout | equivalent
claimant: inspector | archive | sponsor | editor | fan_public | artist | witness | pirate | route_claimant | blackout_system | public_audience | split
failure_kind: legal_exposure | public_stability | route_asset_capture | insolvency_default | coalition_capture | stabilization_recall | blackout_fold | equivalent
target: <broadcast slot, aired version, route asset, proof object, public receipt, person, facility room, archive copy>
demanded_reality: <what becomes true if row narrates first>
relief_if_selected: <pressure reduced, proof preserved, or harmed claimant named>
cost_if_selected: <who/what pays>
hardening_if_unselected: <future scar>
public_visibility: hidden | internal | docketed | public | broadcast
proof_or_absence: <proof id or explicit_absence>
default_narrator_strength: <why this row can seize reality if uncarried>A row is invalid if it only stores a counter value, mood, generic bad ending, or hidden priority.
Failure slot states
| State | Meaning | Required consequence |
|---|---|---|
slot_unset | Multiple valid failures exist but no carried failure is named. | Offer docket/hearing or arm default. |
legal_failure_carried | Lawful exposure is official. | Legal route opens or appeal becomes required; public/private scars remain. |
public_failure_carried | Public breach or audience wound is official. | Public legitimacy may rise; sponsor/legal/route pressure increases. |
custody_failure_carried | Route asset capture, hostility, sacrifice, or recovery-only state is official. | Broadcast can remain legible; future route requires rescue or exchange. |
sponsor_failure_carried | Sponsor/contract/editor private capture absorbs the visible failure. | Slot pressure drops; public distrust and capture debt rise. |
split_record_carried | Public and lawful versions remain separate. | Contradiction is preserved as future playable pressure. |
failure_slot_frozen | No claimant narrates yet. | False-clean blocked; schedule, blackout, audience, or recovery cost rises. |
failure_defaulted | The strongest uncarried narrator takes reality. | Event hardens the target and future route effect worsens. |
recovery_only_failure | A failure can be repaired only through scarred recovery. | Later rite must pay public, legal, sponsor, custody, or blackout cost. |
Arbitration postures
Carry legal failure
Use when legal exposure is less damaging than letting private capture, public drift, or custody fraud decide reality.
Expected deltas:
selected_posture: carry_legal_failure
slot_state_after: legal_failure_carried
relief_any: [public_stability_preserved, route_asset_not_privately_captured, sponsor_clean_capture_blocked]
cost_any: [legal_exposure_up, inspection_heat_up, lawful_only_route, bureau_favor_debt_up, future_appeal_required]
uncarried_scar_any: [public_distrust_pending, sponsor_retaliation_armed, route_recovery_cost_up]Carry public failure
Use when public receipt, fan oxygen debt, pirate witness, or audience contradiction must become official before private or lawful actors flatten it.
Expected deltas:
selected_posture: carry_public_failure
slot_state_after: public_failure_carried
relief_any: [private_capture_blocked, public_receipt_legitimacy_up, audience_reason_preserved]
cost_any: [sponsor_stop_loss_pressure_up, legal_exposure_up, witness_exposure_up, fan_oxygen_liability_up]
uncarried_scar_any: [lawful_challenge_pending, route_asset_pressure_up]Carry custody failure
Use when a route asset, proof, person, voice, archive copy, facility room, or edit source must be admitted as captured, hostile, sacrificed, or recovery-only.
Expected deltas:
selected_posture: carry_custody_failure
slot_state_after: custody_failure_carried
relief_any: [broadcast_legibility_kept, legal_chain_not_falsified, public_panic_reduced]
cost_any: [route_asset_captured_or_hostile, future_recovery_cost_up, handler_or_witness_loss_up]
uncarried_scar_any: [public_receipt_distrust_pending, sponsor_or_archive_claim_hardened]Convert to sponsor failure
Use when sponsor bridge, contract capture, clean copy, or private editor custody keeps the immediate broadcast alive.
Expected deltas:
selected_posture: convert_to_sponsor_failure
slot_state_after: sponsor_failure_carried
relief_any: [slot_survives, budget_or_schedule_pressure_down, lawful_failure_delayed]
cost_any: [contract_capture_up, public_receipt_distrust_up, artist_trust_down, clean_version_seizure_risk_up]
uncarried_scar_any: [public_counterclaim_armed, legal_counterclaim_armed]Split public and lawful record
Use when contradiction is better than capture. The mechanic preserves two records and requires later correction, audit, or route-specific conversion.
Expected deltas:
selected_posture: split_public_lawful_record
slot_state_after: split_record_carried
relief_any: [immediate_capture_blocked, proof_not_destroyed, public_and_lawful_versions_inspectable]
cost_any: [broadcast_reality_drift_up, correction_slot_required, source_ambiguity_up]
uncarried_scar_any: [future_contradiction_pending]Freeze failure slot
Use when no claimant should be allowed to narrate yet. The cost is silence, blackout risk, schedule scar, audience damage, or recovery-only status.
Expected deltas:
selected_posture: freeze_failure_slot
slot_state_after: failure_slot_frozen
relief_any: [false_clean_blocked, strongest_claimant_delayed, proof_preserved]
cost_any: [black_screen_pressure_up, schedule_scar_up, audience_stability_down, future_recovery_cost_up]
uncarried_scar_any: [all_rows_pending]False-clean default
Use only as a failure branch. If the production hides or under-specifies the collision, 未承失败夺取现实 fires or is armed.
Expected deltas:
selected_posture: false_clean_default
slot_state_after: failure_defaulted
emitted_event: storyteller.event.uncarried_failure_takes_reality.v1
relief_any: [temporary_silence_or_false_clean]
cost_any: [default_narrator_takes_reality, future_route_effect_worsens, recovery_only_or_capture_armed]Counter contract
Every valid resolution must mutate at least three counters or durable states. At least one delta must be relief and at least one must be cost, except default where the cost may dominate.
Expected surfaces:
official_failure_slotfailure_arbitration_pressurelegal_exposurepublic_stabilityaudience_stabilityroute_asset_pressurebroadcast_reality_driftcontinuity_hazardinspection_heatbureau_favor_debtsponsor_stop_loss_pressurecontract_capturearchive_debtpublic_receipt_legitimacypublic_receipt_distrustfan_oxygen_resentmentsource_ambiguityblack_screen_pressurefuture_recovery_cost
Relationship to nearby systems
This mechanic does not replace the systems that generate failures.
- Broadcast reality drift decides how contradictory realities are audited.
- Broadcast insolvency decides how unpaid relief defaults.
- Adverse coalition lock decides how hostile factions coordinate around a target.
- Stabilization liability decides who carries the cost of a successful stabilization.
- Route asset custody decides who controls people, proofs, voices, receipts, rooms, and archive copies.
- Audience stability decides whether the public can keep watching.
Failure State Arbitration begins after at least two of those surfaces are simultaneously valid and conflicting.
Replay evidence shape
mechanic_id: storyteller.mechanic.failure_state_arbitration.v1
session_id: lens-storyteller-failure-state-arbitration-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
failure_claim_rows_min: 2
rows_conflict_over_same_broadcast_or_route_asset: true
official_failure_slot_unset: true
no_fixed_turn_trigger: true
source_rows:
- row_id: <row>
source_surface: <surface>
claimant: <claimant>
failure_kind: <kind>
target: <target>
demanded_reality: <text>
hardening_if_unselected: <state>
- row_id: <row>
source_surface: <surface>
claimant: <claimant>
failure_kind: <kind>
target: <target>
demanded_reality: <text>
hardening_if_unselected: <state>
offered_choices:
- storyteller.card.failure_state_arbitration_docket.v1
- storyteller.rite.failure_priority_hearing.v1
- carry_legal_failure
- carry_public_failure
- carry_custody_failure
- convert_to_sponsor_failure
- split_public_lawful_record
- freeze_failure_slot
- false_clean_default
branch_result:
selected_posture: <posture>
carried_failure_row: <row id>
uncarried_failure_rows:
- row_id: <row id>
scar_after: <scar>
official_failure_slot_after: <slot state>
target_state_after: <state>
emitted_event: storyteller.event.uncarried_failure_takes_reality.v1 | none
future_route_effect: <effect>
counter_deltas:
relief:
- <relief>
cost:
- <cost>Failure cases
The mechanic fails if any of these are true:
- arbitration is triggered by a fixed turn or chapter gate;
- there is only one failure row;
- rows do not name claimant, target, demanded reality, selected relief, selected cost, and unselected hardening;
- the player cannot choose which failure to carry;
- uncarried rows disappear;
- legal/public/custody/sponsor/freeze/default branches produce equivalent state;
- default hardening is flavor-only;
- future route availability, cost, accepted channel, target custody, or recovery requirement does not change.
Non-goals
- Not a universal endgame controller.
- Not a hidden priority table.
- Not a generic dashboard.
- Not a finance mechanism.
- Not a fixed-turn escalation.
- Not a bulk content target.
- Not a clean way to launder earlier failure states.