Recovery Inventory Triage / 复原库存分诊线

Recovery Inventory Triage is a pressure storyline for the moment when multiple crisis systems try to spend the same scarce recovery capacity.

It extends the current mesh without duplicating it. 赞助补偿库存线 asks what the sponsor receives after delivery shortfall. 复原病房出院压迫线 asks whether a recovering body can be used. 认领人现场接待线 asks whether a claimant row physically reaches the floor. 经营压缩台 asks whether costly success is being counted as clean yield. This storyline asks the shared-inventory question: when sponsor, public, archive, ward, editor, floor, and management all want the same recovery surface, which row is spent and which future reader inherits the scar?

The storyline binds 复原库存分诊机制, 复原库存账本, 复原库存分配, and 复原库存夺取默认.

Why this is the next useful expansion

The vault already has many strong consequences, but most are local to their own docket. That creates a future implementation risk: one correction slot can save sponsor delivery, one ward air bed can restore a performer, one oxygen reserve can calm fans, and one checksum lane can fix archive proof — all in separate successful branches — unless a shared row prevents double spending.

This storyline turns recovery capacity into named inventory with owners and readers. It is high value because it forces management RPG choices without raw count expansion:

  • a future slot used for sponsor makegood cannot also be free correction capacity;
  • ward air used for a pressured appearance cannot also be clean recovery protection;
  • fan oxygen reserve used as public benefit cannot also satisfy a sponsor floor;
  • archive proof window used for lawful proof cannot also be an edit shortcut;
  • crew rest used to keep the floor open cannot also make management efficiency clean;
  • public contrition airtime cannot be both sponsor apology and claimant receipt without a split scar.

Primary playable question

When finite recovery inventory is contested, does the producer:

  • allocate one row to the most urgent demand;
  • split the row into escrowed partial uses;
  • reserve it for a protected future reader;
  • borrow forward from future capacity;
  • convert it into public oxygen / public receipt;
  • convert it into sponsor makegood;
  • convert it into lawful proof;
  • refuse and record the double-spend attempt;
  • quarantine the row;
  • let sponsor, schedule, management, archive, ward, fan oxygen, editor, or handler absence file first?

Every answer must name the primary reader, the excluded/scoped reader, the inventory state after, and the future route effect.

State-triggered entry

Open this storyline when all conditions below are true:

entry_state:
  trigger_kind: state_pressure
  finite_recovery_inventory_present_or_absent: true
  competing_demands_min: 2
  shared_inventory_or_explicit_absence_visible: true
  future_readers_min: 2
  default_if_unworked_present: true
  player_can_allocate_split_reserve_borrow_quarantine_refuse_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true

The storyline must not open from fixed turn count, fixed day/week interval, chapter quota, raw content count, dashboard state, lens health, generic low morale, or generic budget shortage.

Content pack

Mechanic

  • 复原库存分诊机制 defines finite inventory rows, competing demand rows, allocation modes, default capture, counters, and replay evidence.

Card

  • 复原库存账本 records source pressure, inventory rows, competing demands, future readers, selected allocation, excluded reader, and future route effect.

Rite

  • 复原库存分配 assigns priority, split escrow, reservation, forward borrowing, public conversion, sponsor conversion, lawful conversion, refusal, quarantine, or default.

Event

  • 复原库存夺取默认 fires or arms when inventory is hidden, double-spent, absent-but-filed, or captured by an institution first.

Storyline spine

Beat 1 — Scarce recovery row becomes visible

A prior branch or current pressure names a finite row:

  • correction slot;
  • ward air or protected recovery bed;
  • fan oxygen reserve;
  • crew rest shift;
  • archive proof window;
  • edit checksum lane;
  • sponsor makegood frame;
  • public contrition minute;
  • custody handler;
  • security lane.

The row must have a quantity state, current owner or explicit absence, protected boundary or explicit absence, and at least one future reader.

Beat 2 — Competing demands collide

At least two demands target the same row or incompatible recovery rows. Examples:

  • sponsor makegood wants the future correction slot while broadcast reality needs it for public correction;
  • fan oxygen refund wants the oxygen reserve while management wants to show audience stability;
  • ward air protects an artist while sponsor package wants a live appearance;
  • archive proof window is needed by lawful custody while cutroom wants it as an edit checksum lane;
  • crew rest shift is required for floor safety while claimant intake wants an escort lane;
  • public contrition minute is demanded by a claimant and by sponsor stop-loss copy.

Beat 3 — Ledger opens

Create 复原库存账本. The ledger must name inventory row, demands, primary reader, excluded/scoped reader, protected boundary, support/proof, default, and future route effect.

Beat 4 — Allocation rite prices the scar

Run 复原库存分配. The player chooses allocation mode and assigns who receives, who is scoped/excluded, which proof or support exists, and which future route reads the result.

