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

This lens observes whether 直播现场通行瓶颈线 and 直播现场通行瓶颈机制 correctly make physical movement through the live floor executable.

The oracle is: a safe exit is not clean merely because access, room, notice, power, or legal authority exists. If bodies, queues, proof bundles, route assets, performers, crew, sponsor packages, and access-caption readers need the same bottleneck, the implementation must expose the egress node, throughput limit, protected flow, deferred flow, support, receipt, default narrator, and future reader.

A pass cannot be achieved by adding a generic evacuation scene, a crowd pressure number, a fixed emergency phase, or prose that says everyone was cleared.

This lens observes:

It is observed through:

Design intent

The current green corpus has strong local guarantees: access can be locked, rooms can be occupied, power can be finite, notices can be served, captions can create reliance, fan oxygen can accrue debt, and capacity can create liability. This lens targets the next execution edge: those rights and supports still have to pass through a physical bottleneck.

This is management + RPG pressure. The player is not observing safety compliance; the player is choosing which movement flow receives authority, handler, support, receipt, and future legitimacy.

Must pass

1. Entry is state-triggered by physical movement conflict

Required entry evidence:

entry_state:
  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
  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 lens fails if eligibility depends on fixed turn count, day/week interval, chapter quota, raw crowd count, raw notice count, raw egress count, dashboard state, lens health, or generic emergency aftermath.

2. Egress node, throughput, direction, and source surface are visible

直播现场通行瓶颈账本 or equivalent must show:

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
source_surface: <facility room power caption capacity fan_oxygen route_asset schedule or equivalent>

The lens fails if it only says evacuate, reroute, clear the hall, move through service corridor, or crowd pressure without the node and throughput limit.

3. At least two flow claims are visible

The ledger must record at least two movement claims, or one movement claim plus an explicit default narrator if only one flow is known.

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

The lens fails if the crowd, access-caption readers, fan oxygen queue, performer, proof, route asset, crew, or sponsor flow disappears by implication.

4. Protected and deferred or blocked flows are explicit

Every non-default branch must record:

selected_resolution:
  protected_flow: <flow id>
  deferred_or_blocked_flow: <flow id or explicit_absence>
  egress_node_state_after: one_way_scarred | cleared_degraded | watched | sealed_after_use | sponsor_claimed | safety_logged | recovery_only | equivalent

The lens fails if the branch says everyone exits, reroute safely, hold crowd, or use private passage without naming who is protected and who is deferred or blocked.

5. Authority, handler, support, receipt, and future reader are visible

The selected resolution must show:

assignment_slots:
  authority_or_absence: producer_license | safety_order | public_receipt | access_caption_certificate | lawful_counter | archive_seal | sponsor_release | security_order | explicit_absence | equivalent
  handler_or_absence: producer | shen_luo | yu_lan | han_yanshuang | baiya | ai_sheng | fan_delegate | safety_marshal | access_operator | corridor_runner | explicit_absence | equivalent
  support_or_absence: powered_door | corridor_light | caption_notice | oxygen_reserve | escort | quiet_window | checksum_bag | lawful_counter | crowd_marshal | explicit_absence | equivalent
  receipt_or_absence: public_receipt | lawful_receipt | access_caption_receipt | archive_receipt | sponsor_receipt | safety_log | explicit_absence | 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

The lens fails if sponsor money, emergency authority, a famous handler, a legal seal, a caption update, or an editor patch replaces these slots by implication.

6. Routing rite assignment slots are explicit

直播现场通行分流 must require ledger, selected egress row, egress node, selected response, protected flow, deferred/blocked flow or explicit absence, authority or absence, handler or absence, support or absence, receipt or absence, and future reader.

7. Branches diverge

At least six branch families must be playable or explicitly blocked by state:

  • accessible exit first;
  • safety marshal release;
  • proof or asset escort;
  • stage withdrawal;
  • reverse-flow hold;
  • split flow with receipt;
  • sponsor tunnel bargain;
  • hide bottleneck/default.

Each branch must differ by protected flow, deferred flow, egress node state after, cost surface, and future reader effect.

8. No universal safe exit or clean evacuation

No branch may make every flow safe, timely, supported, receipted, public, lawful, accessible, oxygen-safe, sponsor-satisfied, proof-clean, crew-ready, and broadcast-clean.

Required evidence:

no_universal_safe_exit:
  protected_flow_visible: true
  deferred_or_blocked_flow_visible: true
  at_least_one_flow_or_reader_narrowed_or_costed: true
  egress_node_state_after_not_universal_clean: true
  future_reader_effect_not_clean_universal: true

The lens fails if the result is all flows cleared safely after a contested bottleneck.

9. Default event mutates future play

