Recovery Inventory Triage Lens / 复原库存分诊 Lens

This lens observes whether 复原库存分诊线 and 复原库存分诊机制 correctly make scarce recovery capacity executable across sponsor, public, ward, archive, edit, floor, schedule, and management pressure.

The oracle is: a recovery row is not a universal solvent. A correction slot, ward air bed, fan oxygen reserve, crew rest shift, archive proof window, edit checksum lane, sponsor makegood frame, public contrition minute, custody handler, or security lane cannot be spent by multiple readers without allocation, split scar, reservation, borrow-forward debt, quarantine, refusal record, or default capture.

This lens deliberately extends rather than duplicates adjacent surfaces. Sponsor Makegood Inventory Lens prices sponsor replacement inventory after delivery shortfall. Recovery Ward Discharge Pressure Lens protects recovery status from becoming clean availability. Claimant Floor Intake Lens protects the physical receiving edge. Management Compression Desk Lens blocks false-clean KPI capture. This lens tests whether those successes share a finite recovery ledger instead of silently double-spending recovery capacity.

This lens observes:

It is observed through:

Observable promise

When two or more crisis readers want the same recovery capacity, Storyteller must show:

  • the finite inventory row or explicit absence;
  • current owner or explicit absence;
  • protected boundary or explicit absence;
  • at least two competing demands;
  • at least two future readers;
  • primary and excluded/scoped reader;
  • allocation mode;
  • inventory state after;
  • relief, cost, and future route effect;
  • default capture if the row is hidden, double-spent, or filed clean by an institution first.

The lens fails if recovery is represented as abstract money, morale, time, clean KPI, free cooldown, or a pool that can satisfy every route.

Entry oracle

A valid entry must come from state pressure:

entry_state_required:
  trigger_kind: state_pressure
  finite_inventory_row_present_or_explicit_absence: 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
  no_dashboard_or_lens_health_trigger: true

The lens must fail if eligibility depends on fixed turn count, fixed day/week interval, chapter quota, raw crisis count, dashboard status, lens health, generic low resources, or a single demand with no future-reader collision.

Required observable content

Recovery inventory ledger

复原库存账本 or equivalent must record:

ledger:
  source_pressure: sponsor_makegood | recovery_ward | claimant_floor | live_floor | cutroom | fan_oxygen | archive_custody | management_compression | broadcast_reality | equivalent
  finite_inventory_rows:
    - inventory_id: <row id>
      inventory_kind: correction_slot | ward_air | oxygen_reserve | crew_rest_shift | archive_proof_window | edit_checksum_lane | sponsor_makegood_frame | public_contrition_minute | custody_handler | security_lane | equivalent
      quantity_state: free | claimed | split | reserved | exhausted | absent | contested
      current_owner_or_absence: <owner or explicit_absence>
      protected_boundary_or_absence: <boundary or explicit_absence>
  competing_demands:
    - demand_id: <demand-a>
      requester: <requester>
      requested_inventory: <inventory or explicit_absence>
      demanded_use: <use>
      minimum_acceptance_surface: <surface>
      default_if_excluded: <default>
    - demand_id: <demand-b>
      requester: <requester>
      requested_inventory: <same or incompatible inventory>
      demanded_use: <incompatible use>
      minimum_acceptance_surface: <surface>
      default_if_excluded: <default>
  future_readers:
    - reader_id: <reader-a>
      reader_type: <type>
    - reader_id: <reader-b>
      reader_type: <different type>

The lens fails if the ledger records only a numeric pool, only one demand, only generic pressure, or no future reader.

Recovery inventory allocation rite

复原库存分配 or equivalent must require:

assignment:
  selected_inventory_or_absence: <inventory id or explicit_absence>
  inventory_kind: <kind>
  quantity_state_before: <state>
  primary_demand: <demand id>
  primary_reader: <reader id>
  excluded_or_scoped_demand: <demand id or explicit_absence>
  excluded_or_scoped_reader: <reader id or explicit_absence>
  protected_boundary_or_absence: <boundary or explicit_absence>
  proof_or_support_or_absence: <proof/support or explicit_absence>
  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 | default_selects
  future_route_or_slot: <route/slot/reader id>

The lens fails if sponsor money, legal authority, edit patch, archive seal, public sympathy, high-rank handler, or management metric resolves allocation without naming selected inventory, primary reader, excluded reader, and future effect.

Recovery inventory capture default

复原库存夺取默认 or equivalent must fire or arm when:

  • finite row is required but no ledger exists;
  • one row is double-spent;
  • absent inventory is filed as available;
  • an institution files clean allocation first;
  • excluded reader is unnamed;
  • future route reader is hidden;
  • sensitive recovery inventory is treated as clean sponsor, schedule, edit, or management inventory.

Required default payload:

