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
| Slot | Required fill | Why it matters |
|---|---|---|
ledger | room-occupancy-ledger or equivalent open ledger | proves the room claim conflict is visible |
selected_room_node | ward air room, cutroom, archive counter, intake bay, sponsor booth, corridor, stage threshold, or equivalent | names the real place objective |
selected_claim | the person, proof, queue, package, edit lane, crew lane, or route asset asking for occupancy | prevents anonymous room use |
displaced_claim | displaced claim or explicit absence | prevents invisible harm |
authority | permit, seal, public receipt, sponsor order, archive seal, or explicit absence | names why the move is allowed or not allowed |
handler | handler, escort, public witness, low-rank runner, route asset, or explicit absence | ties the room decision to RPG staffing |
support | air, silence, escort, checksum, lawful counter, sponsor privacy, or explicit absence | pays or fails the care / security requirement |
receipt | public, lawful, private, sponsor, archive receipt, or explicit absence | gives the future reader a trace |
release_condition | release condition or explicit absence | prevents permanent clean occupancy |
future_reader | route asset, claimant floor, fan oxygen audit, archive reader, sponsor gate, broadcast reality, live floor, correction slot, or equivalent | proves 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:
- Room Occupancy Ledger is open or an equivalent room-claim state exists;
- a concrete room or threshold has finite capacity;
- at least two claims compete, or one claim competes with a default narrator;
- a displacement or release question is unresolved;
- a future reader will consume the room result;
- 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.