Schedule Preemption Claims / 档期抢占认领机制
Schedule Preemption Claims is the management mechanism for deciding which playable object is allowed onto the licensed broadcast schedule when multiple live claims cannot all appear on the same surface.
It exists because Storyteller’s core rule is not merely that schedule is scarce. A thing that receives the slot becomes broadcast reality. A thing pushed off-slot becomes missable, hostile, pirate-visible, lawful-only, recovery-only, or folded into blackout debt unless the player records the displacement.
Distinction from adjacent mechanisms
- 制作分诊台机制 asks which crisis receives finite operational staffing. This mechanism asks which crisis receives the reality-making slot.
- 直播现场班组负荷机制 asks whether the floor can safely carry a slot. This mechanism asks what the slot is allowed to carry.
- 更正档期竞拍机制 handles public correction after a version exists. This mechanism handles preemption before or during live assignment, when encounter availability itself is at stake.
Entry state
Open or update this mechanism when all of the following are true:
entry_state:
trigger_kind: state_pressure
competing_slot_claims_min: 2
finite_schedule_surface_present: true
at_least_one_claim_changes_encounter_or_route_availability: true
legal_or_broadcast_authority_contested_or_explicitly_absent: true
displaced_claim_can_default: true
future_reader_consumes_preemption_result: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_count_trigger: trueValid finite schedule surfaces include live slot, rehearsal slot, licensed apology surface, public testimony window, legal airing window, route-asset debut, emergency delay slot, counterbroadcast aperture, black-screen containment window, or equivalent.
Primary objects
| Object | Meaning | Required observable fields |
|---|---|---|
preemption_docket | the visible set of claims seeking the same schedule surface | slot id, capacity, authority, claims, displacement risk |
slot_claim | a character, proof, route asset, faction demand, or public claim asking to appear | claimant, requested surface, proof/license, if-on-slot result, if-off-slot default |
slot_authority | who can certify or seize the slot | producer license, schedule contract, inspector stamp, sponsor letter, archive receipt, pirate aperture, explicit absence |
displacement_receipt | the record that a losing claim was delayed, narrowed, split, or refused | reason, future reader, recovery cost, hostile risk |
encounter_availability_state | the route/character state after slot decision | available, delayed, narrowed, missed, hostile, lawful-only, public-only, pirate-only, recovery-only, blackout-folded |
A valid implementation must expose at least two slot_claim rows or one row plus a named live object that will be displaced.
Slot claim fields
slot_claim:
claim_id: <stable id>
claimant_surface: artist | fan_public | sponsor | inspector | archive | editor | pirate | witness | route_asset | production_desk | equivalent
requested_surface: live_slot | rehearsal_slot | legal_airing | public_testimony | route_debut | emergency_delay | counterbroadcast | blackout_containment | equivalent
proof_or_authority: producer_license | schedule_contract | mirror_right | archive_receipt | fan_mandate | sponsor_letter | inspector_stamp | pirate_packet | explicit_absence
requested_encounter_or_route: <card_or_rite_or_route_asset_or_explicit_absence>
if_on_slot: unlock | stabilize | recruit_window | lawful_use | public_use | sponsor_relief | drift_down | equivalent
if_off_slot: miss | hostile | delayed_with_receipt | lawful_only | public_only | pirate_only | blackout_folded | recovery_only | equivalent
future_reader: <stable reader or route id>State machine
| State | Meaning | Required consequence |
|---|---|---|
collision_open | at least two claims compete for the same schedule surface | player can award, split, defer, sell, counterbroadcast, or default |
official_slot_awarded | one claim receives the licensed slot | one or more displaced claims mutate visibly |
split_surface | the player divides public, lawful, sponsor, edit, or pirate surfaces | each side receives narrower availability and durable ambiguity |
lawful_deferral | a claim is delayed with inspector/archive receipt | immediate slot pressure falls while lawful-only or bureau debt rises |
sponsor_preempted | sponsor/management buys or seizes the slot | stop-loss pressure falls while capture and public distrust rise |
pirate_aperture_open | off-slot claim reaches audience through pirate/counterbroadcast surface | private capture drops while relay risk and inspection heat rise |
off_slot_hostile | displaced claim receives no acceptable receipt | future encounter becomes hostile, missed, or costlier |
blackout_folded | schedule cannot legally or safely carry any claim | black-screen debt occupies capacity and reality drift rises |
recovery_only_window | ordinary encounter availability is lost but scarred recovery remains | future recovery must cite the displaced claim and pay cost |
Branch contract
Every branch must mutate at least three durable states. At least one must be relief and at least one must be cost. At least one must affect a future encounter, route asset, legal reader, archive reader, or broadcast-reality state.
Branch A — Award official slot
The player gives the schedule surface to one claim with a valid authority.
Expected outcome:
branch: award_official_slot
relief_any: [selected_route_unlocked, encounter_available, lawful_use_unlocked, broadcast_reality_stabilized]
cost_any: [off_slot_debt_up, displaced_claim_hostility_up, sponsor_or_inspection_pressure_up, route_asset_narrowness_up]
future_effect_any: [selected_available_with_cost, displaced_delayed_with_receipt, displaced_hostile, displaced_recovery_only]Branch B — Split the surface
The player separates public, lawful, sponsor-safe, edited, or pirate parts of the slot.
Expected outcome:
branch: split_surface
relief_any: [multiple_claims_partially_available, public_capture_blocked, legal_continuity_preserved]
cost_any: [source_ambiguity_up, schedule_pressure_up, audience_confusion_up, archive_review_required]
future_effect_any: [public_only, lawful_only, sponsor_only, contradiction_pending]Branch C — Lawful deferral with receipt
The player delays a claim through inspector/archive/legal authority and records why it did not appear.
Expected outcome:
branch: lawful_deferral_with_receipt
relief_any: [slot_collision_down, legal_breach_down, selected_slot_cleaner]
cost_any: [bureau_favor_debt_up, public_distrust_up, missed_encounter_pressure_up]
future_effect_any: [delayed_with_receipt, lawful_only, audit_required, route_costlier]Branch D — Sponsor or management preemption
The player lets sponsor, management, or contract pressure take the slot.
Expected outcome:
branch: sponsor_or_management_preemption
relief_any: [sponsor_stop_loss_pressure_down, immediate_slot_pressure_down, budget_strain_down]
cost_any: [contract_capture_up, public_receipt_distrust_up, fan_oxygen_resentment_up, artist_boundary_pressure_up]
future_effect_any: [sponsor_route_unlocked_with_capture, public_route_blocked_or_costlier, hostile_delegate_or_artist]Branch E — Pirate or public off-slot breach
The displaced claim finds an off-network public aperture.
Expected outcome:
branch: pirate_or_public_off_slot_breach
relief_any: [private_capture_down, hidden_claim_visible, public_receipt_legitimacy_up]
cost_any: [inspection_heat_up, relay_custody_risk_up, black_screen_pressure_up, sponsor_retaliation_up]
future_effect_any: [public_only, pirate_only, lawful_appeal_required, counterbroadcast_chain_open]Branch F — Let blackout or default choose
The player hides the collision, leaves no authority, or cannot record displacement.
Expected outcome:
branch: blackout_or_default_selects
emitted_or_armed_event: storyteller.event.off_slot_encounter_default.v1
cost_any: [black_screen_slots_up, reality_drift_up, missed_encounter_pressure_up, off_slot_debt_up]
future_effect_any: [missed, hostile, blackout_folded, recovery_only]Counter and state contract
Primary counters and durable states:
schedule_preemption_pressurelive_slot_claim_strengthslot_legalityslot_authority_clarityencounter_availabilityoff_slot_debtdisplacement_receipt_legitimacymissed_encounter_pressurehostile_recruit_pressurerecovery_only_windowsponsor_stop_loss_pressurecontract_captureinspection_heatbureau_favor_debtfan_oxygen_resentmentpublic_receipt_distrustarchive_signature_legitimacyroute_asset_custodybroadcast_reality_driftblack_screen_slotsrelay_custody_risk
Replay evidence contract
mechanic: storyteller.mechanic.schedule_preemption_claims.v1
session_id: lens-storyteller-schedule-preemption-claims-v1-<timestamp>
seed: <deterministic seed>
entry_state:
trigger_kind: state_pressure
slot_surface: <surface id>
competing_slot_claims_min: 2
finite_schedule_surface_present: true
authority_present_or_explicit_absence: true
displaced_claim_can_default: true
no_fixed_turn_trigger: true
docket:
claims_before:
- claim_id: <claim a>
claimant_surface: <surface>
proof_or_authority: <proof or explicit_absence>
requested_encounter_or_route: <id>
if_on_slot: <effect>
if_off_slot: <effect>
- claim_id: <claim b>
claimant_surface: <surface>
proof_or_authority: <proof or explicit_absence>
requested_encounter_or_route: <id>
if_on_slot: <effect>
if_off_slot: <effect>
resolution:
selected_branch: award_official_slot | split_surface | lawful_deferral_with_receipt | sponsor_or_management_preemption | pirate_or_public_off_slot_breach | blackout_or_default_selects
awarded_claim_or_absence: <claim id or explicit_absence>
displaced_claims_after: {}
encounter_availability_after: {}
event_seen_or_armed: storyteller.event.off_slot_encounter_default.v1 | none
counter_deltas:
relief: []
cost: []Non-goals
- Not a fixed turn, fixed day, or calendar timer.
- Not a generic action-point or priority queue.
- Not another correction slot after a public version has already settled.
- Not a crew-count or call-sheet coverage check.
- Not valid if every losing claim simply waits unchanged.
- Not valid if official broadcast solves public, lawful, sponsor, archive, fan, and route availability for free.