default_event:
  event: storyteller.event.recovery_inventory_capture_default.v1
  inventory_id: <inventory row or explicit_absence>
  inventory_kind: <kind>
  capture_actor: sponsor | schedule_board | management_table | archive_queue | fan_oxygen_queue | ward_queue | editor_auto_patch | inspector | floor_manager | handler_absence | equivalent
  captured_use: <use>
  hidden_or_excluded_demand: <demand or explicit_absence>
  excluded_reader: <reader>
  false_clean_claim: inventory_available | demand_satisfied | route_safe | recovery_clean | public_receipt_clean | schedule_saved | metric_clean | sponsor_settled | equivalent
  inventory_state_after: captured | exhausted | false_available | double_spent | blocked | quarantined | recovery_only | contradiction_pending | equivalent
  future_route_effect: blocked | costlier | sponsor_only | public_only | lawful_only | artist_boundary_only | management_only | split_required | recovery_only | collision_ready | equivalent
  counter_deltas_min: 3

Branch divergence oracle

A satisfying implementation must prove at least six branch families, including one valid allocation and one default/capture branch.

Branch familyRequired reliefRequired costRequired future effect
Priority allocationprimary demand receives finite rowexcluded reader hostile, blocked, narrowed, or recovery-onlyaccepted_with_cost plus excluded reader scar
Split escrowboth demands receive scoped partial useambiguity, proof burden, handler burden, or inspection heat risessplit_required or collision_ready
Reserve boundaryfuture body/route/lawful reader protectedcurrent sponsor, schedule, public, or management pressure risesfuture route preserved but current route narrowed
Borrow forwardcurrent crisis stabilizesfuture row exhausted, costlier, or blockedfuture slot debt or recovery-only scar
Public oxygen conversionpublic/fan legitimacy or oxygen balance improvessponsor pressure, refund audit, resentment, or inspection heat risespublic_only or oxygen_audit_required
Sponsor makegood conversionsponsor stop-loss or package pressure narrowscontract capture, public distrust, artist/claimant route costsponsor_only or unwind_required
Lawful proof conversionarchive/inspection/custody reader improvespublic delay, sponsor hostility, edit debt, proof burdenlawful_only or checksum_required
Refuse and recordfalse double-spend blockedimmediate pressure and handler burden risedisputed, costlier, or recovery_only
Quarantineunsafe inventory use preventedroute delayed, correction capacity lost, or trust narrowedquarantine_receipt_required
Default captureinstitution files firsthidden demand, excluded reader, false-clean inventoryblocked, costlier, sponsor_only, public_only, lawful_only, recovery_only, or collision_ready

No branch may create universal acceptance across sponsor, public, lawful, artist-boundary, editor, management, schedule, floor, and route-asset readers.

Reader and inventory state vocabulary

Accepted inventory states:

  • allocated
  • split
  • reserved
  • borrowed_forward
  • quarantined
  • exhausted
  • captured_default
  • false_available
  • double_spent
  • blocked
  • recovery_only
  • contradiction_pending

Accepted reader states:

  • accepted_with_cost
  • narrowed
  • hostile
  • blocked
  • sponsor_only
  • public_only
  • lawful_only
  • artist_boundary_only
  • management_only
  • split_required
  • collision_ready
  • recovery_only
  • contradiction_pending

A pass requires at least two readers to end in different states.

Counter contract

Every resolved or defaulted branch 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

Relevant surfaces:

  • recovery_inventory_pressure
  • recovery_inventory_double_spend_risk
  • correction_slot_capacity
  • ward_air_capacity
  • fan_oxygen_reserve
  • crew_rest_capacity
  • archive_proof_window_integrity
  • edit_checksum_lane_integrity
  • sponsor_makegood_inventory
  • public_contrition_capacity
  • custody_handler_burden
  • false_clean_inventory
  • management_pressure
  • schedule_pressure
  • inspection_heat
  • public_receipt_distrust
  • contract_capture
  • route_recovery_cost

Oracle assertions

A binding check should fail unless all assertions below are true.

  1. Primary links existobserves and observed_through arrays contain concrete wiki pages.
  2. Entry is state-triggered — entry comes from finite inventory collision, not fixed sequence position or raw count.
  3. Finite inventory is visible — row or explicit absence is named with kind, quantity state, owner, and boundary.
  4. Competing demands are visible — at least two demands or one demand plus meaningful explicit absence are present.
  5. Future readers are visible — at least two readers are typed and will consume the result.
  6. Ledger memory exists — card records inventory rows, demands, readers, default, selected state, and future effect.
  7. Allocation assignment exists — rite requires selected inventory, primary demand, excluded/scoped demand, boundary/proof, and future route.
  8. Branches diverge — at least six branch families differ by inventory state, reader state, cost, and future effect.
  9. No clean double-spend — one recovery row cannot satisfy every reader without a split, scar, or default.
  10. Sensitive inventory is protected — ward air, fan oxygen, public contrition, archive proof, and artist recovery cannot become clean sponsor/schedule/management inventory.
  11. Default is durable — capture names actor, hidden demand, excluded reader, false-clean claim, and future scar.
  12. Replay provenance exists — passing evidence includes seed, session, entry state, ledger, offered rite, branch runs, default/capture branch, counter deltas, and future reader states.
  13. No fixed trigger — no fixed turn, day/week interval, chapter quota, raw count, dashboard state, or lens-health trigger.