The rite must not allow a clean money payment or clean KPI to produce universal acceptance.

Beat 5 — Capture default hardens false-clean inventory

If ignored or underfilled, 复原库存夺取默认 records capture actor, captured use, hidden demand, excluded reader, false-clean claim, and future effect. This can feed management appeal, reader collision, sponsor unwind, public-only bridge, lawful proof gate, recovery-only route, or correction-slot debt.

Branch map

BranchImmediate reliefCost/scarFuture state
Priority allocationselected demand receives finite rowexcluded demand hostile/blocked/narrowedaccepted with cost; excluded reader scar
Split escrowtwo demands receive scoped partial useambiguity, proof burden, handler loadsplit_required or collision_ready
Reserve boundaryfuture reader/body boundary protectedcurrent sponsor/schedule/public pressure risesfuture route preserved but current route narrows
Borrow forwardcurrent crisis stabilizesfuture capacity becomes costlier/exhaustedfuture slot debt or recovery-only row
Public oxygen conversionpublic/fan legitimacy improvessponsor hostility, audit, fan resentmentpublic_only bridge or oxygen audit
Sponsor makegood conversionsponsor pressure narrowscontract capture, public distrust, artist/claimant costsponsor_only or unwind_required
Lawful proof conversionarchive/inspection/custody clarity improvespublic delay, sponsor hostility, edit debtlawful_only or checksum_required
Refuse and recordfalse double-spend blockedimmediate pressure, handler burdendisputed, costlier, or recovery-only
Quarantineunsafe use preventedroute delayed or correction slot lostquarantine_receipt_required
Default captureinstitution files firsthidden demand, false-clean claimblocked, costlier, sponsor_only, public_only, lawful_only, recovery_only, or collision_ready

Character and faction hooks

Missability and recovery

The storyline is missed when implementation:

  • treats recovery capacity as abstract money, morale, or free cooldown;
  • records only one demand with no explicit absence;
  • lets one row satisfy every reader;
  • hides excluded reader;
  • lets sponsor, legal, archive, edit, management, schedule, public, or handler authority replace finite row assignment;
  • double-spends ward air, oxygen reserve, correction slot, proof window, crew rest, public contrition, or custody handler;
  • files absent inventory as available;
  • produces no future route effect;
  • opens from fixed turn/day/week/chapter/count/lens health.

Recovery is allowed only through a visible scar: split escrow, public addendum, lawful proof gate, sponsor unwind, route recovery surcharge, quarantine receipt, future slot debt, handler burden, fan oxygen refund audit, or recovery-only route.

Replay evidence expectation

storyline_id: storyteller.storyline.recovery_inventory_triage.v1
session_id: lens-recovery-inventory-triage-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  finite_recovery_inventory_present_or_absent: true
  competing_demands_min: 2
  shared_inventory_or_explicit_absence_visible: true
  future_readers_min: 2
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.recovery_inventory_ledger.v1
  rite: storyteller.rite.recovery_inventory_allocation.v1
ledger:
  inventory_rows:
    - inventory_id: <row>
      inventory_kind: <kind>
      quantity_state: <state>
      current_owner_or_absence: <owner_or_absence>
  competing_demands:
    - demand_id: <demand-a>
      requester: <requester>
      requested_inventory: <inventory>
      future_reader: <reader>
    - demand_id: <demand-b>
      requester: <requester>
      requested_inventory: <inventory>
      future_reader: <reader>
branch_runs:
  allocation_branch:
    allocation_mode: priority_allocate | split_escrow | reserve_boundary | borrow_forward | convert_to_public_oxygen | convert_to_sponsor_makegood | convert_to_lawful_proof | refuse_and_record | quarantine
    selected_inventory_or_absence: <inventory>
    primary_reader_state_after: <state>
    excluded_reader_state_after: <different state>
    inventory_state_after: <state>
    future_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    event_seen_or_armed: storyteller.event.recovery_inventory_capture_default.v1
    capture_actor: <actor>
    captured_use: <use>
    hidden_or_excluded_demand: <demand>
    excluded_reader: <reader>
    false_clean_claim: <claim>
    future_route_effect: <effect>
assertions:
  - entry_is_state_triggered
  - finite_inventory_row_or_explicit_absence_visible
  - competing_demands_and_future_readers_visible
  - ledger_records_owner_boundary_primary_and_excluded_readers
  - allocation_branches_diverge
  - no_clean_double_spend
  - default_names_capture_actor_hidden_demand_and_excluded_reader
  - future_route_consumes_inventory_state
  - no_fixed_turn_trigger

Non-goals

  • Not raw content-count expansion.
  • Not a global economy layer.
  • Not a management governance checklist.
  • Not sponsor makegood, recovery ward, claimant intake, live floor, or cutroom priority alone.
  • Not valid unless the finite recovery row changes downstream playable state.