Callback Carrier Collision / 回叫承载撞车机制

Callback Carrier Collision is a pressure mechanic for situations where multiple valid callback, indemnity, notice, oxygen, access-caption, recovery, delegate, or route-asset rows attempt to use one carrier as if that carrier were unlimited.

This mechanic deliberately sits between existing surfaces. 救济回叫义务线 creates the owed callback. 回叫消费证明线 prevents later readers from laundering relief. 复原追偿搁架线 names recourse holders. 处理人负荷账本 prices repeated use of people. This mechanic catches the narrower failure where a carrier, proof window, delegate, worker, or route asset is shared by several rows and no row explicitly loses service.

Mechanic promise

A passing implementation proves that:

  • entry is state-triggered by actual row collision, not turn count or raw count;
  • each source row names owed reader, delayed obligation, minimum service surface, and future consumer;
  • the contested carrier is visible or explicitly absent;
  • a chosen resolution sequences, splits, substitutes, publishes, protects refusal, merges with named harm, quarantines, or defaults;
  • unresolved rows remain visible;
  • the result mutates future playable acceptance.

State-triggered entry

entry_state_required:
  trigger_kind: state_pressure
  source_rows_min: 2
  source_rows_have_owed_readers: true
  source_rows_have_delayed_obligations: true
  source_rows_have_minimum_service_surfaces: true
  contested_carrier_visible_or_explicit_absence: true
  collision_kind_visible: true
  false_clean_claim_if_unresolved_visible: true
  future_reader_or_route_consumes_result: true
  player_can_sequence_split_substitute_publish_protect_merge_quarantine_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_callback_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

Valid collision sources include:

  • a 救济回叫案卷 and a 回叫消费案卷 targeting the same carrier;
  • a 复原追偿搁架 and a recovery counterstub row targeting the same worker, proof window, or archive copy;
  • an oxygen clawback stay and access-caption class settlement targeting the same public delegate or bulletin carrier;
  • a fan delegate mandate and public correction/caption class using the same representative as if all publics agreed;
  • a handler burden row proving the named carrier is already strained, captured, protected, refusing, or unavailable.

Data model

callback_carrier_collision_state:
  source_rows:
    min: 2
    fields_required:
      - row_id
      - source_surface
      - owed_reader
      - delayed_obligation
      - minimum_service_surface
      - future_consumer
  carrier:
    id: <carrier id or explicit_absence>
    kind: named_character | worker | delegate | desk | proof_window | route_asset | archive_copy | producer_license | explicit_absence | equivalent
    state_before: free | already_assigned | strained | captured | protected | hostile | absent | quarantined | explicit_absence | equivalent
    capacity_basis: exclusive_attention | legal_signature | witness_safety | proof_window | oxygen_reserve | recovery_stub | public_mandate | schedule_capacity | equivalent
  collision:
    kind: same_carrier_multiple_callbacks | same_proof_window_multiple_readers | same_worker_multiple_recourses | same_delegate_multiple_mandates | same_route_asset_multiple_returns | equivalent
    false_clean_claim_if_unresolved: <claim>
    default_narrator_if_unresolved: <actor>
  result:
    selected_posture: sequence_service | split_carrier | substitute_carrier | publish_queue | protect_refusal | merge_with_named_harm | quarantine_collision | default_overwrite
    carrier_state_after: <state>
    source_row_states_after: []
    future_reader_or_route_effect: <effect>

Branch resolution rules

Sequence service

One row is served first. Every other row receives an explicit deferred state, future reader, and cost.

Required after-state:

sequence_service_required:
  primary_row_served: <row id>
  deferred_rows_after:
    - row_id: <row id>
      state: deferred | callback_required | costlier | hostile | equivalent
  carrier_state_after: assigned | strained | protected | equivalent
  future_effect: callback_required | costlier | split_required | equivalent

Split carrier

The carrier may serve multiple rows only under scoped roles.

Required after-state:

split_carrier_required:
  carrier_scopes:
    - row_id: <row id>
      scope: public_only | lawful_only | sponsor_only | archive_only | worker_protection_only | route_asset_only | equivalent
  universal_clean_service_forbidden: true
  future_effect: split_required | public_only | lawful_only | sponsor_only | equivalent

Substitute carrier

One row is moved away from the contested carrier with cost.

Required after-state:

