Route Loadout Compatibility / 路线装配兼容线
Route Loadout Compatibility is the pressure storyline for the moment a future route asks production to assemble several already-existing route assets into one route bundle.
Storyteller already has strong surfaces for asset maintenance, discontinuance, scar convergence, ledger reconciliation, feed ranking, and producer alibi. The remaining gap is not whether a single asset survives. It is whether the selected assets can coexist in the same route without laundering their scopes into a clean bundle.
Primary playable question
When a route needs two or more assets, does the producer reconcile the bundle with scope, swap one asset, narrow the route use, split the loadout, quarantine the combination, sacrifice a slot, or let the fastest narrator declare the loadout compatible?
The answer must name the requested route, each slot, each asset state, the compatibility conflict, harmed reader or claimant, selected posture, cost, and future route effect.
Gap diagnosis
The current mesh already handles adjacent problems:
- 路线资产维护分诊线 keeps prior assets from staying fresh forever.
- 路线停办登记线 prevents partially recoverable routes from disappearing cleanly.
- 危机台账对表线 prevents one ledger’s relief from clearing another ledger without a row.
- 伤痕汇流台线 prevents a scarred stabilizer from becoming a universal clean key.
- 排名流羁押线 makes exposure priority a custody object.
- 制作人抗辩召回线 makes management intent recallable by later readers.
The unfilled execution risk is composition. A route may ask for a public proof, lawful bridge, sponsor release, editor checksum, protected witness, and route asset in the same package. Each can be valid alone while the bundle is false.
Bound content pack
This storyline binds:
State-triggered entry
Open this storyline only when all required state is visible:
entry_state_required:
trigger_kind: state_pressure
requested_route_or_rite_present: true
required_asset_slots_min: 2
asset_candidates_present_or_explicit_absence: true
each_asset_has_state: true
each_asset_has_custodian_or_explicit_absence: true
compatibility_risk_or_explicit_no_risk_visible: true
harmed_reader_or_claimant_visible_or_explicit_absence: true
future_route_or_reader_consumes_loadout_state: true
player_can_reconcile_swap_narrow_split_quarantine_sacrifice_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_asset_count_trigger: true
no_dashboard_or_lens_health_trigger: trueValid entry examples:
- a public correction route asks for both a lawful seal and a fan receipt, but the seal is lawful-only;
- a sponsor package wants to bundle a makegood release with a public fan table;
- a recovery route asks for an editor checksum and archive copy that certify different objects;
- a memorial route asks to expose a protected witness beside a sponsor-safe voice release;
- a carrier is assigned two custody objects that cannot be held together;
- a route asset was registered as recovery-only but is loaded as fresh;
- a false owner controls one slot and would poison the whole route if accepted.
Storyline spine
Beat 1 — A route requests a bundle
A future route, rite, correction, lawful bridge, public table, sponsor package, recovery lane, or broadcast slot asks for at least two route assets.
The game creates or updates 路线装配清单.
Beat 2 — Slot scope becomes visible
Each slot names its required role, candidate asset, current state, custodian or explicit absence, accepted scope, and source surface.
The route cannot treat asset_available as bundle_compatible.
Beat 3 — Compatibility conflict is named
At least one pair is checked for reader scope, custody owner, proof truth, checksum/archive mismatch, sponsor/public mismatch, lawful/artist boundary, witness protection, carrier capacity, stale freshness, or false-owner pressure.
If no conflict exists, the manifest still records explicit no-risk state so future readers can distinguish valid compatibility from uninspected compatibility.
Beat 4 — The player reconciles or defaults
Run 路线装配对表. The player chooses:
- reconcile with scope;
- swap asset;
- narrow route use;
- split loadout;
- quarantine combination;
- sacrifice slot;
- allow incompatible default.
Beat 5 — Future play consumes loadout state
A branch is complete only when future play reads the result: route accepted with scope, bridge required, public-only, lawful-only, sponsor-only, split required, costlier, hostile, blocked, contradiction-pending, or recovery-only.
If a future route consumes a multi-asset bundle with no manifest or hidden conflict, 不兼容装配默认 fires or arms.
Branch model
Branch A — Reconcile with scope
selected_posture: reconcile_with_scope
loadout_state_after: compatible_with_scope
relief_any:
- route_access_unlocked
- proof_bundle_legible
- custody_conflict_contained
cost_any:
- handler_burden_up
- inspection_heat_up
- public_receipt_distrust_up
future_effect_any:
- accepted_with_scope
- bridge_requiredBranch B — Swap asset
selected_posture: swap_asset
loadout_state_after: substituted
relief_any:
- incompatibility_down
- route_access_unlocked
cost_any:
- substitute_wear_up
- old_asset_staleness_or_notice_up
- route_asset_pressure_up
future_effect_any:
- costlier
- substitute_required
- old_asset_recovery_or_notice_requiredBranch C — Narrow route use
selected_posture: narrow_route_use
loadout_state_after: narrowed
relief_any:
- one_reader_route_opens
- contradiction_risk_down
cost_any:
- excluded_reader_resentment_up
- future_reconciliation_cost_up
future_effect_any:
- public_only
- lawful_only
- sponsor_only
- route_costlierBranch D — Split loadout
selected_posture: split_loadout
loadout_state_after: split_required
relief_any:
- incompatible_readers_can_proceed_separately
- private_capture_down
cost_any:
- schedule_pressure_up
- source_ambiguity_up
- carrier_burden_up
future_effect_any:
- split_required
- reconciliation_requiredBranch E — Quarantine combination
selected_posture: quarantine_combination
loadout_state_after: quarantined
relief_any:
- false_compatible_use_down
- archive_fraud_down
- broadcast_reality_drift_down
cost_any:
- route_delay_up
- sponsor_stop_loss_pressure_up
- fan_oxygen_resentment_up
future_effect_any:
- bridge_required
- recovery_onlyBranch F — Sacrifice slot
selected_posture: sacrifice_slot
loadout_state_after: slot_sacrificed
relief_any:
- higher_value_route_survives
- immediate_pressure_down
cost_any:
- sacrificed_asset_lost_or_hostile
- claimant_retaliation_up
- route_asset_integrity_down
future_effect_any:
- costlier
- recovery_only_for_sacrificed_asset
- hostile_claim_armedBranch G — Incompatible default
selected_posture: allow_incompatible_default
loadout_state_after: false_compatible | captured | blocked | recovery_only
emits_or_arms: storyteller.event.incompatible_loadout_default.v1
cost_any:
- false_clean_bundle_up
- public_receipt_distrust_up
- broadcast_reality_drift_up
future_effect_any:
- hostile
- captured
- blocked
- recovery_only
- contradiction_pendingCharacter hooks
- Shen Luo can re-scope a sponsor/legal bundle, but raises contract capture or public distrust.
- Yu Lan can force public manifest visibility, but exposes witnesses and raises sponsor pressure.
- Han Yanshuang can mark a loadout lawful-only, but creates bureau favor debt and public delay.
- Baiya can validate or reject checksum/archive compatibility, but increases edit debt or source ambiguity.
Counter contract
Every branch must change at least three surfaces: one relief, one cost, and one future route effect.
Primary surfaces:
loadout_integrityroute_asset_integrityasset_slot_pressurecompatibility_conflictcustody_clarityhandler_burdencarrier_burdeninspection_heatsponsor_stop_loss_pressurefan_oxygen_resentmentpublic_receipt_legitimacypublic_receipt_distrustarchive_debtedit_debtsource_ambiguitybroadcast_reality_driftfuture_route_acceptancerecovery_route_cost
Missability and recovery
This storyline is missed when a multi-asset route unlocks from raw asset availability, when conflicting slots are hidden, when a harmed reader is omitted, when stale/recovery assets are loaded as fresh, when sponsor/lawful/editor proof is treated as universal consent, or when future play consumes a bundle without reading loadout state.
Recovery is allowed only with scar:
- rebuild the manifest;
- split the loadout;
- substitute an asset and record what the old asset becomes;
- publish a scope note;
- add a lawful, public, sponsor, artist, witness-protection, or archive bridge;
- quarantine the route;
- sacrifice a slot with route-asset consequence;
- convert the route to recovery-only.
Replay/session evidence shape
storyline_id: storyteller.storyline.route_loadout_compatibility.v1
session_id: lens-route-loadout-compatibility-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
requested_route_or_rite_present: true
required_asset_slots_min: 2
asset_states_visible: true
compatibility_risk_or_explicit_no_risk_visible: true
harmed_reader_or_claimant_visible_or_explicit_absence: true
future_route_or_reader_consumes_loadout_state: true
no_fixed_turn_trigger: true
manifest:
card: storyteller.card.route_loadout_manifest.v1
row_id: <row>
requested_route_or_rite: <id>
asset_slots:
- slot_id: <slot>
candidate_asset: <asset or explicit_absence>
asset_state_before: <state>
custodian_or_absence: <custodian or explicit_absence>
conflict_kind: <kind or explicit_no_risk>
offered:
rite: storyteller.rite.route_loadout_reconciliation.v1
branch_result:
selected_posture: reconcile_with_scope | swap_asset | narrow_route_use | split_loadout | quarantine_combination | sacrifice_slot | allow_incompatible_default
loadout_state_after: <state>
future_route_effect: <effect>
emitted_event: storyteller.event.incompatible_loadout_default.v1 | none
counter_deltas:
relief: []
cost: []
future: []
assertions:
- individual_asset_validity_not_bundle_validity
- slot_scope_and_custodian_visible
- compatibility_conflict_visible_or_explicit_no_risk
- harmed_reader_or_claimant_visible_or_explicit_absence
- branch_postures_diverge
- success_has_cost
- default_is_durable
- future_route_consumes_loadout_state
- no_raw_asset_count_or_fixed_turn_triggerNon-goals
- Not an inventory optimizer.
- Not a raw asset-count gate.
- Not a fixed-route checklist.
- Not a dashboard or governance page.
- Not filler branch volume.
- Not a replacement for asset maintenance, discontinuance, ledger reconciliation, scar convergence, feed ranking, alibi recall, claimant collision, or reader collision.
- Not valid if every individually valid asset can be bundled into a clean route for free.
Downstream afteruse
Route Loadout Afteruse Receipt handles the later reader who tries to spend an old manifest as universal route readiness. This parent line owns the first compatibility result; the afteruse receipt owns later citation, reader restriction, bridge, stale-slot reconciliation, split, quarantine, and false-clean reuse.