Failure State Arbitration Lens / 失败态裁定 Lens

This lens observes whether 失败态裁定线 and 失败态裁定机制 correctly turn simultaneous failure-state collision into playable broadcast-reality arbitration.

The current mesh can already generate many local pressures: drift, insolvency, adverse coalition lock, stabilization liability, audience floor breach, route asset capture, legal exposure, sponsor/editor capture, and blackout pressure. This lens targets the next gap: when several failures are true at once, the game must not silently choose a hidden default. The player must see the rows, carry one failure, and inherit scars from the uncarried rows.

A pass cannot be achieved by adding a generic bad-ending card, a global crisis meter, a late-game phase, or a hidden priority table. It must show claim rows, target collision, carried failure, uncarried scars, assignable hearing, branch divergence, false-clean hardening, and future route mutation.

This lens observes:

It is observed through:

Observable promise

When two or more valid failure claims conflict over the same broadcast, aired version, route asset, proof, public receipt, person, facility room, archive copy, or schedule lane, the game must expose the collision and ask which failure becomes official. Every uncarried failure must remain as a scar with future consequences.

Must pass

1. Entry is state-triggered

Minimum evidence:

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: true

The lens fails if eligibility comes from a fixed turn number, day interval, chapter quota, content count, lens-health state, or generic late-game escalation.

2. At least two concrete failure rows exist

失败态裁定案卷 or equivalent must show at least two rows.

Each row must name:

failure_claim_row:
  row_id: <stable id>
  source_surface: <source storyline/mechanic/card/event>
  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: <relief>
  cost_if_selected: <cost>
  hardening_if_unselected: <scar>
  public_visibility: hidden | internal | docketed | public | broadcast
  proof_or_absence: <proof id or explicit_absence>

The lens fails if rows are only labels such as bad ending, fan anger, lawsuit, budget debt, or route blocked.

3. Rows conflict over the same target

Rows must collide over one target or one linked target family. Valid targets include:

  • broadcast slot;
  • aired version;
  • route asset;
  • proof object;
  • public receipt;
  • person, voice, or body;
  • facility room;
  • archive copy;
  • schedule lane;
  • memorial or custody object.

The lens fails if the implementation simply lists unrelated crises with no shared target or official failure slot.

4. The carried failure is named

失败优先听证 or equivalent must require a selected carried row.

Valid carried failures include:

  • legal failure;
  • public failure;
  • custody failure;
  • sponsor/contract/editor failure;
  • split public/lawful record;
  • frozen failure slot;
  • false-clean default.

The lens fails if the engine chooses the outcome through a hidden priority order or generic highest-counter rule without exposing the carried row.

5. Uncarried failures become scars

Every row not selected must receive a durable scar.

Valid scars include:

  • legal challenge pending;
  • public distrust pending;
  • sponsor retaliation armed;
  • route asset pressure up;
  • route asset captured or hostile;
  • source ambiguity;
  • correction slot required;
  • contradiction pending;
  • blackout pressure up;
  • recovery-only state;
  • appeal required;
  • public receipt correction required;
  • sponsor unwind required;
  • route asset rescue required.

The lens fails if unselected rows disappear, reset, or remain only as unobservable prose.

6. Hearing assignments are visible

Required assignment shape:

assignments:
  arbitration_docket: storyteller.card.failure_state_arbitration_docket.v1
  carried_failure_row: <row id>
  uncarried_failure_rows:
    - <row id>
  target: <target>
  handler_or_absence: <handler or explicit_absence>
  proof_or_absence: <proof or explicit_absence>
  cost_carrier_or_absence: <carrier or explicit_absence>
  selected_posture: <posture>

The lens fails if resolution is automatic, if handler/proof absence is hidden, or if the player can resolve with generic authority or money only.

7. Branches diverge

At least six branch families must be playable or explicitly blocked by state:

  • carry legal failure;
  • carry public failure;
  • carry custody failure;
  • convert to sponsor or private failure;
  • split public and lawful record;
  • freeze failure slot;
  • false-clean default.

Expected non-equivalence:

  • legal failure creates lawful-only, appeal, or inspection scar;
  • public failure creates public-only, public audit, fan/witness, or sponsor scar;
  • custody failure creates captured, hostile, sacrificed, or recovery-only asset state;
  • sponsor/private failure creates contract capture or clean-version seizure risk;
  • split record preserves contradiction and requires later conversion;
  • freeze blocks false-clean but raises schedule, blackout, audience, or recovery cost;
  • false-clean lets the strongest uncarried narrator harden reality.

8. Success has cost

Any non-default branch must include relief and cost. The player cannot dissolve all failures cleanly.

Valid costs include:

  • legal exposure;
  • inspection heat;
  • bureau favor debt;
  • public distrust;
  • audience instability;
  • sponsor stop-loss pressure;
  • contract capture;
  • artist trust loss;
  • fan oxygen liability;
  • witness exposure;
  • route asset capture;
  • route asset hostility;
  • source ambiguity;
  • correction slot required;
  • black-screen pressure;
  • future recovery cost.

9. False-clean default hardens

未承失败夺取现实 or equivalent must fire or be armed when the collision is hidden, under-specified, falsely resolved, or left without a carried failure.

The event must mutate at least one target into a state such as:

  • lawful_only_failure_record;
  • public_only_failure_record;
  • sponsor_only_failure_record;
  • editor_only_failure_record;
  • archive_captured_failure_record;
  • route_asset_hostile;
  • route_asset_captured;
  • blackout_fold;
  • contradiction_pending;
  • recovery_only_failure.

10. Future route effect changes

