Salvage Floor Assignment / 残存底线指派机制
Salvage Floor Assignment is the mechanism that turns the lowest remaining recoverable object of a discontinued route into assignable, scoped, replay-visible state.
It sits after 路线停办登记机制. That mechanism records whether a stopped route still has a salvage floor. This mechanism decides who may hold, cite, pledge, retire, split, quarantine, or foreclose that floor when a later reader tries to consume it.
Design promise
A salvage floor is not clean proof and not route deletion. It is a minimum playable remnant.
The mechanism must answer:
- What floor survived?
- Which discontinued route or route asset produced it?
- Who wants to use it now?
- Who is harmed or still owed notice?
- Who will hold the floor after assignment?
- What can the future reader do with it?
- What scar remains?
If those answers are missing, 残存底线扣押默认 owns the downstream state.
Entry conditions
Open the mechanism when all are true:
entry_conditions:
trigger_kind: state_pressure
discontinued_or_recovery_only_route_visible: true
source_discontinuance_row_visible_or_explicit_absence: true
salvage_floor_present_or_explicit_absence: true
future_reader_or_route_requests_use: true
route_not_cleanly_terminal: true
requesting_reader_visible: true
harmed_or_owed_reader_visible_or_explicit_absence: true
player_response_available: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_route_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe trigger is the later use request, not time passing and not the existence of many discontinued routes.
Core objects
- 残存底线案卷 records source route, floor kind, holder, reader, harmed reader, selected posture, relief, cost, and future effect.
- 残存底线指派听证 resolves assignment.
- 残存底线扣押默认 handles hidden, false-clean, or narrator-captured floors.
State model
salvage_floor_state:
source_state_after:
- registered
- paused_under_notice
- transferred
- recovery_only
- publicly_abandoned
- privately_suppressed
- reopened_with_bond
- defaulted
floor_kind:
- evidence_stub
- public_notice
- lawful_seal
- callback_receipt
- fan_refund_path
- witness_payroll
- route_asset_hold
- recovery_only_marker
- explicit_absence
floor_state:
- unassigned
- carried
- escrowed
- public_only
- lawful_only
- sponsor_only
- split_required
- pledged
- retired
- quarantined
- suppressed
- captured
- false_clean
- recovery_only
- blockedAssignment branches
Archive escrow
Assign the floor to archive, inspector, lawful seal, or custody desk.
- Relief: source trace survives; unlawful deletion is blocked.
- Cost: public notice delay, archive debt, inspection heat, correction slot pressure.
- Future: lawful-only, archive gate, public addendum, or checksum requirement.
Public notice floor
Assign the floor to public table, refund path, fan receipt, memorial queue, or access audience.
- Relief: private capture is blocked; public memory survives.
- Cost: sponsor pressure, fan oxygen resentment, lawful ambiguity, public grief.
- Future: public-only, lawful addendum, sponsor route costlier.
Carrier hold
Assign the floor to a worker, claimant, proxy, route asset, witness row, or proof carrier.
- Relief: callback or recovery remains callable.
- Cost: carrier exposure, handler burden, witness reprisal risk, claimant leverage.
- Future: carrier required, protection required, hostile if carrier breaks.
Bond and reopen
Pledge the floor to reopen a route.
- Relief: immediate block drops; route can continue conditionally.
- Cost: license encumbrance, sponsor capture, recovery indemnity pressure, future recall cost.
- Future: bond required, accepted with cost, costlier reopen.
Split floor
Scope the floor across incompatible readers.
- Relief: one selected reader can proceed.
- Cost: source ambiguity, omitted-reader hostility, future proof addendum.
- Future: split required, reader-specific acceptance, costlier route.
Retire as scar
Retire the floor into ending, memorial, or public scar state.
- Relief: false clean reopen is blocked.
- Cost: clean route return is blocked; memorial and ending scar pressure rise.
- Future: ending scar pending, recovery-only, route blocked with notice.
Quarantine floor
Preserve but block unsafe use.
- Relief: false owner, contradiction, or witness harm is blocked.
- Cost: route delay, schedule pressure, recovery-only pressure.
- Future: blocked until review, recovery-only, proof required.
Suppress or default
Hide, misstate, or let another narrator capture the floor.
- Relief: immediate assignment burden can drop.
- Cost: hidden floor pressure, omitted-reader hostility, broadcast-reality drift.
- Future: hostile, captured, blocked, contradiction-pending, recovery-only.
Reader rules
A salvage floor can satisfy only the reader scope it was assigned to. It cannot cleanly satisfy all of these at once:
- sponsor;
- lawful/archive;
- public/fan;
- artist boundary;
- worker carrier;
- claimant;
- route asset;
- producer license;
- broadcast reality;
- memorial or ending reader.
If a future route tries to treat an assigned floor as universal, reopen the docket or fire the foreclosure default.
Boundary with adjacent systems
boundary:
route_discontinuance_register:
role: records route stop and initial salvage floor
not_responsible_for: downstream assignment of the floor
recovery_indemnity_shelf:
role: names future recourse holder after stabilization
not_responsible_for: deciding whether a discontinued route floor can be used by a future reader
evidence_carryover_fork:
role: lets prior proof return as current pressure
not_responsible_for: assigning a route discontinuance salvage floor
availability_reader_collision:
role: scopes access readers
not_responsible_for: preserving or foreclosing the floor object itselfThe implementation may link to these systems, but it cannot use them to erase the floor row.
Counter contract
Every valid branch must mutate at least:
counter_contract:
floor_state_changes: true
relief_min: 1
cost_min: 1
future_reader_or_route_effect_min: 1Relevant surfaces:
salvage_floor_pressurefloor_holder_exposurefloor_foreclosure_pressureroute_reopen_costrecovery_only_pressurearchive_debtinspection_heatpublic_notice_delayfan_oxygen_resentmentsponsor_stop_loss_pressurecontract_capturehandler_burdencarrier_exposurewitness_reprisal_risksource_ambiguityomitted_reader_hostilityproducer_license_encumbranceending_scar_pressurebroadcast_reality_drift
Replay evidence shape
mechanic: storyteller.mechanic.salvage_floor_assignment.v1
session_id: lens-salvage-floor-assignment-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
source_discontinuance_row_visible_or_explicit_absence: true
salvage_floor_present_or_explicit_absence: true
future_reader_or_route_requests_use: true
no_fixed_turn_trigger: true
floor_row:
docket: storyteller.card.salvage_floor_docket.v1
row_id: <row>
salvage_floor_kind: <kind>
floor_state_before: <state>
requesting_reader: <reader>
harmed_or_owed_reader: <reader or explicit_absence>
assignment:
rite: storyteller.rite.salvage_floor_assignment_hearing.v1
selected_posture: archive_escrow | public_notice_floor | carrier_hold | bond_and_reopen | split_floor | retire_as_scar | quarantine_floor | suppress_or_default
handler_or_absence: <handler or explicit_absence>
proof_bridge_or_absence: <proof or explicit_absence>
holder_or_absence: <holder or explicit_absence>
cost_or_collateral_or_absence: <cost or explicit_absence>
outcome:
floor_state_after: <state>
future_reader_or_route_effect: <effect>
emitted_event: storyteller.event.salvage_floor_foreclosure_default.v1 | none_if_valid
counter_deltas: {}Non-goals
- Not route cancellation.
- Not a generic appeal system.
- Not raw route-count cleanup.
- Not a finance dashboard.
- Not a clean recovery mechanism.
- Not valid if the floor has no holder, no harmed reader, no assignment posture, and no future effect.