substitute_carrier_required:
  original_carrier_state_after: protected | assigned | strained | equivalent
  substitute_carrier: <carrier or explicit_absence>
  substitute_cost_visible: true
  substituted_row_future_effect: callback_required | costlier | carrier_substitution_scar | equivalent

Publish queue

The collision becomes public, lawful, archive, fan, or route-visible queue state.

Required after-state:

publish_queue_required:
  service_order_visible: true
  excluded_or_deferred_readers_visible: true
  future_effect: public_bulletin_required | contradiction_pending | public_only | equivalent

Protect refusal

The carrier may refuse service, and that refusal becomes a route object.

Required after-state:

protect_refusal_required:
  refusal_carrier: <carrier>
  protected_refusal_receipt: true
  unserved_rows_visible: true
  future_effect: protected_refusal_required | blocked | costlier | equivalent

Merge with named harm

Rows can merge only if the harmed reader and lost independent service are named.

Required after-state:

merge_with_named_harm_required:
  merged_rows: []
  harmed_reader: <reader>
  lost_independent_service: <service>
  future_effect: hostile | recovery_only | contradiction_pending | equivalent
  universal_clean_merge_forbidden: true

Quarantine collision

The carrier cannot be used until collision safety is restored.

Required after-state:

quarantine_collision_required:
  carrier_state_after: quarantined | protected | absent | equivalent
  blocked_rows_visible: true
  future_effect: blocked | recovery_only | quarantine_required | equivalent

Default overwrite

The default fires or arms 回叫承载覆盖默认.

Required after-state:

default_overwrite_required:
  event_seen_or_armed: storyteller.event.callback_carrier_overwrite_default.v1
  false_clean_claim: <claim>
  default_narrator: <actor>
  unresolved_rows: []
  carrier_state_after: captured | hostile | absent | overdrawn | quarantined | false_clean | recovery_only | equivalent
  future_effect: false_clean_carrier | sponsor_only | public_only | lawful_only | blocked | hostile | recovery_only | equivalent

Counter contract

Every resolved branch must mutate at least three surfaces:

counter_deltas_required:
  relief: at_least_one
  cost: at_least_one
  future_reader_or_route_effect: at_least_one

Primary counters and durable states:

  • callback_carrier_capacity
  • carrier_collision_pressure
  • deferred_callback_debt
  • owed_reader_hostility
  • public_receipt_distrust
  • fan_oxygen_resentment
  • access_caption_pressure
  • sponsor_stop_loss_pressure
  • contract_capture
  • lawful_annex_debt
  • archive_debt
  • worker_safety_debt
  • witness_retaliation_risk
  • handler_burden
  • route_asset_pressure
  • broadcast_reality_drift
  • future_route_cost

Replay evidence expectation

mechanic_id: storyteller.mechanic.callback_carrier_collision.v1
session_id: lens-callback-carrier-collision-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_rows_min: 2
  source_rows_have_owed_readers: true
  contested_carrier_visible_or_explicit_absence: true
  future_reader_or_route_consumes_result: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.callback_carrier_collision_docket.v1
  rite: storyteller.rite.callback_carrier_arbitration.v1
branch_runs:
  valid_branch:
    selected_posture: sequence_service | split_carrier | substitute_carrier | publish_queue | protect_refusal | merge_with_named_harm | quarantine_collision
    carrier_state_after: <state>
    source_row_states_after: []
    future_reader_or_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    event_seen_or_armed: storyteller.event.callback_carrier_overwrite_default.v1
    false_clean_claim: <claim>
    default_narrator: <actor>
    unresolved_rows: []
    future_reader_or_route_effect: <effect>
assertions:
  - entry_is_state_triggered
  - multiple_rows_contest_one_carrier
  - owed_readers_and_delayed_obligations_visible
  - carrier_state_visible_or_explicit_absence
  - unresolved_rows_remain_visible
  - branch_outcomes_diverge
  - success_has_relief_cost_and_future_effect
  - default_is_durable
  - no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger

Non-goals

  • Not a global stamina meter.
  • Not generic governance.
  • Not a raw row-count trigger.
  • Not a duplicate of handler burden; this observes contested obligation service, not personal rest.
  • Not a duplicate of callback consumption; this observes a carrier collision before or during consumption.
  • Not valid unless at least one future reader or route consumes the collision result.