Egress Bottleneck Default / 通行瓶颈默认

Egress Bottleneck Default fires or arms when a live-floor movement bottleneck is hidden, under-specified, or falsely filed as safe for everyone.

The default is not a panic cutscene. It is the system choosing which flow moves first when the player does not name the physical bottleneck.

Trigger

default_trigger:
  event: storyteller.event.egress_bottleneck_default.v1
  source_card: storyteller.card.live_floor_egress_ledger.v1
  trigger_kind: state_pressure
  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
  no_fixed_turn_trigger: true

The event must not trigger from fixed turn count, day/week cadence, chapter quota, raw crowd count, dashboard state, or lens health.

Default narrators

When the player does not choose, one of these narrators must choose for them:

NarratorProtected by defaultTypical harm
security_gridsealed doors, checkpoint order, sponsor bridge routeaccess/crowd/claimant flows blocked
safety_marshallargest visible crowd outflowproof, performer, or route asset waits
sponsor_tunnelsponsor package, glamour arrival, private exitpublic and access-caption hostility
fan_oxygen_queueoxygen outflow and public aircamera return, lawful proof, or sponsor route delayed
access_caption_readercaption-guided accessible exitsilent service move becomes unlawful or hostile
archive_runnerproof bundle or checksum bagcrew and crowd support degrade
blackout_systemdead-air evacuation and powered-door survivalbroadcast slot becomes recovery-only
crowd_currentwhichever direction is already movingone-way scar, injury review, or missing witness

Required payload

default_event_required:
  event: storyteller.event.egress_bottleneck_default.v1
  source_row_or_absence: <row id or explicit_absence>
  egress_node: <node id or explicit_absence>
  throughput_limit_or_absence: <limit or explicit_absence>
  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>
  missing_inputs:
    protected_flow_named: present | absent
    deferred_flow_named: present | absent
    handler: present | absent
    support: present | absent
    receipt: present | absent
    future_reader: present | absent
  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

Branch consequences

The default must produce one immediate relief or capture, one visible harm or cost, and one future reader mutation. Examples:

  • the fan oxygen queue gets out, but a sponsor tunnel claim becomes hostile and the public table demands a receipt;
  • the sponsor tunnel moves first, but access-caption readers file a class path scar and fan oxygen resentment rises;
  • proof reaches archive, but crew cannot return to the board and a live-floor crew review opens;
  • blackout evacuation protects bodies, but the broadcast slot becomes recovery-only and capacity liability reads the dead-air scar.

Failure cases

The event is invalid if it only changes mood, reputation, money, or a generic crowd pressure counter. It must name a default narrator, a protected flow, a harmed/deferred flow, missing inputs, a future reader, and at least three durable deltas.