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_only

The 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

  1. The player completes storyteller-rite-d17-lost-and-found-night with choice index 1, accept_company_lost_property_transfer, setting both the completion flag and storyteller_d17_company_cleanup_pending.
  2. storyteller.event.shen_mansheng_company_custody_window.v1 resolves before the target review, making company custody pressure playable rather than synthesizing its prerequisite flags.
  3. Route Discontinuance Register exposes the pending route-discontinuance.d17.company_cleanup_open source row, residual route and pressure, partial viability, claimant and harmed reader, carrier, handler, candidate proof bridge, candidate salvage floor, and future reader.
  4. Route Discontinuance Review requires twelve exact in-hand assignments before one of eight ordered choices can resolve.
  5. Seven explicit management postures register a result. Only unregistered_default arms Unregistered Discontinuance Default.
  6. Only notice_pause writes the branch/state/future triple that materializes route-discontinuance.d17.public_pause, allowing storyteller.card.salvage_floor_docket.v1 to 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

IndexBranch IDStory consequence
0registered_stopregisteredblocked_with_notice
1notice_pausepaused_under_noticepublic_only
2transfer_carriertransferredcarrier_required
3convert_recovery_onlyrecovery_onlyrecovery_only
4public_abandonmentpublicly_abandonedpublic_audit_required
5private_suppressionprivately_suppressedhostile_if_challenged
6reopen_with_bondreopened_with_bondbond_required
7unregistered_defaultdefault_pendingunregistered_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 1 and resolve the Shen Mansheng custody-window event before starting the target review.
  • route-discontinuance-register.notice-pause.replay.json then proves all twelve exact assignments, target choice index 1, no default, and exclusive materialization of the downstream-compatible public-pause row.
  • route-discontinuance-register.broadcast-erasure.replay.json proves target choice index 7, absence of the public-pause row, the broadcast_reality_erasure terminal, 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.