Live Floor Egress Bottleneck / 直播现场通行瓶颈机制

Live Floor Egress Bottleneck turns live-floor movement into a finite production constraint.

The current corpus can already prove access, room occupancy, crew load, power priority, capacity service, access captions, fan oxygen, and route custody. This mechanism binds those surfaces into a missing physical question: when bodies, proof, queues, and route assets need the same passage at the same time, who actually moves first, and who becomes unsafe or deferred?

Its observed objects are 直播现场通行瓶颈账本, 直播现场通行分流, and 通行瓶颈默认.

Design promise

A door is not a clean route merely because it is open. A room is not reachable merely because it has capacity. Emergency power does not decide which body, queue, proof bundle, or route asset can pass through a one-way bottleneck.

Whenever a live-floor crisis creates incompatible movement flows, the mechanism must show:

  • a concrete egress node or passage;
  • a throughput or direction limit;
  • at least two flow claims;
  • support needs for safe or accessible movement;
  • protected and deferred flows;
  • authority, handler, support, receipt, and future reader;
  • a default narrator if the bottleneck is hidden.

State-triggered entry

Open this mechanism only when all are true:

entry_state_required:
  trigger_kind: state_pressure
  source_surface_any:
    - facility_access_lockdown
    - room_occupancy_claim_stack
    - live_floor_crew_load
    - emergency_power_priority
    - access_caption_class_action
    - capacity_notice_service_queue
    - broadcast_capacity_liability
    - fan_oxygen
    - route_asset_custody
    - broadcast_schedule
  egress_node_visible: true
  throughput_limit_visible: true
  flow_claims_min: 2
  protected_or_deferred_flow_can_change_future_state: true
  future_reader_present: true
  player_response_available: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_crowd_or_notice_count_trigger: true

The mechanism fails if entry comes from fixed turn count, fixed day/week interval, chapter quota, raw crowd count, raw notice count, dashboard state, lens health, or a generic evacuation mood.

Core object model

live_floor_egress_state:
  trigger_kind: state_pressure
  source_surface: <facility room power caption capacity fan_oxygen route_asset schedule or equivalent>
  egress_node:
    node_id: stage_threshold | service_corridor_chain | fan_oxygen_gate | ward_air_room | archive_counter_seven | sponsor_bridge_booth | white_glove_checkpoint | cutroom_blackbox | equivalent
    node_state_before: open | restricted | sealed | watched | crowded | underpowered | smoke_dark | caption_dark | one_way | sponsor_claimed | security_claimed | recovery_only | equivalent
    throughput_limit: one_group | one_body | wheelchair_line | oxygen_mask_queue | proof_bundle_only | two_escorts | no_reverse_flow | silence_limited | equivalent
    direction_pressure: outflow | inflow | reverse_flow | hold_position | split_flow | equivalent
  flow_claims:
    - flow_id: <id>
      claimant: fan_public | access_caption_reader | fan_oxygen_queue | protected_witness | performer | crew | archive | security | sponsor | inspector | route_asset | claimant_public | equivalent
      movement_need: evacuate | enter_claim_table | reach_air | leave_stage | return_to_board | escort_proof | move_route_asset | caption_guided_exit | equivalent
      support_need: powered_door | corridor_light | caption_notice | oxygen | escort | quiet | checksum | lawful_counter | public_marshal | explicit_absence | equivalent
      consequence_if_deferred: oxygen_debt | crowd_harm | access_violation | proof_contaminated | witness_exposed | route_blocked | crew_hazard | sponsor_capture | schedule_scar | recovery_only | equivalent
  default_narrator: security_grid | safety_marshal | sponsor_tunnel | fan_oxygen_queue | access_caption_reader | archive_runner | blackout_system | crowd_current | equivalent
  future_reader: fan_oxygen_audit | access_caption_class | facility_access_map | room_occupancy | live_floor_crew_load | route_asset | broadcast_capacity | public_table | lawful_reader | equivalent

Transition rules

1. Throughput must be named

A live-floor movement conflict cannot be resolved by saying evacuate, reroute, clear the hall, or use the service corridor. The node and throughput limit must be visible.

2. Protected and deferred flows must both survive

Every non-default result must name the protected flow and the deferred or blocked flow. If no competing flow exists, the row must use explicit_absence; if a competing flow exists, hiding it arms 通行瓶颈默认.

