Route Discontinuance Register / 路线停办登记线
Route Discontinuance Register makes a route stop playable without pretending the route never existed. The implemented v1 lane opens only after Lost and Found Night has completed its company-transfer choice and the Shen Mansheng custody window has been resolved. It begins from a pending company-cleanup source row, lets the producer register what survives, and materializes a downstream Salvage Floor row only if the player chooses notice_pause.
Fixed executable row
sourceGate:
required_completion_flag: complete_storyteller-rite-d17-lost-and-found-night
required_pending_flag: storyteller_d17_company_cleanup_pending
replay_precondition_event: storyteller.event.shen_mansheng_company_custody_window.v1
fixedSourceRow:
row_id: route-discontinuance.d17.company_cleanup_open
source_rite: storyteller-rite-d17-lost-and-found-night
source_choice: accept_company_lost_property_transfer
source_pending_flag: storyteller_d17_company_cleanup_pending
source_row_id: transfer.company_cleanup.d17
source_surface: route_asset_custody
source_route_or_asset: route.d17.lost_property_night
source_state: company_cleanup_transfer_open
discontinuance_pressure: sponsor_capture
partial_viability: viable_with_public_notice
claimant: public_fan
harmed_reader: public_fan
carrier_before: card-storyteller-shen-mansheng
handler: producer
proof_bridge: public_notice
selected_posture: unselected
state_after: pending_selected_posture
future_reader: memorial_receipt_route
future_effect: pending_selected_posture
noticePauseMaterialization:
row_id: route-discontinuance.d17.public_pause
source_row_id: route-discontinuance.d17.company_cleanup_open
selected_posture: notice_pause
state_after: paused_under_notice
future_effect: public_only
carrier_after: public_table
salvage_floor_after: public_notice
required_runtime_flags:
- route_discontinuance.branch.notice_pause
- route_discontinuance.state.paused_under_notice
- future_route.public_only
downstreamConsumer:
card: storyteller.card.salvage_floor_docket.v1
row_id: floor.public_notice.d17
discontinuance_register_row: route-discontinuance.d17.public_pause
eligible_only_when_branch: notice_pause
required_source_state: paused_under_notice
future_route: memorial_receipt_route
required_runtime_flags:
- route_discontinuance.branch.notice_pause
- route_discontinuance.state.paused_under_notice
- future_route.public_onlyThe source row and materialized notice row are different objects. route-discontinuance.d17.company_cleanup_open is the static input and carries no selected outcome. route-discontinuance.d17.public_pause exists only after the three exact notice-pause flags are present. The other seven rite branches must never expose it. Replay session IDs and timestamps are evidence provenance only and never become route keys, trigger conditions, or assignment values. card-storyteller-shen-mansheng records an existing company-custody claim; it does not grant Shen Mansheng ownership of the route.
Story spine
- The player completes
storyteller-rite-d17-lost-and-found-nightwith choice index1,accept_company_lost_property_transfer, setting both the completion flag andstoryteller_d17_company_cleanup_pending. storyteller.event.shen_mansheng_company_custody_window.v1resolves before the target review, making company custody pressure playable rather than synthesizing its prerequisite flags.- Route Discontinuance Register exposes the pending
route-discontinuance.d17.company_cleanup_opensource row, residual route and pressure, partial viability, claimant and harmed reader, carrier, handler, candidate proof bridge, candidate salvage floor, and future reader. - Route Discontinuance Review requires twelve exact in-hand assignments before one of eight ordered choices can resolve.
- Seven explicit management postures register a result. Only
unregistered_defaultarms Unregistered Discontinuance Default. - Only
notice_pausewrites the branch/state/future triple that materializesroute-discontinuance.d17.public_pause, allowingstoryteller.card.salvage_floor_docket.v1to consume it.
Exact assignment surface
The rite consumes exactly these twelve slots, in order:
register, source_row, route_or_asset, discontinuance_pressure, partial_viability, claimant, harmed_reader, carrier_anchor, handler, proof_bridge, salvage_floor, and future_reader.
Each slot accepts only its matching runtime card, and every assigned card must be present in hand. The thirteenth card is a counterreceipt output; it is not in the starter hand and cannot fill a rite slot.
Ordered branch families
| Index | Branch ID | Story consequence |
|---|---|---|
0 | registered_stop | registered → blocked_with_notice |
1 | notice_pause | paused_under_notice → public_only |
2 | transfer_carrier | transferred → carrier_required |
3 | convert_recovery_only | recovery_only → recovery_only |
4 | public_abandonment | publicly_abandoned → public_audit_required |
5 | private_suppression | privately_suppressed → hostile_if_challenged |
6 | reopen_with_bond | reopened_with_bond → bond_required |
7 | unregistered_default | default_pending → unregistered_discontinuance_pending |
private_suppression is a risky but registered branch. It does not arm the v1 event. Missing assignments, substituted cards, off-hand assignments, a missing choice, and repeat resolution also fail without silently arming default. Only explicit choice index 7 does so.
The review is a visible eight-day operation. Expiry leaves the unresolved review visible with unresolved_review_remains_visible_without_arming_default; expiryArmsDefault is false. Expiry, underfill, and omission never stand in for explicit choice 7.
Only branch index 1 materializes route-discontinuance.d17.public_pause. registered_stop, transfer_carrier, convert_recovery_only, public_abandonment, private_suppression, reopen_with_bond, and unregistered_default preserve their own state/future results without exposing that downstream row.
Default endings
The default event has exactly six exclusive terminal/state/future mappings: sponsor_clean_cancellation → captured → sponsor_only; inspector_lawful_stop → lawful_only → lawful_appeal_required; archive_absence → blocked → public_addendum_required; public_abandonment_claim → public_only → fan_refund_required; operator_betrayal → hostile → carrier_required; and broadcast_reality_erasure → recovery_only → ending_scar_pending. Every terminal clears pending default flags and emits storyteller.card.unregistered_discontinuance_counterreceipt.v1.
The broadcast-erasure replay proves the harshest boundary: a broadcast claim can harden the false disappearance into reality, but it cannot erase the route’s source row, claimant, proof bridge, or downstream salvage obligation.
Runtime evidence
- Both replays first execute D17 choice index
1and resolve the Shen Mansheng custody-window event before starting the target review. route-discontinuance-register.notice-pause.replay.jsonthen proves all twelve exact assignments, target choice index1, no default, and exclusive materialization of the downstream-compatible public-pause row.route-discontinuance-register.broadcast-erasure.replay.jsonproves target choice index7, absence of the public-pause row, thebroadcast_reality_erasureterminal, pending-flag cleanup, and default-only counterreceipt custody.- The focused runtime test verifies exact source/public parity, strict assignment behavior, all eight ordered branches, the one-choice default gate, all six terminals, and local Storyteller authority.
Boundaries
- This is not route deletion: residual claimant, carrier, proof, salvage, and future-reader state remain inspectable.
- This is not remedy preclusion or ending-scar arbitration: it records a management disposition that those later systems may consume.
- Sponsor, inspector, archive, operator, and broadcast outcomes remain local readers; none grants universal truth, consent, ownership, settlement, route clearance, or clean disappearance.
- No fixed turn, day, week, raw route count, dashboard score, or lens-health trigger can open the lane.