After arbitration, at least one later route, rite, assignment, accepted channel, recovery requirement, target state, or ending scar must change.

Accepted effects:

  • lawful-only route;
  • public-only route;
  • sponsor-only route;
  • split record;
  • correction slot required;
  • appeal required;
  • blackout recovery required;
  • public receipt correction required;
  • sponsor unwind required;
  • route asset rescue required;
  • captured route asset;
  • hostile route asset;
  • recovery-only failure;
  • future route costlier.

11. At least three deltas exist

Every resolved branch must mutate at least three counters or durable states.

Expected surfaces:

  • official_failure_slot;
  • failure_arbitration_pressure;
  • legal_exposure;
  • public_stability;
  • audience_stability;
  • route_asset_pressure;
  • broadcast_reality_drift;
  • continuity_hazard;
  • inspection_heat;
  • bureau_favor_debt;
  • sponsor_stop_loss_pressure;
  • contract_capture;
  • archive_debt;
  • public_receipt_legitimacy;
  • public_receipt_distrust;
  • fan_oxygen_resentment;
  • source_ambiguity;
  • black_screen_pressure;
  • future_recovery_cost.

12. Replay provenance is not trigger logic

Replay evidence may record session id, seed, source rows, and source session ids. Eligibility remains based on live failure rows, target collision, official slot unset, and uncarried hardening risk.

Branch assertions

selected_posture: carry_legal_failure
official_failure_slot_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_route_effect_any:
  - lawful_only
  - appeal_required
  - public_or_sponsor_scar_pending

Carry public failure

selected_posture: carry_public_failure
official_failure_slot_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
future_route_effect_any:
  - public_only
  - public_audit_required
  - lawful_challenge_pending

Carry custody failure

selected_posture: carry_custody_failure
official_failure_slot_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
future_route_effect_any:
  - route_asset_rescue_required
  - captured
  - hostile
  - recovery_only

Convert to sponsor failure

selected_posture: convert_to_sponsor_failure
official_failure_slot_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
future_route_effect_any:
  - sponsor_only
  - sponsor_unwind_required
  - public_or_legal_counterclaim_armed

Split public and lawful record

selected_posture: split_public_lawful_record
official_failure_slot_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
future_route_effect_any:
  - split_record
  - contradiction_pending
  - later_conversion_required

Freeze failure slot

selected_posture: freeze_failure_slot
official_failure_slot_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
future_route_effect_any:
  - quarantined
  - blackout_recovery_required
  - recovery_only

False-clean default

selected_posture: false_clean_default
official_failure_slot_after: failure_defaulted
emitted_event: storyteller.event.uncarried_failure_takes_reality.v1
default_narrator_any:
  - inspector
  - archive
  - sponsor
  - editor
  - fan_public
  - route_claimant
  - blackout_system
  - public_audience
target_state_after_any:
  - lawful_only_failure_record
  - public_only_failure_record
  - sponsor_only_failure_record
  - editor_only_failure_record
  - archive_captured_failure_record
  - route_asset_hostile
  - route_asset_captured
  - blackout_fold
  - contradiction_pending
  - recovery_only_failure
future_route_effect_any:
  - blocked
  - costlier
  - captured
  - hostile
  - recovery_only

Progress metric

failureStateArbitrationProgress = 0..10:

  • 0: no failure collision detected.
  • 1: at least two failure rows exist.
  • 2: rows conflict over the same target or target family.
  • 3: each row names claimant, demanded reality, selected relief/cost, and unselected hardening.
  • 4: arbitration docket is visible.
  • 5: hearing is assignable with carried row, uncarried rows, handler/proof/cost carrier or explicit absence.
  • 6: at least four branch families diverge.
  • 7: legal, public, custody, sponsor/private, split/freeze, and false-clean/default families are covered or explicitly blocked by state.
  • 8: uncarried failures persist as scars.
  • 9: false-clean default hardens a target through an event or equivalent state mutation.
  • 10: replay evidence includes seed/session id, source rows, assignments, branch result, counter deltas, uncarried scars, and future route effect.

Replay evidence shape

lens_id: storyteller.lens.failure_state_arbitration.v1
session_id: lens-storyteller-failure-state-arbitration-v1-<timestamp>
seed: <deterministic-seed>
source_inventory:
  target_id: <target>
  target_state_before: <state>
  official_failure_slot_before: slot_unset
  failure_claim_rows:
    - row_id: <row>
      source_surface: <surface>
      source_session_id: <source session or explicit absence>
      claimant: <claimant>
      failure_kind: <kind>
      demanded_reality: <text>
      relief_if_selected: <relief>
      cost_if_selected: <cost>
      hardening_if_unselected: <scar>
    - row_id: <row>
      source_surface: <surface>
      source_session_id: <source session or explicit absence>
      claimant: <claimant>
      failure_kind: <kind>
      demanded_reality: <text>
      relief_if_selected: <relief>
      cost_if_selected: <cost>
      hardening_if_unselected: <scar>
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
  no_fixed_turn_trigger: true
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>
assertions:
  - primary_links_exist
  - entry_state_driven
  - rows_conflict_over_same_target
  - carried_failure_named
  - uncarried_failures_preserved
  - branches_diverge
  - false_clean_default_hardens
  - future_route_effect_mutates

Non-goals

  • Not a fixed-turn late escalation.
  • Not an ending-only fork.
  • Not a generic failure dashboard.
  • Not a hidden priority order.
  • Not a raw count satisfaction lens.
  • Not a governance or process page.
  • Not a replacement for drift, insolvency, coalition, stabilization, audience, blackout, or route custody systems.
  • Not valid unless the carried failure, uncarried scars, default hardening, and future route effect are observable.