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: trueThe 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 | equivalentTransition 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:
- 设施通行图机制 reads one-way, watched, sealed, or captured passages;
- 房间占用认领栈机制 reads unreachable or recovery-only rooms;
- 直播现场班组负荷机制 reads crew return delay or hazard;
- 应急供电优先机制 reads powered-door, corridor-light, or blackout evacuation scars;
- 无障碍字幕集体机制 reads inaccessible or uncertified exit paths;
- 播出容量责任级联机制 reads dead-air, narrowed slot, or delayed live route;
- Fan Oxygen reads oxygen queue movement and public harm.
Playable operations
直播现场通行分流 exposes these operations:
| Operation | Immediate relief | Required scar |
|---|---|---|
| Accessible exit first | mobility/access-caption flow moves with guidance | schedule, sponsor, or camera flow is delayed |
| Safety marshal release | crowd or oxygen queue moves in controlled release | broadcast delay, inspection heat, or security cost |
| Proof or asset escort | proof, witness, or route asset moves safely | crew, public, or stage return degrades |
| Stage withdrawal | performer/body leaves camera line | public claimant or sponsor glamour route narrows |
| Reverse-flow hold | incoming flow is stopped to protect one-way exit | claimant, crew, or sponsor hostility rises |
| Split flow with receipt | multiple flows move partially | confusion and future dispute remain receipted |
| Sponsor tunnel bargain | private bypass opens | capture, public distrust, or access violation attaches |
| Hide bottleneck/default | fastest unobserved flow wins | default 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_riskcrowd_pressureaccess_caption_pressurefan_oxygen_resentmentsponsor_stop_loss_pressuresecurity_heatcrew_hazardschedule_pressurepublic_safety_legitimacyroute_asset_pressureproof_contamination_riskhandler_burden
Primary durable states:
live_floor_egress_ledger_openegress_receipt_requireddeferred_flow_hostileaccessible_exit_certifiedaccessible_exit_public_onlysponsor_tunnel_capturecorridor_one_way_scarcrowd_crush_reviewproof_escort_costlierstage_threshold_recovery_onlybroadcast_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_triggerNon-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.