Room Occupancy Ledger / 房间占用账本

Room Occupancy Ledger is the visible card for 第七穹顶占用栈. It enters play when a reachable room, counter, ward bay, corridor bay, booth, or stage threshold has more meaningful claims than it can safely hold.

The card prevents a common false-clean shortcut: a producer cannot move a protected person, proof bundle, public queue, sponsor package, edit lane, or fan oxygen burden into a room without naming who is displaced and which reader will care later.

Card promise

The ledger records:

  1. the room node or equivalent holding surface;
  2. current occupant and pending claimants;
  3. capacity limit and care/security/air/silence requirement;
  4. displacement target or explicit absence;
  5. authority, handler, proof, public receipt, and release condition or explicit absence;
  6. future reader that will accept, tax, reject, or weaponize the occupancy state;
  7. default narrator if the room is overbooked, hidden, or left unresolved.

Entry conditions

Create or refresh this card 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
  at_least_two_claims_or_one_claim_plus_default_pressure: true
  displacement_or_release_question_present: true
  future_reader_reads_occupancy: true
  player_can_assign_or_record_explicit_absence: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true

Valid claim sources include protected witness support, artist refusal boundary, claimant intake, fan oxygen air demand, archive proof storage, black-box edit custody, sponsor stop-loss package, live floor crew load, production triage, correction slot pressure, or route asset custody.

Required card fields

card_id: storyteller.card.room_occupancy_ledger.v1
state: unopened | ledger_open | reassigned | split_shift | displaced_with_receipt | sealed_occupied | defaulted | recovery_only
source_pressure:
  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_id: ward_air_room | cutroom_blackbox | archive_counter_seven | public_intake_bay | sponsor_bridge_booth | service_corridor_chain | stage_threshold | equivalent
  room_state_before: empty | occupied | reserved | sealed_occupied | overbooked | captured | hostile | recovery_only | equivalent
  capacity_limit: one_body | one_proof_bundle | one_queue | air_limited | silence_limited | escort_limited | edit_limited | public_limited | equivalent
  access_state_reference: storyteller.card.facility_access_map.v1 | explicit_absence | equivalent
occupancy_claims:
  - claim_id: <id>
    claimant: protected_witness | artist | fan_queue | archive | sponsor | inspector | editor | claimant_public | crew | route_asset | blackout_system | equivalent
    desired_occupant: person | proof_bundle | queue | edit_lane | sponsor_package | medical_air | crew_lane | broadcast_surface | equivalent
    care_or_security_requirement: air | silence | escort | seal | checksum | public_receipt | lawful_counter | sponsor_privacy | none | equivalent
    if_displaced: hostile | exposed | proof_contaminated | oxygen_debt | contract_capture | edit_delay | route_blocked | recovery_only | equivalent
selected_resolution:
  selected_claim: <claim id>
  displaced_claim_or_absence: <claim id or explicit_absence>
  authority_or_absence: <permit seal public receipt sponsor order archive seal or explicit_absence>
  handler_or_absence: <handler or explicit_absence>
  receipt_or_absence: <public/lawful/private receipt or explicit_absence>
  release_condition_or_absence: <condition or explicit_absence>
  future_reader: route_asset | claimant_floor | fan_oxygen_audit | archive_reader | sponsor_gate | broadcast_reality | live_floor | correction_slot | equivalent
default_if_unresolved:
  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
  room_state_after: captured | hostile | hidden_displacement | overbooked | recovery_only | equivalent

Branch families recorded by the card

House protected person or boundary

A body, artist boundary, witness, or child voice receives the room.

Expected relief: harm, seizure, or reprisal pressure falls.

Expected cost: proof storage, fan oxygen, sponsor package, edit lane, crew lane, or route asset pressure rises.

House proof, body, or route asset

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

Expected relief: custody integrity, proof chain, route availability, or archive legitimacy improves.

Expected cost: person care, public queue, fan oxygen, sponsor privacy, or live floor capacity worsens.

House public or claimant queue

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

Expected relief: public legitimacy, oxygen accountability, or claimant pressure improves.

Expected cost: witness exposure, sponsor pressure, archive delay, security heat, or route asset delay rises.

Split shift or rotate occupancy

The producer records alternating use with a handoff receipt.

Expected relief: two claims remain partially alive.

Expected cost: ambiguity, handler burden, proof contamination, public distrust, or default risk rises.

Displace with receipt

The producer moves one claim out and records who accepted the cost.

Expected relief: chosen room use proceeds.

Expected cost: displaced claim becomes named future pressure, not invisible loss.

Hide displacement or overbook

The producer treats the room as if it can hold everyone or silently moves a weaker claim.

Expected result: overflow/default is armed and a future reader can harden the hidden displacement.

Required deltas

A resolved ledger row must mutate at least three surfaces:

counter_deltas_required:
  relief: at_least_one
  cost: at_least_one
  future_reader_or_route_effect: at_least_one

Useful 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

Non-goals

  • Not a room inventory list.
  • Not a fixed-turn upkeep card.
  • Not a generic resource counter.
  • Not satisfied by “room full” prose.
  • Not valid if displacement is hidden from every future reader.