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: true

Valid 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 | equivalent

Play loop

  1. A later route, proof, person, queue, sponsor package, crew lane, or broadcast surface needs a room that is already occupied, capacity-limited, or defaultable.
  2. 房间占用账本 enters or updates with the claim stack.
  3. The player opens 房间占用重派 and fills the required slots.
  4. The branch produces relief, cost, and a future reader effect.
  5. 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_one

Core counters and states:

  • room_occupancy_pressure
  • room_overflow_risk
  • ward_air_capacity
  • protected_boundary_integrity
  • witness_exposure
  • proof_chain_integrity
  • archive_debt
  • fan_oxygen_resentment
  • public_receipt_legitimacy
  • sponsor_stop_loss_pressure
  • contract_capture
  • edit_debt
  • live_floor_capacity
  • handler_burden
  • route_asset_pressure
  • future_route_acceptance
  • broadcast_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.