Route Discontinuance Register / 路线停办登记机制

This mechanism turns one residual route stop into a durable, reader-visible state. Its narrow runtime promise is to consume the completed company lost-property transfer opened by accept_company_lost_property_transfer, resolve the intervening Shen Mansheng custody window, review one pending source row, and materialize a row the existing Salvage Floor Docket can read only through notice_pause.

Fixed source and downstream consumption

source_contract:
  source_rite: storyteller-rite-d17-lost-and-found-night
  source_choice: accept_company_lost_property_transfer
  required_completion_flag: complete_storyteller-rite-d17-lost-and-found-night
  source_pending_flag: storyteller_d17_company_cleanup_pending
  source_row: transfer.company_cleanup.d17
  source_surface: route_asset_custody
  source_state: company_cleanup_transfer_open
  route_or_asset: route.d17.lost_property_night
fixedSourceRow:
  row_id: route-discontinuance.d17.company_cleanup_open
  discontinuance_pressure: sponsor_capture
  partial_viability: viable_with_public_notice
  claimant_and_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:
  reader: storyteller.card.salvage_floor_docket.v1
  reader_row: floor.public_notice.d17
  expected_discontinuance_register_row: route-discontinuance.d17.public_pause
  expected_source_state_after: paused_under_notice
  eligible_only_when_branch: notice_pause

This is an exact crossread, not a thematic association. The source rite must be completed with the matching option and pending flag. The static register owns route-discontinuance.d17.company_cleanup_open; it does not preselect a posture. Only the notice-pause branch materializes the downstream row, and all three required branch/state/future flags must be present. The other seven branches cannot expose route-discontinuance.d17.public_pause merely because they preserve some public notice as local evidence.

Assignment mechanism

The one-shot review exposes twelve slots in this exact order:

  1. register
  2. source_row
  3. route_or_asset
  4. discontinuance_pressure
  5. partial_viability
  6. claimant
  7. harmed_reader
  8. carrier_anchor
  9. handler
  10. proof_bridge
  11. salvage_floor
  12. future_reader

Each slot accepts exactly one matching runtime card, and all assigned cards must be in hand. The counterreceipt is an output card, never a starter assignment.

Underfill, substitution, off-hand assignment, no-choice resolution, and a repeated run all fail closed. None of those failures invents an unregistered discontinuance. The review also requires both complete_storyteller-rite-d17-lost-and-found-night and storyteller_d17_company_cleanup_pending; deterministic replays earn these by running D17 choice index 1 and the Shen Mansheng custody event before the review.

Decision mechanism

The rite exposes exactly eight ordered choices: registered_stop, notice_pause, transfer_carrier, convert_recovery_only, public_abandonment, private_suppression, reopen_with_bond, and unregistered_default.

Every successful choice writes one exact branch/state/future mapping:

branch_state_future:
  registered_stop: registered -> blocked_with_notice
  notice_pause: paused_under_notice -> public_only
  transfer_carrier: transferred -> carrier_required
  convert_recovery_only: recovery_only -> recovery_only
  public_abandonment: publicly_abandoned -> public_audit_required
  private_suppression: privately_suppressed -> hostile_if_challenged
  reopen_with_bond: reopened_with_bond -> bond_required
  unregistered_default: default_pending -> unregistered_discontinuance_pending

Only index 7, unregistered_default, sets the shared pending gate for storyteller.event.unregistered_discontinuance_default.v1. Choices 0 through 6 clear it. In particular, private_suppression does not arm the event merely because it is risky; the v1 event represents an explicitly unregistered disposition, not every private decision.

The eight-day review expires as unresolved_review_remains_visible_without_arming_default. expiryArmsDefault is false: expiration leaves the source row pending and inspectable, with no default flags and no counterreceipt. Only explicit index 7 can arm the event.

Default mechanism

The event offers exactly six exclusive terminal families:

  • sponsor_clean_cancellation
  • inspector_lawful_stop
  • archive_absence
  • public_abandonment_claim
  • operator_betrayal
  • broadcast_reality_erasure

Their exact state/future mappings are captured/sponsor_only, lawful_only/lawful_appeal_required, blocked/public_addendum_required, public_only/fan_refund_required, hostile/carrier_required, and recovery_only/ending_scar_pending, in the same order. Each terminal clears the pending gate and grants storyteller.card.unregistered_discontinuance_counterreceipt.v1. The six outcomes change who gets to narrate the discontinuance, but none deletes the pending source row or grants universal authority.

Local authority

The packet may record only this fixed route’s discontinuance posture, preserve its named source/claimant/carrier/proof/salvage/future-reader fields, and make a default narrator inspectable. It cannot grant consent, ownership, waiver, settlement, legal validity, sponsor authority, inspector authority, archive truth, operator betrayal as universal fact, route clearance, salvage ownership, or a clean all-reader cancellation.

Recovery and consumption

The constructive notice-pause branch ends at the exact branch/state/future triple that floor.public_notice.d17 expects and materializes route-discontinuance.d17.public_pause. Later salvage, memorial, custody, public-proof, or broadcast-reality play consumes that row; it does not rerun the one-shot review. No other branch is eligible for this crossread.

The default branch is likewise terminal for this rite. Its counterreceipt is a scar and provenance object, not permission to reopen or erase the route.

Non-goals

  • Not a generic cancellation framework for every route.
  • Not a fixed chronology or raw route-count trigger.
  • Not a replacement for remedy, ending, or salvage-floor systems.
  • Not valid if source identity, claimant, carrier/proof, salvage floor, harmed reader, or future reader disappears from the playable row.