Room Occupancy Claim Stack / 房间占用认领栈机制
Room Occupancy Claim Stack makes room use a first-class management pressure. It complements 设施通行图机制: access asks whether a route can reach a place; occupancy asks whether the place can safely hold the claim once reached.
The mechanic prevents a false-clean pattern in which a route asset, person, proof, queue, sponsor package, or crew lane is simply moved into a room while the displaced claim disappears.
Design rule
A contested room is not neutral capacity. It is a stack of claims. A valid implementation must show:
- current room node or threshold;
- finite capacity tag;
- selected occupying claim;
- displaced claim or explicit absence;
- authority or explicit absence;
- handler and care / security support or explicit absence;
- receipt and release condition or explicit absence;
- future reader that consumes the room state;
- default narrator if the room is hidden, overbooked, or left unresolved.
Entry contract
entry_state:
trigger_kind: state_pressure
place_layer: storyteller.place.seventh_dome_occupancy_stack.v1
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: trueValid triggering surfaces include protected witness payroll, artist refusal boundary, claimant floor intake, fan oxygen audit, archive proof storage, black-box patch custody, sponsor stop-loss package, live floor crew load, production triage, correction slot auction, route asset custody, broadcast legality conversion, or equivalent state pressure.
Core data model
occupancy_row:
row_id: <stable id>
source_surface: protected_witness | artist_boundary | claimant_intake | fan_oxygen | archive_proof | blackbox_edit | sponsor_package | live_floor | production_triage | correction_slot | route_asset | equivalent
source_row_or_asset_id: <stable source id>
room_node: ward_air_room | cutroom_blackbox | archive_counter_seven | public_intake_bay | sponsor_bridge_booth | service_corridor_chain | stage_threshold | equivalent
capacity_limit: one_body | one_proof_bundle | one_queue | air_limited | silence_limited | escort_limited | edit_limited | public_limited | equivalent
room_state_before: empty | occupied | reserved | sealed_occupied | overbooked | captured | hostile | recovery_only | equivalent
selected_occupant_claim: <claim id>
displaced_claim_or_absence: <claim id or explicit_absence>
authority_or_absence: <authority or explicit_absence>
handler_or_absence: <handler or explicit_absence>
care_or_security_support_or_absence: <support or explicit_absence>
receipt_or_absence: <receipt or explicit_absence>
release_condition_or_absence: <condition or explicit_absence>
default_narrator: fan_oxygen_or_medical_queue_first | editor_auto_patch_first | archive_queue_first | claimant_queue_first | sponsor_package_first | low_rank_staff_first | security_or_blackout_first | equivalent
future_reader: route_asset | claimant_floor | fan_oxygen_audit | archive_reader | sponsor_gate | broadcast_reality | live_floor | correction_slot | equivalentPlay loop
- A later route, proof, person, queue, sponsor package, crew lane, or broadcast surface needs a room that is already occupied, capacity-limited, or defaultable.
- 房间占用账本 enters or updates with the claim stack.
- The player opens 房间占用重派 and fills the required slots.
- The branch produces relief, cost, and a future reader effect.
- If the row is hidden, overbooked, underfilled, or falsely cleaned, 占用溢出默认 fires or is armed.
Branch model
Protect living occupant
Use the room for a protected witness, artist boundary, child voice, claimant body, or exhausted handler.
- Relief: harm / seizure / reprisal pressure decreases.
- Cost: proof storage, sponsor privacy, fan oxygen, edit lane, crew lane, or route asset pressure increases.
- Future: route accepts a boundary cost, narrows, or preserves recovery claim.
Secure proof or route asset
Use the room for a proof bundle, black-box copy, uncut tape, legal body, archive duplicate, or route asset.
- Relief: proof chain, archive legitimacy, or route acceptance improves.
- Cost: witness exposure, public queue, ward air, sponsor privacy, or edit debt worsens.
- Future: archive or broadcast reader accepts with cost while displaced body/queue becomes pressure.
Seat public or claimant queue
Use the room for claimant intake, fan oxygen, public receipt, or pirate/public queue.
- Relief: public legitimacy, oxygen accountability, claimant pressure improves.
- Cost: security heat, sponsor pressure, proof delay, witness exposure increases.
- Future: claimant floor, fan oxygen audit, or public audit consumes the room state.
Split shift with receipt
Use explicit handoff, escort, receipt, and release condition to keep two claims partially alive.
- Relief: immediate collapse is prevented.
- Cost: ambiguity, handler burden, proof contamination, public distrust rises.
- Future: a split-claim hearing or contradiction-pending route is armed.
Displace with receipt
Move one claim out and preserve the scar.
- Relief: chosen claim proceeds and overflow risk falls.
- Cost: displaced claim becomes named future pressure.
- Future: displaced reader can demand recovery, repayment, or route narrowing.
Seal occupied room
Keep the current occupant and refuse further use.
- Relief: immediate harm or proof/person seizure risk drops.
- Cost: route, schedule, sponsor, or public queue pressure rises.
- Future: release condition becomes required.
Hide displacement or overbook
Treat the room as clean capacity or omit the displaced claim.
- Relief: none or temporary false relief.
- Cost: overflow/default hardens.
- Future: 占用溢出默认 mutates route state.
Counter contract
Every resolved row must mutate at least three durable surfaces:
counter_deltas_required:
relief: at_least_one
cost: at_least_one
future_reader_or_route_effect: at_least_oneCore counters and states:
room_occupancy_pressureroom_overflow_riskward_air_capacityprotected_boundary_integritywitness_exposureproof_chain_integrityarchive_debtfan_oxygen_resentmentpublic_receipt_legitimacysponsor_stop_loss_pressurecontract_captureedit_debtlive_floor_capacityhandler_burdenroute_asset_pressurefuture_route_acceptancebroadcast_reality_drift
Default contract
占用溢出默认 must fire or be armed when:
- ledger row is absent;
- capacity is overbooked;
- displacement is hidden;
- authority, handler, support, receipt, or release condition is missing and not recorded as explicit absence;
- room state is filed clean while a future reader depends on it;
- default narrator moves first.
The default must record room state after, displaced claim state after, future reader effect, and at least three deltas.
Integration notes
- With 设施通行图机制, a certified path may still fail if the target room has no safe occupancy.
- With Route Assets and Custody, route assets can be housed, displaced, captured, or made recovery-only.
- With Broadcast Reality, occupied bodies/proofs/queues become real enough to air or default.
- With Fan Oxygen, ward air and public queue displacement becomes oxygen debt.
- With Archive Custody, archive-counter and proof-room occupancy becomes custody legitimacy or archive debt.
Non-goals
- Not a universal inventory system.
- Not a movement layer.
- Not a fixed upkeep phase.
- Not raw capacity math.
- Not valid if every claim is satisfied cleanly.
- Not valid if displaced claims have no future reader.