Route Asset Maintenance Roster / 路线资产维护花名册

Route Asset Maintenance Roster is a management card that records which already-won route assets are still fresh enough to use, which ones need upkeep, and which ones are degrading into recovery-only pressure.

It is the concrete card surface for 路线资产维护分诊机制. It should appear only when at least two assets remain potentially useful and at least one has state pressure that can change future route acceptance.

Card promise

The roster is not a collection checklist. It is an active pressure card.

A valid roster row must answer:

  • what asset was won;
  • where it came from;
  • who currently controls or contests it;
  • what maintenance pressure is attached;
  • which routes still accept it;
  • what happens if it is refreshed, rotated, degraded, frozen, cannibalized, recovered, or defaulted.

Required row schema

route_asset_maintenance_row:
  row_id: <stable row id>
  asset_id: <stable asset id>
  source_surface: <storyline, rite, event, or card id>
  source_session_id: <session id or explicit_absence>
  asset_kind: witness | public_receipt | lawful_copy | editor_cut | sponsor_package | fan_ledger | archive_docket | permit | memorial_copy | scarred_right | proof_object | equivalent
  asset_state_before: fresh_asset | maintenance_due | overexposed_asset | stale_asset | degraded_asset | frozen_asset | recovered_asset | cannibalized_asset | lost_asset | false_fresh_asset
  custodian: production | archive | inspector | fan_public | sponsor | editor | claimant | handler | pirate_relay | explicit_absence
  maintenance_pressure: payroll_due | public_doubt | lawful_expiry | edit_ambiguity | sponsor_capture | false_owner_risk | claimant_hostility | archive_opacity | overexposure | recovery_cost | route_wear | scar_restriction | equivalent
  accepted_routes: []
  rejected_or_costlier_routes: []
  valid_responses: []
  default_if_unmaintained: <state or event>

The card fails as design if it stores only a title, flavor note, or passive inventory count.

Card states

Card stateMeaningPlayer-facing consequence
roster_closedNo maintenance pressure is currently live.Do not offer this card.
roster_watchlistedAssets exist but no route currently depends on freshness.Keep provenance; no filler offer.
maintenance_roster_openAt least two assets exist and at least one has due pressure.Offer triage response.
asset_selected_for_refreshPlayer has chosen one row to refresh or recover.Requires handler/proof/cost.
asset_rotated_outPlayer preserves one asset by using another.Source route remains possible but substitute gains wear.
asset_degraded_in_usePlayer accepts weaker use.Current route gets partial relief with scar/default risk.
asset_frozen_for_recoveryPlayer blocks current use to preserve future recovery.Current route narrows; future recovery stays named.
asset_cannibalizedOne asset is burned to sustain another.Harmed claimant and lost route effect are recorded.
maintenance_default_readyRoster was hidden, under-supported, or falsely cleared.Default event may fire or future route rejects asset.

Valid asset families

This card can store rows produced by:

Branch rows

Refresh row

response: refresh_custody
requires_any: [handler, receipt, lawful_seal, checksum, public_witness, payroll_support, archive_bridge, sponsor_waiver]
asset_state_after: fresh_asset | recovered_asset | maintenance_due
must_record_cost: true

Rotate row

response: rotate_use
preserved_asset_state_after: fresh_asset | frozen_asset
substitute_asset_state_after: maintenance_due | overexposed_asset | stale_asset | degraded_asset
future_route_effect: changed_by_asset_identity

Degrade row

response: accept_degraded_use
current_relief: partial
asset_state_after: degraded_asset | false_fresh_asset | stale_asset
armed_default: true

Freeze row

response: freeze_for_recovery
current_route_effect: blocked | delayed | weaker | recovery_only
asset_state_after: frozen_asset
recovery_bridge_required: <named bridge>

Cannibalize row

response: cannibalize
source_asset_state_after: cannibalized_asset | lost_asset | degraded_asset
maintained_asset_state_after: fresh_asset | recovered_asset
harmed_claimant_recorded: true

Counter rows

Each roster resolution should record at least three state/counter deltas, including relief, cost, and future route effect.

Common row deltas:

  • route_asset_freshness
  • route_asset_wear
  • asset_staleness
  • asset_recovery_cost
  • future_route_acceptance
  • custody_clarity
  • public_receipt_legitimacy
  • public_receipt_distrust
  • lawful_admissibility
  • inspection_heat
  • archive_debt
  • edit_debt
  • handler_burden
  • witness_payroll_due
  • sponsor_stop_loss_pressure
  • contract_capture
  • fan_oxygen_resentment
  • false_owner_pressure

Replay evidence shape

card: storyteller.card.route_asset_maintenance_roster.v1
entry_state:
  trigger_kind: state_pressure
  roster_assets_min: 2
  maintenance_due_min: 1
  no_fixed_turn_trigger: true
rows:
  - row_id: <row>
    asset_id: <asset>
    source_surface: <source>
    asset_state_before: <state>
    custodian: <custodian>
    maintenance_pressure: <pressure>
    accepted_routes: []
    rejected_or_costlier_routes: []
selection:
  selected_row_id: <row>
  selected_response: refresh_custody | rotate_use | accept_degraded_use | freeze_for_recovery | cannibalize | default_selects
result:
  asset_state_after: <state>
  counter_deltas: {}
  future_route_effect: <effect>

Non-goals

  • Not an inventory screen.
  • Not a raw count of unlocked content.
  • Not a fixed upkeep timer.
  • Not valid if every row is always assignable.
  • Not valid if a degraded row lacks a recovery or loss consequence.