Salvage Loadout Recall / 残存装配召回线
Salvage Loadout Recall is the pressure storyline for the moment a later route loadout tries to use the minimum remaining floor of a stopped, discontinued, recovery-only, or scar-retired route.
残存底线指派线 makes the floor itself playable. 路线装配兼容线 makes multi-asset bundles playable. The missing seam is what happens when those two correct surfaces meet: a salvage floor can be a valid remaining object, but it is not automatically a fresh compatible asset slot.
This storyline turns that recall into playable management work instead of letting a route bundle launder a discontinued route’s residue.
Primary playable question
When a route bundle wants to consume a salvage floor, does the producer re-scope the floor into the slot, bridge it with proof, substitute it, split it away from the loadout, reopen it with bond, retire it as scar, quarantine it, or let the fastest narrator file it as clean?
A valid answer must name the source floor, source route, floor state, holder, original floor posture, route slot, requested clean claim, harmed or owed reader, selected posture, cost, and future route effect.
Gap diagnosis
The current mesh is green around these surfaces:
- route discontinuance preserves a salvage floor rather than deleting a stopped route;
- salvage floor assignment decides floor holder, reader scope, foreclosure risk, scar, and recovery-only state;
- route loadout compatibility prevents individually valid assets from becoming a clean bundle by raw count;
- recovery indemnity decides who carries later recourse after a stabilized route;
- evidence carryover and replay-resume collision preserve old proof state when it returns.
The uncovered execution risk sits between salvage and loadout: a future route can load salvage_floor_present as if it were asset_slot_ready. That creates a false clean route without ever asking whether the floor was public-only, lawful-only, carried, pledged, split, retired, quarantined, or recovery-only.
Bound content pack
This storyline uses existing concrete implementation surfaces instead of adding placeholder cards:
- 残存装配召回机制 defines the cross-surface state machine.
- 残存底线案卷 records the floor and its previous assignment.
- 路线装配清单 records the slot attempting to consume the floor.
- 残存底线指派听证 and 路线装配对表 provide the assignable actions.
- 残存底线扣押默认 and 不兼容装配默认 provide durable failure pressure.
State-triggered entry
Open this storyline only from live state pressure:
entry_state_required:
trigger_kind: state_pressure
route_loadout_manifest_present_or_requested: true
salvage_floor_present_or_explicit_absence: true
floor_source_route_discontinued_or_recovery_only: true
loadout_slot_attempts_to_use_floor: true
floor_state_before_visible: true
floor_holder_or_explicit_absence_visible: true
original_floor_assignment_posture_or_explicit_absence_visible: true
harmed_or_owed_reader_visible_or_explicit_absence: true
future_reader_or_route_consumes_floor_slot: true
player_can_rescope_bridge_substitute_split_bond_retire_quarantine_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_asset_count_trigger: true
no_raw_route_count_trigger: true
no_dashboard_or_lens_health_trigger: trueValid entry examples:
- a route loadout uses a public notice floor inside a sponsor package;
- a lawful-only salvage seal is loaded as public truth;
- a carried witness-payroll floor is used without protection;
- a recovery-only marker is loaded as a fresh route key;
- a split floor is collapsed into one clean proof bundle;
- a retired floor is used to reopen a route without memorial or ending scar;
- a pledged floor is consumed after collateral or underwriter has gone absent;
- an absent holder is treated as implicit consent.
Storyline spine
Beat 1 — A route wants a floor as a slot
A future route, package, correction, lawful bridge, fan refund lane, sponsor makegood, memorial path, callback, or ending-adjacent route asks for a loadout slot. The candidate asset is not a fresh asset: it is a salvage floor from a stopped route.
Beat 2 — The floor is recalled
The game reads 残存底线案卷 before the route accepts the slot.
The docket must reveal the floor kind, state before, holder or explicit absence, source discontinuance row, requesting reader, harmed or owed reader, and original assignment posture.
Beat 3 — The loadout records the floor as scoped
The game updates 路线装配清单 with a slot that names the salvage floor and its restriction.
The route cannot write asset_available. It must write floor_loaded_with_scope, floor_needs_bridge, floor_substituted, floor_split_out, floor_bond_required, floor_retired, floor_quarantined, or false_floor_slot.
Beat 4 — The producer resolves the cross-pressure
The producer chooses one posture:
- re-scope floor slot;
- bridge floor to loadout;
- substitute floor slot;
- split floor from loadout;
- bond reopen slot;
- retire floor from loadout;
- quarantine floor slot;
- accept false loadout default.
Beat 5 — Future play consumes the result
The storyline is complete only when a later reader, route, rite, desk, claimant, memorial, ending scar, archive reader, public reader, sponsor reader, worker reader, or broadcast-reality row consumes the floor-slot state.
If future play consumes the slot without the recalled floor state, one or both defaults fire or remain armed.
Branch map
Branch A — Re-scope floor slot
The floor remains in the loadout, but its scope travels with it.
selected_posture: rescope_floor_slot
floor_state_after: scoped_for_slot
loadout_state_after: compatible_with_floor_scope
relief_any:
- route_access_unlocked
- false_floor_reuse_down
- floor_holder_visibility_up
cost_any:
- excluded_reader_hostility_up
- sponsor_or_public_friction_up
- handler_burden_up
future_effect_any:
- accepted_with_scope
- public_only
- lawful_only
- sponsor_onlyBranch B — Bridge floor to loadout
The floor can support the route only after an explicit proof bridge.
selected_posture: bridge_floor_to_loadout
floor_state_after: bridged
loadout_state_after: bridge_required
relief_any:
- route_bundle_legibility_up
- custody_clarity_up
cost_any:
- archive_debt_up
- inspection_heat_up
- public_receipt_debt_up
- handler_burden_up
future_effect_any:
- costlier
- bridge_required
- lawful_annex_or_public_addendum_requiredBranch C — Substitute floor slot
The floor is removed from the bundle and another asset carries the slot.
selected_posture: substitute_floor_slot
floor_state_after: floor_residue_recorded
loadout_state_after: substituted
relief_any:
- compatibility_conflict_down
- route_access_unlocked
cost_any:
- substitute_wear_up
- old_floor_scar_pressure_up
- route_asset_pressure_up
future_effect_any:
- substituted_slot
- old_floor_notice_required
- old_floor_recovery_onlyBranch D — Split floor from loadout
The floor can serve one reader but cannot sit inside the shared bundle.
selected_posture: split_floor_from_loadout
floor_state_after: split_out
loadout_state_after: split_required
relief_any:
- incompatible_readers_separated
- private_capture_down
cost_any:
- schedule_pressure_up
- source_ambiguity_up
- carrier_burden_up
future_effect_any:
- route_forked
- split_required
- future_reconciliation_requiredBranch E — Bond reopen slot
The floor can reopen limited route use only if collateral, underwriter, and recall reader remain visible.
selected_posture: bond_reopen_slot
floor_state_after: reopened_with_bond
loadout_state_after: bond_required
relief_any:
- route_reopen_possible
- floor_value_preserved
cost_any:
- producer_license_encumbrance_up
- sponsor_capture_up
- recovery_indemnity_pressure_up
future_effect_any:
- bond_required
- recall_reader_armed
- costlierBranch F — Retire floor from loadout
The floor cannot be used as a slot; it becomes scar, memorial, public, recovery, or ending state.
selected_posture: retire_floor_from_loadout
floor_state_after: retired_as_scar
loadout_state_after: slot_removed_or_route_narrowed
relief_any:
- false_reopen_blocked
- ending_or_memorial_scar_legibility_up
cost_any:
- route_access_blocked_or_narrowed
- fan_or_public_grief_pressure_up
- sponsor_stop_loss_pressure_up
future_effect_any:
- recovery_only
- scar_inherited
- route_blocked_until_substituteBranch G — Quarantine floor slot
The floor and route slot are preserved but cannot be consumed until review.
selected_posture: quarantine_floor_slot
floor_state_after: quarantined
loadout_state_after: blocked_until_floor_review
relief_any:
- unsafe_reuse_down
- false_owner_pressure_down
cost_any:
- route_delay_up
- route_asset_pressure_up
- management_pressure_up
future_effect_any:
- blocked
- recovery_only
- proof_review_requiredBranch H — False loadout default
The floor is filed as a clean compatible slot.
selected_posture: accept_false_loadout_default
floor_state_after: false_clean_floor_slot | captured | hostile | foreclosure_pending | recovery_only
loadout_state_after: false_compatible | captured | contradiction_pending | blocked | recovery_only
emitted_or_armed_any:
- storyteller.event.salvage_floor_foreclosure_default.v1
- storyteller.event.incompatible_loadout_default.v1
cost_any:
- floor_foreclosure_pressure_up
- false_clean_bundle_up
- omitted_reader_hostility_up
future_effect_any:
- blocked
- hostile
- contradiction_pending
- sponsor_unwind_required
- public_addendum_required
- lawful_annex_required
- recovery_onlyCounter contract
Every branch must mutate at least three surfaces:
- floor or holder state;
- loadout or route slot state;
- future reader, route, scar, debt, or recovery effect.
Primary surfaces:
salvage_floor_pressurefloor_holder_exposurefloor_foreclosure_pressureloadout_integrityasset_slot_pressurecompatibility_conflictroute_reopen_costrecovery_only_pressurearchive_debtinspection_heatpublic_notice_delayfan_oxygen_resentmentsponsor_stop_loss_pressurecontract_capturecarrier_exposurewitness_reprisal_risksource_ambiguityomitted_reader_hostilityproducer_license_encumbranceending_scar_pressurebroadcast_reality_drift
Integration notes
- With 残存底线指派线, floor assignment is not final until future loadout use preserves holder and scope.
- With 路线装配兼容线, slot compatibility must read floor state, not just asset presence.
- With 复原追偿搁架线, bond reopen and floor substitution can create a new recourse holder.
- With 导出证据回流分岔线, a returned proof floor must carry prior outcome and current harmed reader.
- With 复盘接手冲突线, a resumed packet cannot show a floor slot as ready when the replay capsule preserved it as recovery-only or scoped.
- With 洁净结局扣押链, a retired or scarred floor can block a private clean terminal route.
Replay/session evidence shape
storyline_id: storyteller.storyline.salvage_loadout_recall.v1
session_id: lens-salvage-loadout-recall-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
route_loadout_manifest_present_or_requested: true
salvage_floor_present_or_explicit_absence: true
floor_source_route_discontinued_or_recovery_only: true
loadout_slot_attempts_to_use_floor: true
floor_state_before_visible: true
floor_holder_or_explicit_absence_visible: true
future_reader_or_route_consumes_floor_slot: true
no_fixed_turn_trigger: true
source_floor:
card: storyteller.card.salvage_floor_docket.v1
source_route_or_asset_id: <route asset or explicit_absence>
floor_kind: <kind>
floor_state_before: <state>
floor_holder_or_absence: <holder or explicit_absence>
original_assignment_posture_or_absence: <posture or explicit_absence>
harmed_or_owed_reader_or_absence: <reader or explicit_absence>
loadout_use:
card: storyteller.card.route_loadout_manifest.v1
requested_route_or_rite: <route rite package or explicit_absence>
slot_id: <slot>
requested_clean_claim: <claim>
future_reader: <reader>
compatibility_risk: <risk or explicit_no_risk>
resolution:
selected_posture: rescope_floor_slot | bridge_floor_to_loadout | substitute_floor_slot | split_floor_from_loadout | bond_reopen_slot | retire_floor_from_loadout | quarantine_floor_slot | accept_false_loadout_default
floor_state_after: <state>
loadout_state_after: <state>
future_route_effect: <effect>
emitted_event_or_absence: storyteller.event.salvage_floor_foreclosure_default.v1 | storyteller.event.incompatible_loadout_default.v1 | both | explicit_absence
counter_deltas:
relief: []
cost: []
future: []
assertions:
- salvage_floor_is_not_clean_asset_slot
- floor_assignment_travels_into_loadout_state
- holder_and_harmed_reader_visible_or_explicit_absence
- branch_postures_diverge
- success_has_cost
- substitution_leaves_residue
- default_is_dual_and_durable
- future_route_consumes_floor_slot_state
- no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_triggerMissability and recovery
This storyline is missed when implementation:
- lets a salvage floor count as generic asset availability;
- hides the source discontinuance row;
- hides original floor assignment posture;
- hides floor holder or harmed reader;
- loads public-only, lawful-only, sponsor-only, split, pledged, retired, quarantined, or recovery-only floor state as fresh;
- substitutes the floor without residue;
- fires only one generic warning when both floor foreclosure and loadout incompatibility are relevant;
- triggers from fixed timing, route count, asset count, dashboard state, or lens health.
Recovery is allowed only with visible scar:
- rebuild the loadout manifest;
- reopen the salvage floor docket;
- add public, lawful, sponsor, archive, worker, claimant, memorial, or ending addendum;
- substitute the slot and keep old-floor residue;
- split the route;
- require bond or indemnity shelf;
- quarantine the floor;
- convert route to costlier, blocked, hostile, contradiction-pending, scar-inherited, or recovery-only.
Non-goals
- Not a new route cancellation system.
- Not an inventory optimizer.
- Not a raw asset-count check.
- Not a generic aftershock.
- Not a dashboard or governance page.
- Not valid if a discontinued route’s minimum floor can unlock a future route cleanly.