Fire Curtain / Egress Interlock

This mechanism prevents four propositions from collapsing into one another:

  1. F2 can complete a containment drop under empty-house test conditions.
  2. Aisle B must remain open while a person or obstruction occupies its crossing window.
  3. Usher Lin’s current floor stop order can veto a remote cue.
  4. A sponsor broadcast can describe a safety state but cannot create physical egress authority.

The collision exists because the first two propositions are independently safe and temporally incompatible. The mechanic resolves command order, not the validity or portability of an old tag.

Runtime chain

pressure_intake:
  rite_id: storyteller.rite.fire_curtain_interlock_intake.v1
  choice: 0
  option_id: record_dual_safety_conflict
  exact_slots:
    drop_trace: storyteller.card.fire_curtain_drop_test_trace.v1
    aisle_census: storyteller.card.fire_curtain_occupied_aisle_census.v1
    stop_order: storyteller.card.usher_lin_stop_order.v1
    sponsor_cue: storyteller.card.fire_curtain_sponsor_safehouse_cue.v1
  records:
    - fire_curtain_interlock.intake_recorded
    - fire_curtain_interlock.pressure.drop_test_passed
    - fire_curtain_interlock.pressure.aisle_occupied
    - fire_curtain_interlock.pressure.usher_stop_order_visible
    - fire_curtain_interlock.pressure.sponsor_claimed_route_clearance
 
collision_entry:
  event_id: storyteller.event.fire_curtain_egress_collision.v1
  option: 0
  option_id: open_interlock_hearing
  requires_intake_and_four_pressure_flags: true
  requires_all_seven_exact_cards: true
  sets:
    - fire_curtain_interlock.collision_opened
    - fire_curtain_interlock.drop_authority_visible
    - fire_curtain_interlock.egress_authority_visible
    - fire_curtain_interlock.usher_claim_pending
    - fire_curtain_interlock.sponsor_broadcast_claim_pending
    - fire_curtain_interlock.state.contested_interlock
  interlock_state_after: contested_interlock
 
review:
  rite_id: storyteller.rite.fire_curtain_egress_interlock_review.v1
  repeatable: false
  requires_all_collision_flags: true
  exact_slot_count: 7

The intake records simultaneous pressure but does not open the review directly. The collision event converts those observations into one live interlock state. Neither raw curtain count, starter-card visibility, fixed time, nor dashboard health may substitute for this chain.

Ordered review contract

branches:
  certify_drop_not_egress:
    interlock_state_after: drop_test_only
    future_effect: separate_egress_clearance_required
    counter_deltas: { fireCurtainDropEvidence: 3, egressClearanceDebt: 2, usherProtection: 1, sponsorPressure: 1 }
  clear_aisle_then_repeat_drop:
    interlock_state_after: aisle_cleared_retest_due
    future_effect: repeat_drop_witness_required
    counter_deltas: { aisleClearanceIntegrity: 3, retestDuty: 2, showDelay: 2, sponsorPressure: 1 }
  hold_last_person_window:
    interlock_state_after: last_person_window_held
    future_effect: manual_hold_witness_required
    counter_deltas: { lastPersonProtection: 3, manualHoldWitnessDuty: 2, curtainDelay: 2, crowdFriction: 1 }
  split_floor_and_broadcast_cues:
    interlock_state_after: floor_broadcast_split
    future_effect: broadcast_cue_cannot_drive_egress
    counter_deltas: { authoritySeparation: 3, broadcastCueRestraint: 2, floorControlVisibility: 2, sponsorPressure: 2 }
  honor_usher_lin_stop_order:
    interlock_state_after: usher_veto_honored
    future_effect: usher_lin_signoff_required
    counter_deltas: { usherProtection: 3, stopOrderIntegrity: 3, floorDelay: 1, sponsorPressure: 2 }
  quarantine_safehouse_cue:
    interlock_state_after: sponsor_cue_quarantined
    future_effect: interlock_witness_pair_required
    counter_deltas: { sponsorCueQuarantine: 3, witnessPairDuty: 2, routeRewriteCost: 2, broadcastFriction: 1 }
  air_synchronized_safety_claim:
    interlock_state_after: false_synchronized_clearance
    future_effect: false_interlock_default_pending
    counter_deltas: { falseSynchronizedClearance: 3, harmedAudienceExposure: 2, sponsorSafehouseSpeed: 2, interlockIntegrity: -3 }

The first branch certifies only the current containment result; it explicitly does not certify egress. The second and third sequence physical commands. The fourth through sixth preserve floor authority in different ways. The seventh creates a false synchronization rather than a legitimate safety state.

Harmful branch and default

Only air_synchronized_safety_claim may set the exact pending triple:

pending_triple:
  fire_curtain_interlock.default_pending: true
  event.false_fire_curtain_interlock_default.armed: true
  future_route.false_interlock_default_pending: true
aired_claim: broadcast_reality.fire_curtain_synchronized_safety_claim_aired
default_terminals:
  cut_broadcast_restore_floor_veto:
    interlock_state_after: floor_veto_restored
    future_effect: floor_stop_precedes_sponsor_cue
    counter_deltas: { floorVetoIntegrity: 3, broadcastClaimRetraction: 2, sponsorPressure: 2, egressClearanceDebt: 1 }
  evacuate_side_passage_then_drop:
    interlock_state_after: side_passage_then_drop
    future_effect: side_passage_witness_required
    counter_deltas: { sidePassageSafety: 3, evacuationDelay: 2, dropRetestDuty: 2, witnessBurden: 1 }
  accept_synchronized_safehouse_reality:
    interlock_state_after: synchronized_safehouse_reality_hardened
    future_effect: sponsor_cue_controls_egress
    counter_deltas: { sponsorRealityHardening: 3, egressAuthorityLoss: 3, harmedAudienceExposure: 2, correctionDuty: 2 }

Every default terminal clears the exact triple and the live broadcast_reality.fire_curtain_synchronized_safety_claim_aired flag. It preserves fire_curtain_interlock.false_synchronized_clearance_scar as the durable record that the false synchronized claim did air. Acceptance is a harmful broadcast-reality mutation, not a safety certification.

Authority boundary

This mechanic can order the current containment command, occupied-egress command, last-person window, floor veto, and broadcast cue. It grants no evacuation clearance, performer or audience consent, sponsor safehouse authority, archive ownership, inspection certification beyond the named test, or universal public truth.