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: trueValid 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 | equivalentSplit 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 | equivalentSubstitute 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 | equivalentPublish 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 | equivalentProtect 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 | equivalentMerge 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: trueQuarantine 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 | equivalentDefault 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 | equivalentCounter 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_onePrimary counters and durable states:
callback_carrier_capacitycarrier_collision_pressuredeferred_callback_debtowed_reader_hostilitypublic_receipt_distrustfan_oxygen_resentmentaccess_caption_pressuresponsor_stop_loss_pressurecontract_capturelawful_annex_debtarchive_debtworker_safety_debtwitness_retaliation_riskhandler_burdenroute_asset_pressurebroadcast_reality_driftfuture_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_triggerNon-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.