Progress metric

recoveryInventoryTriageProgress = 0..10:

  • 0: recovery capacity is abstract, hidden, or cleanly reusable.
  • 1: finite recovery inventory row or explicit absence exists.
  • 2: row has kind, quantity state, owner/absence, and boundary/absence.
  • 3: at least two competing demands or one demand plus meaningful explicit absence are visible.
  • 4: at least two future readers are visible.
  • 5: Recovery Inventory Ledger enters play with inventory rows, demands, readers, and default.
  • 6: Recovery Inventory Allocation exposes assignment slots.
  • 7: at least six branch families produce different inventory, reader, cost, and future effects.
  • 8: Recovery Inventory Capture Default records capture actor, hidden demand, excluded reader, false-clean claim, and future scar.
  • 9: no clean double-spend or universal recovery branch exists.
  • 10: downstream sponsor, public, lawful, artist, editor, management, schedule, floor, or route-asset reader consumes the allocation/default state.

Evidence shape

lens_id: storyteller.lens.recovery_inventory_triage.v1
session_id: lens-recovery-inventory-triage-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  finite_inventory_row_present_or_explicit_absence: true
  competing_demands_min: 2
  shared_inventory_or_explicit_absence_visible: true
  future_readers_min: 2
  default_if_unworked_present: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true
offered:
  card: storyteller.card.recovery_inventory_ledger.v1
  rite: storyteller.rite.recovery_inventory_allocation.v1
ledger:
  source_pressure: <source>
  inventory_rows:
    - inventory_id: <row>
      inventory_kind: <kind>
      quantity_state: <state>
      current_owner_or_absence: <owner_or_absence>
      protected_boundary_or_absence: <boundary_or_absence>
  competing_demands:
    - demand_id: <demand-a>
      requester: <requester>
      requested_inventory: <inventory>
      demanded_use: <use>
      future_reader: <reader>
    - demand_id: <demand-b>
      requester: <requester>
      requested_inventory: <same_or_incompatible_inventory>
      demanded_use: <use>
      future_reader: <reader>
branch_runs:
  valid_allocation:
    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_demand: <demand>
    excluded_or_scoped_demand: <demand>
    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_capture:
    event_seen_or_armed: storyteller.event.recovery_inventory_capture_default.v1
    capture_actor: sponsor | schedule_board | management_table | archive_queue | fan_oxygen_queue | ward_queue | editor_auto_patch | inspector | floor_manager | handler_absence | equivalent
    captured_use: <use>
    hidden_or_excluded_demand: <demand>
    excluded_reader: <reader>
    false_clean_claim: <claim>
    inventory_state_after: <state>
    future_route_effect: <effect>
assertions:
  - primary_links_exist
  - entry_is_state_triggered_by_finite_recovery_inventory_collision
  - finite_inventory_row_or_explicit_absence_visible
  - competing_demands_and_future_readers_visible
  - ledger_records_owner_boundary_primary_reader_excluded_reader_and_future_effect
  - allocation_rite_requires_inventory_primary_demand_excluded_demand_proof_boundary_and_future_route
  - branches_diverge_by_inventory_state_reader_state_cost_and_future_effect
  - no_clean_double_spend_or_universal_recovery_solution
  - default_capture_records_actor_hidden_demand_excluded_reader_false_clean_claim_and_future_scar
  - future_route_consumes_inventory_state
  - replay_evidence_records_seed_session_entry_ledger_branch_default_and_deltas
  - no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger

Failure cases

The lens must fail if any of these are true:

  • entry is triggered by fixed turn count, day/week interval, chapter quota, raw content count, dashboard status, or lens health;
  • recovery capacity is stored only as money, morale, time, or generic points;
  • no finite row or meaningful explicit absence is named;
  • there is only one demand and no future-reader collision;
  • no excluded or scoped reader is named;
  • one row satisfies every reader cleanly;
  • absent inventory is filed as available;
  • ward air, fan oxygen, public contrition, archive proof, or recovery body is treated as clean sponsor, schedule, edit, or management inventory;
  • allocation branch changes only pressure prose or budget;
  • default capture has no capture actor, hidden demand, false-clean claim, excluded reader, or future scar;
  • no downstream route, slot, reader, or asset consumes the allocation state.

Non-goals

  • Not a governance checklist.
  • Not a global economy dashboard.
  • Not raw count expansion.
  • Not a fixed upkeep phase.
  • Not sponsor makegood alone.
  • Not recovery ward discharge alone.
  • Not claimant intake, live floor, or cutroom priority alone.
  • Not valid unless scarce recovery rows create future playable consequences.