Fire Curtain / Egress Interlock Review
The review resolves a live command collision. It does not open from seven starter cards or from the old empty-house drop record alone.
Pressure intake
rite_id: storyteller.rite.fire_curtain_interlock_intake.v1
choice: 0
option_id: record_dual_safety_conflict
repeatable: false
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_clearanceThe intake records four simultaneous pressures. It does not choose whether F2 drops or aisle B stays open.
Collision prerequisite
The intake must be followed by storyteller.event.fire_curtain_egress_collision.v1, option 0 open_interlock_hearing. The event must set the exact review flags and state:
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.
Exact review assignment
review_id: storyteller.rite.fire_curtain_egress_interlock_review.v1
repeatable: false
slots:
docket: storyteller.card.fire_curtain_interlock_docket.v1
drop_trace: storyteller.card.fire_curtain_drop_test_trace.v1
aisle_census: storyteller.card.fire_curtain_occupied_aisle_census.v1
control_chain: storyteller.card.fire_curtain_control_chain_receipt.v1
stop_order: storyteller.card.usher_lin_stop_order.v1
sponsor_cue: storyteller.card.fire_curtain_sponsor_safehouse_cue.v1
future_route: storyteller.card.fire_curtain_future_route_interlock.v1Ordered branch contract
branches:
- choice: 0
id: 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 }
- choice: 1
id: 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 }
- choice: 2
id: 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 }
- choice: 3
id: 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 }
- choice: 4
id: 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 }
- choice: 5
id: 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 }
- choice: 6
id: 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 }Every branch sets only its own branch flag, interlock state, future-route effect, and four declared counters. Only zero-based choice 6 may set broadcast_reality.fire_curtain_synchronized_safety_claim_aired and the exact default pending triple.
Reachability and missability
All seven branches must resolve from the same exact post-collision packet. A focused test must reject a missing intake flag, missing collision flag, wrong card ID, assigned card absent from hand, omitted choice, or second review resolution. Because the review is nonrepeatable, selecting one command order makes the other six missable for this incident.
Prohibited substitutions
The review rejects an old safety-curtain tag, a mezzanine fire-door wedge, a generic safety certificate, a dashboard state, or a raw curtain count. It cannot turn a successful empty-house drop into evacuation clearance, sponsor safehouse authority, consent, archive ownership, or clean public truth.