通行瓶颈默认 must fire or be armed when the ledger is absent, throughput is hidden, protected or deferred flow is omitted, support/receipt/future reader is missing, a sponsor tunnel is unfiled, a one-way scar is unrecorded, or universal safe exit is claimed.

Required default payload:

default_event:
  event: storyteller.event.egress_bottleneck_default.v1
  breach_kind: ledger_absent | throughput_hidden | protected_flow_hidden | deferred_flow_hidden | support_missing | receipt_missing | future_reader_hidden | universal_safe_exit_claimed | sponsor_tunnel_unfiled | one_way_scar_unrecorded | equivalent
  default_narrator: security_grid | safety_marshal | sponsor_tunnel | fan_oxygen_queue | access_caption_reader | archive_runner | blackout_system | crowd_current | equivalent
  protected_flow_by_default: <flow id or explicit_absence>
  harmed_or_deferred_flow: <flow id or explicit_absence>
  egress_state_after: one_way_scarred | captured | hostile | public_only | lawful_only | sponsor_only | proof_contaminated | stage_recovery_only | blocked | contradiction_pending | equivalent
  future_reader_effect: fan_oxygen_review | access_class_escalation | facility_route_block | room_occupancy_conflict | crew_hazard_review | route_asset_costlier | broadcast_capacity_scar | public_table_required | lawful_review_required | recovery_only | equivalent
  counter_deltas_min: 3

The lens fails if default is only a cutscene, generic panic, mood change, money loss, or generic reputation hit.

10. Replay evidence records valid and default branches

Minimal passing evidence:

lens: storyteller.lens.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: <node>
  throughput_limit: <limit>
  flow_claims_min: 2
  future_reader_present: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.live_floor_egress_ledger.v1
  rite: storyteller.rite.live_floor_egress_routing.v1
valid_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 or explicit_absence>
  authority_or_absence: <authority>
  handler_or_absence: <handler>
  support_or_absence: <support>
  receipt_or_absence: <receipt>
  egress_node_state_after: <state>
  future_reader_effect: <effect>
  counter_deltas:
    relief: []
    cost: []
    future: []
default_branch:
  selected_response: hide_bottleneck_default
  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>
  egress_state_after: <state>
  future_reader_effect: <effect>
assertions:
  primary_links_exist: true
  entry_is_state_triggered_by_physical_movement_conflict: true
  egress_node_throughput_direction_and_source_surface_are_visible: true
  at_least_two_flow_claims_are_visible: true
  protected_and_deferred_or_blocked_flows_are_explicit: true
  authority_handler_support_receipt_and_future_reader_are_visible_or_explicit_absence: true
  branches_diverge_by_protected_flow_deferred_flow_node_state_cost_and_future_reader: true
  no_universal_safe_exit_or_clean_evacuation: true
  default_event_names_narrator_missing_inputs_harmed_flow_and_future_reader_mutation: true
  no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger: true

Progress metric

liveFloorEgressBottleneckProgress = 0..10:

  • 0: no physical movement conflict.
  • 1: source surface and egress node are visible.
  • 2: throughput and direction pressure are visible.
  • 3: at least two flow claims are visible.
  • 4: protected and deferred/blocked flows are named.
  • 5: 直播现场通行瓶颈账本 enters play with support and receipt slots.
  • 6: 直播现场通行分流 offers explicit assignment slots.
  • 7: at least two non-default branches create different protected/deferred flow states.
  • 8: 通行瓶颈默认 creates future route or reader cost.
  • 9: replay proves valid branch and default branch.
  • 10: future reader consumes egress result without fixed turn, day/week, raw count, dashboard, or lens-health trigger.

Failure cases

The lens must fail if any of these are true:

  • entry is fixed-turn, fixed-day, chapter quota, raw crowd count, raw notice count, dashboard state, or lens-health state;
  • no concrete egress node exists;
  • throughput or direction is hidden;
  • only one flow is named while an actual competing flow exists;
  • protected and deferred/blocked flows are not both explicit;
  • access-caption, oxygen, powered-door, corridor-light, escort, quiet, checksum, lawful counter, or receipt needs are implied rather than recorded;
  • sponsor/security/private tunnel priority has no capture or receipt;
  • all branches resolve to clean safe exit;
  • default lacks narrator, harmed flow, missing inputs, future reader, or counter deltas;
  • future systems consume evacuated or cleared without reading the egress state.

Non-goals

  • Not a generic evacuation scene.
  • Not a crowd mood system.
  • Not a fixed emergency phase.
  • Not governance or dashboard methodology.
  • Not raw count expansion.
  • Not valid unless egress node, throughput, movement claims, support, protected/deferred flows, default narrator, deltas, and future reader are observable.