3. Accessibility and oxygen cannot be implied

If the protected or deferred flow includes access-caption readers, mobility-limited public, fan oxygen queue, ward air, or caption-guided exit, the support row must name caption notice, oxygen, powered door, corridor light, escort, marshal, or explicit absence.

4. Sponsor and security shortcuts attach capture

Sponsor tunnels, security grid priority, private bridge exits, sealed checkpoint shortcuts, or blackout evacuation are valid only if capture, public-only/lawful-only route state, receipt, or future review is recorded.

5. Broadcast continuity is allowed but never clean

The player may preserve live timing by holding a crowd, delaying a proof escort, narrowing a stage exit, or using a private tunnel. That success must create a public, access, oxygen, route asset, crew, or capacity scar.

6. Future readers consume egress scars

The resulting state must be readable by at least one existing surface:

Playable operations

直播现场通行分流 exposes these operations:

OperationImmediate reliefRequired scar
Accessible exit firstmobility/access-caption flow moves with guidanceschedule, sponsor, or camera flow is delayed
Safety marshal releasecrowd or oxygen queue moves in controlled releasebroadcast delay, inspection heat, or security cost
Proof or asset escortproof, witness, or route asset moves safelycrew, public, or stage return degrades
Stage withdrawalperformer/body leaves camera linepublic claimant or sponsor glamour route narrows
Reverse-flow holdincoming flow is stopped to protect one-way exitclaimant, crew, or sponsor hostility rises
Split flow with receiptmultiple flows move partiallyconfusion and future dispute remain receipted
Sponsor tunnel bargainprivate bypass openscapture, public distrust, or access violation attaches
Hide bottleneck/defaultfastest unobserved flow winsdefault narrator hardens future scar

Counter and state contract

Every branch must mutate at least one relief surface, one cost surface, and one future reader state.

Primary counters:

  • egress_harm_risk
  • crowd_pressure
  • access_caption_pressure
  • fan_oxygen_resentment
  • sponsor_stop_loss_pressure
  • security_heat
  • crew_hazard
  • schedule_pressure
  • public_safety_legitimacy
  • route_asset_pressure
  • proof_contamination_risk
  • handler_burden

Primary durable states:

  • live_floor_egress_ledger_open
  • egress_receipt_required
  • deferred_flow_hostile
  • accessible_exit_certified
  • accessible_exit_public_only
  • sponsor_tunnel_capture
  • corridor_one_way_scar
  • crowd_crush_review
  • proof_escort_costlier
  • stage_threshold_recovery_only
  • broadcast_capacity_scarred

Replay evidence shape

mechanic_id: storyteller.mechanic.live_floor_egress_bottleneck.v1
session_id: lens-live-floor-egress-bottleneck-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_surface: <source>
  egress_node_visible: true
  throughput_limit_visible: true
  flow_claims_min: 2
  future_reader_present: true
  no_fixed_turn_trigger: true
objects:
  card: storyteller.card.live_floor_egress_ledger.v1
  rite: storyteller.rite.live_floor_egress_routing.v1
branch_runs:
  resolved_branch:
    selected_response: accessible_exit_first | safety_marshal_release | proof_or_asset_escort | stage_withdrawal | reverse_flow_hold | split_flow_with_receipt | sponsor_tunnel_bargain
    protected_flow: <flow id>
    deferred_or_blocked_flow: <flow id>
    support_or_absence: <support>
    future_reader_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    event_seen_or_armed: storyteller.event.egress_bottleneck_default.v1
    default_narrator: <narrator>
    protected_flow_by_default: <flow id>
    harmed_or_deferred_flow: <flow id>
assertions:
  - entry_is_state_triggered
  - egress_node_and_throughput_visible
  - protected_and_deferred_flows_visible
  - support_receipt_and_future_reader_visible
  - branches_are_non_equivalent
  - no_universal_safe_exit
  - default_mutates_future_play
  - no_fixed_turn_day_week_or_raw_count_trigger

Non-goals

  • Not a decorative evacuation scene.
  • Not a generic crowd pressure counter.
  • Not a fixed emergency phase.
  • Not a replacement for facility access, room occupancy, emergency power, access caption, or fan oxygen.
  • Not valid unless movement flows, throughput, support, deferred cost, default narrator, deltas, and future reader are all observable.