Room Occupancy Reassignment / 房间占用重派

Room Occupancy Reassignment resolves one row on 房间占用账本. It begins when a concrete room, counter, bay, corridor, booth, or threshold has contested occupancy and a future reader depends on the result.

The rite asks: who gets the room, who is displaced, what receipt exists, and what future route reads the scar?

Rite slots

SlotRequired fillWhy it matters
ledgerroom-occupancy-ledger or equivalent open ledgerproves the room claim conflict is visible
selected_room_nodeward air room, cutroom, archive counter, intake bay, sponsor booth, corridor, stage threshold, or equivalentnames the real place objective
selected_claimthe person, proof, queue, package, edit lane, crew lane, or route asset asking for occupancyprevents anonymous room use
displaced_claimdisplaced claim or explicit absenceprevents invisible harm
authoritypermit, seal, public receipt, sponsor order, archive seal, or explicit absencenames why the move is allowed or not allowed
handlerhandler, escort, public witness, low-rank runner, route asset, or explicit absenceties the room decision to RPG staffing
supportair, silence, escort, checksum, lawful counter, sponsor privacy, or explicit absencepays or fails the care / security requirement
receiptpublic, lawful, private, sponsor, archive receipt, or explicit absencegives the future reader a trace
release_conditionrelease condition or explicit absenceprevents permanent clean occupancy
future_readerroute asset, claimant floor, fan oxygen audit, archive reader, sponsor gate, broadcast reality, live floor, correction slot, or equivalentproves the room state matters later

The rite cannot pass with a generic action point, abstract money, famous-character stamp, or room label without displacement and future-reader effect.

State-triggered offer

Offer the rite only when all are true:

  1. Room Occupancy Ledger is open or an equivalent room-claim state exists;
  2. a concrete room or threshold has finite capacity;
  3. at least two claims compete, or one claim competes with a default narrator;
  4. a displacement or release question is unresolved;
  5. a future reader will consume the room result;
  6. the player can assign the required slots or record explicit absence.

No fixed turn count, day count, week framing, chapter quota, raw content count, dashboard state, or lens-health state may offer the rite.

Branch families

Protect living occupant

A protected witness, artist boundary, child voice, claimant body, or exhausted handler receives the room.

Expected result:

selected_response: protect_living_occupant
room_state_after_any: [occupied_protected, sealed_occupied, public_sensitive]
relief_any: [witness_exposure_down, protected_boundary_integrity_up, harm_risk_down]
cost_any: [proof_storage_pressure_up, fan_oxygen_resentment_up, sponsor_stop_loss_pressure_up, route_asset_pressure_up, live_floor_capacity_down]
future_route_effect_any: [accepted_with_boundary_cost, route_narrowed, recovery_claim_preserved]

Secure proof or route asset

A proof bundle, black-box copy, uncut tape, legal body, archive duplicate, or route asset receives the room.

Expected result:

selected_response: secure_proof_or_asset
room_state_after_any: [proof_housed, custody_room_claimed, checksum_isolated]
relief_any: [proof_chain_integrity_up, archive_signature_legitimacy_up, route_asset_acceptance_up]
cost_any: [witness_exposure_up, ward_air_capacity_down, public_receipt_distrust_up, edit_debt_up]
future_route_effect_any: [archive_reader_accepts_with_cost, broadcast_reality_legible, displaced_body_recovery_only]

Seat public or claimant queue

A claimant, fan oxygen, pirate/public receipt, or public intake queue receives the room.

Expected result:

selected_response: seat_public_or_claimant_queue
room_state_after_any: [public_queue_seated, claimant_receipt_room, crowd_visible]
relief_any: [public_receipt_legitimacy_up, claimant_floor_pressure_down, fan_oxygen_balance_up]
cost_any: [security_heat_up, sponsor_stop_loss_pressure_up, proof_chain_delay_up, witness_exposure_up]
future_route_effect_any: [claimant_floor_consumes_room_state, public_audit_unlocked, private_capture_blocked_with_risk]

Split shift with handoff receipt

The producer splits the room across incompatible claims by explicit escort, receipt, and release condition.

Expected result:

selected_response: split_shift_with_receipt
room_state_after_any: [split_shift, receipt_bound, handoff_risky]
relief_any: [two_claims_remain_alive, overbooking_claim_visible, immediate_collapse_prevented]
cost_any: [handler_burden_up, source_ambiguity_up, proof_contamination_risk_up, public_distrust_up]
future_route_effect_any: [split_claim_future_hearing_required, contradiction_pending, accepted_with_handoff_cost]

Displace with receipt

One claim is moved out and the displacement is made legible.

Expected result:

selected_response: displace_with_receipt
room_state_after_any: [displaced_with_receipt, occupied_with_scar]
relief_any: [chosen_claim_proceeds, room_overflow_risk_down]
cost_any: [displaced_claim_pressure_up, future_recovery_cost_up, public_or_lawful_debt_up]
future_route_effect_any: [displaced_claim_reader_armed, route_costlier, recovery_only_if_unpaid]

Seal occupied room

The current occupant is protected and further use is refused.

Expected result:

selected_response: seal_occupied_room
room_state_after_any: [sealed_occupied, release_condition_required]
relief_any: [immediate_harm_down, proof_or_person_protected]
cost_any: [route_blocked, schedule_pressure_up, sponsor_pressure_up, public_queue_hostility_up]
future_route_effect_any: [lawful_or_public_release_required, blocked_until_release, recovery_only]

Hide displacement or overbook

The producer pretends the room can hold every claim or leaves the weaker claim unnamed.

Expected result:

selected_response: hide_displacement_or_overbook
emitted_event: storyteller.event.occupancy_overflow_default.v1
room_state_after_any: [hidden_displacement, overbooked, captured, hostile, recovery_only]
cost_any: [room_overflow_risk_up, broadcast_reality_drift_up, claimant_hostility_up, black_screen_pressure_up]
future_route_effect_any: [blocked, captured, hostile, contradiction_pending, recovery_only]

Required result payload

rite: storyteller.rite.room_occupancy_reassignment.v1
ledger: storyteller.card.room_occupancy_ledger.v1
selected_room_node: <node_id>
room_state_before: empty | occupied | reserved | sealed_occupied | overbooked | captured | hostile | recovery_only
selected_claim: <claim_id>
displaced_claim: <claim_id_or_explicit_absence>
authority: <authority_or_explicit_absence>
handler: <handler_or_explicit_absence>
support: <support_or_explicit_absence>
receipt: <receipt_or_explicit_absence>
release_condition: <condition_or_explicit_absence>
future_reader: <reader>
branch: protect_living_occupant | secure_proof_or_asset | seat_public_or_claimant_queue | split_shift_with_receipt | displace_with_receipt | seal_occupied_room | hide_displacement_or_overbook
outcome:
  room_state_after: <state>
  displaced_claim_state_after: <state_or_explicit_absence>
  receipt_state_after: <state_or_explicit_absence>
  future_reader_effect: <effect>
  emitted_event: storyteller.event.occupancy_overflow_default.v1 | none_if_valid
  counter_deltas:
    relief: []
    cost: []
    future: []

Miss and failure

If a live room-claim ledger is ignored while a default narrator can occupy the room, 占用溢出默认 must be able to resolve the room through default control. Skipping the rite is not a neutral wait.

Non-goals

  • Not room movement.
  • Not a fixed upkeep action.
  • Not a generic meeting.
  • Not valid if all claims become cleanly satisfied.
  • Not valid if displacement has no reader.