Room Occupancy Claim Stack / 房间占用认领栈线

Room Occupancy Claim Stack is a pressure storyline for the moment when Storyteller has solved access, legality, or custody on paper but the Seventh Dome still has only one room, one bay, one counter, one booth, one corridor segment, or one threshold that can safely hold the next crisis.

The core question is: who gets to occupy the scarce room, whose claim is displaced, and which future reader consumes that displacement?

Gap this fills

The current corpus is strong on archive custody, broadcast legality, claimant pressure, sponsor liability, cutroom priority, live-floor crew load, and facility access. The remaining product gap is physical co-presence: a player can know the lawful reader, proof chain, access route, and future obligation, but the game still needs to prove whether the body, proof, queue, crew lane, or route asset actually has a room.

This storyline adds that layer without becoming a movement minigame. It does not ask whether the door opens. It asks what happens after the door opens and the room is already spoken for.

Primary playable question

When a room can hold only one meaningful claim, does the producer protect a living occupant, secure proof, seat the public queue, split occupancy, displace someone with receipt, seal the current occupant, or hide the displacement and let the room default?

Every answer must create both relief and future cost.

Content pack

State-triggered entry

Open this storyline when all are true:

entry_state:
  trigger_kind: state_pressure
  concrete_room_or_threshold_present: true
  access_state_known_or_explicitly_absent: true
  capacity_conflict_present: true
  claim_stack_present: true
  displacement_or_release_question_present: true
  future_reader_reads_occupancy: true
  player_response_available: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true

Valid source pressures include:

  • a protected witness or artist boundary needs the quiet room;
  • a claimant or fan oxygen queue needs the public intake bay;
  • a proof bundle, black-box copy, or uncut tape needs the archive/cutroom counter;
  • a sponsor package wants the bridge booth;
  • a crew lane or service corridor must stay open for live-floor survival;
  • a route asset needs physical custody;
  • a correction slot, legality conversion, or broadcast reality reader must know where the relevant body/proof/queue was housed.

Storyline spine

Beat 1 — The room is reachable but not free

A route may already have a valid path via 设施通行封控线, or access may be explicitly absent. The storyline begins when the target room has finite capacity and competing claims.

The player sees the room node, current occupant, waiting claims, default narrator, and future reader.

Beat 2 — The ledger names displacement

房间占用账本 enters play or updates with at least one concrete row.

Example rows:

occupancy_rows:
  - row_id: ward_air_room_witness_vs_fan_queue
    room_node: ward_air_room
    capacity_limit: air_limited
    selected_occupant_claim: protected_witness_sleep
    displaced_claim_or_absence: fan_oxygen_refund_queue
    default_narrator: fan_oxygen_or_medical_queue_first
    future_reader: fan_oxygen_audit
  - row_id: archive_counter_proof_vs_claimant_body
    room_node: archive_counter_seven
    capacity_limit: one_proof_bundle
    selected_occupant_claim: uncut_tape_copy
    displaced_claim_or_absence: claimant_body_receipt
    default_narrator: archive_queue_first
    future_reader: archive_reader

Beat 3 — The producer chooses occupancy, not cleanliness

房间占用重派 requires selected claim, displaced claim or explicit absence, authority, handler, support, receipt, release condition, and future reader.

No branch can satisfy every claim. A strong branch records the chosen relief and the displaced scar.

Beat 4 — The displaced claim becomes future play

A successful row must change how a future reader accepts the room state.

Future effects include:

  • accepted_with_boundary_cost;
  • archive_reader_accepts_with_cost;
  • claimant_floor_consumes_room_state;
  • split_claim_future_hearing_required;
  • displaced_claim_reader_armed;
  • blocked_until_release;
  • contradiction_pending;
  • recovery_only.

Beat 5 — Hidden displacement defaults

If the ledger is skipped, hidden, underfilled, or falsely cleaned, 占用溢出默认 names the default narrator and hardens the room state.

Branch map

BranchReliefCostFuture reader effect
Protect living occupantharm, reprisal, or boundary risk dropsproof, sponsor, fan oxygen, crew, or route pressure risesaccepted with boundary cost or route narrowed
Secure proof or route assetproof chain, archive legitimacy, or route availability improvesward air, witness, public queue, or edit pressure risesarchive/broadcast accepts with cost
Seat public or claimant queuepublic legitimacy, oxygen accountability, or claimant pressure improvessecurity, sponsor, proof, or witness pressure risesclaimant / fan / public reader consumes state
Split shifttwo claims remain alivehandler burden, ambiguity, contamination, or distrust risesfuture split hearing or contradiction-pending
Displace with receiptchosen claim proceedsdisplaced claim becomes named pressuredisplaced reader armed, route costlier
Seal occupied roomimmediate harm or seizure risk dropsroute, schedule, sponsor, or public queue pressure risesrelease condition required
Hide / overbooktemporary false reliefoverflow/default hardensblocked, hostile, captured, contradiction-pending, or recovery-only

Integration notes

Missability and recovery

The storyline is missed when a room-use decision happens without:

  • concrete room node;
  • selected occupant;
  • displaced claim or explicit absence;
  • authority / handler / support / receipt / release condition or explicit absence;
  • future reader effect.

Recovery requires a scar:

  • reopen the occupancy ledger;
  • publish or seal a displacement receipt;
  • move the displaced claim into fan oxygen audit, claimant floor, archive reader, sponsor gate, live floor, correction slot, or route asset recovery;
  • pay proof repair, public apology, oxygen repayment, handler burden, route narrowing, schedule scar, or recovery-only state.

Replay/session evidence shape

storyline: storyteller.storyline.room_occupancy_claim_stack.v1
session_id: lens-room-occupancy-claim-stack-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_surface: <source>
  room_node: <node>
  capacity_conflict_present: true
  claim_stack_present: true
  future_reader_reads_occupancy: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
offered:
  place: storyteller.place.seventh_dome_occupancy_stack.v1
  card: storyteller.card.room_occupancy_ledger.v1
  rite: storyteller.rite.room_occupancy_reassignment.v1
branch_runs:
  valid_branch:
    selected_response: protect_living_occupant | secure_proof_or_asset | seat_public_or_claimant_queue | split_shift_with_receipt | displace_with_receipt | seal_occupied_room
    selected_claim: <claim>
    displaced_claim_or_absence: <claim or explicit_absence>
    room_state_after: <state>
    future_reader_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    selected_response: hide_displacement_or_overbook
    event_seen_or_armed: storyteller.event.occupancy_overflow_default.v1
    default_narrator: <narrator>
    room_state_after: <state>
    future_reader_effect: <effect>
assertions:
  - entry_is_state_triggered
  - room_node_and_capacity_visible
  - selected_and_displaced_claims_visible
  - authority_handler_support_receipt_release_or_absence_recorded
  - future_reader_consumes_occupancy
  - branches_have_relief_cost_and_future_effect
  - default_is_durable
  - no_fixed_turn_trigger
  - no_fixed_day_or_week_trigger

Non-goals

  • Not bulk filler.
  • Not fixed-turn escalation.
  • Not a decorative room list.
  • Not a movement minigame.
  • Not a clean solution for all room claims.
  • Not valid if displaced claims vanish without a reader.