Maturity Notice Runner Lens / 到期告知跑腿 Lens

This lens observes whether 苏牒到期告知跑腿线, Maturity Notice Runner, and 到期告知分流机制 correctly turn mature stabilization liability into playable service-order pressure.

The latest green surface already proves that scoped success and stabilization success can create an inheritable ticket. The new failure mode is abstraction after maturity: a ticket can be called, recalled, or disputed without recording who was served, who was omitted, who carried the proof, and what future reader consumed that service scar.

This lens observes:

It is observed through:

Observable promise

A mature stabilization liability ticket is not automatically served.

A passing implementation proves all of the following:

  • a 稳定化责任票据 with a maturity trigger creates or explicitly refuses a 到期告知牒;
  • the slip names source ticket, calling claimant, omitted or deferred claimant, service carrier, proof of service, service-order risk, 苏牒 state or explicit absence, and future route effect;
  • 到期告知分流 offers non-equivalent routes for lawful service, sponsor service, archive escrow, public/fan notice, proxy runner service, split notice, production hold, and false service;
  • 苏牒’s protected, recruited, retained, suppressed, captured, hostile, missed, and absent states change future options;
  • unserved or false-served notice mutates future play rather than becoming a flavor penalty;
  • no service route creates clean universal notice across sponsor, lawful, archive, public, fan, management, route asset, callback, and broadcast-reality readers.

Entry oracle

entry_state_required:
  trigger_kind: state_pressure
  source_ticket_present: true
  source_ticket_handoff_state_present: true
  source_ticket_has_maturity_trigger: true
  maturity_notice_slip_present_or_can_be_created: true
  calling_claimant_present: true
  omitted_or_deferred_claimant_present_or_explicit_absence: true
  notice_carrier_or_explicit_absence_visible: true
  proof_of_service_possible_or_explicit_absence: true
  service_order_can_change_reader_state: true
  su_die_state_or_absence_visible: true
  future_route_or_reader_effect_possible: true
  player_can_route_notice_or_record_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The lens fails if entry is driven by fixed time, chapter phase, raw counts, dashboard state, lens health, or generic debt with no source ticket and service-order risk.

Notice slip oracle

到期告知牒 or equivalent must record:

notice_slip_required:
  source_ticket:
    ticket_id: <stable ticket id>
    source_surface: <source surface>
    source_row_id: <source row or explicit_absence>
    stabilized_or_scoped_object_id: <object>
    handoff_state_before: <state>
    carrier_before: <carrier or explicit_absence>
    scar_after_source: <scar>
    future_route_effect_before: <effect>
  maturity:
    maturity_trigger: sponsor_stop_loss | audit | fan_refund | release_challenge | callback_call | reader_challenge | proof_rehearing | checksum_challenge | room_collision | witness_leak | blackout | manual_review | equivalent
    calling_claimant: <claimant>
    omitted_or_deferred_claimant: <claimant or explicit_absence>
    first_service_requested_by: <claimant, desk, handler, public surface, or explicit_absence>
    service_order_risk: clean | disputed | claimant_first | sponsor_first | public_first | lawful_first | fan_first | false_service_risk | unserved
  carriage:
    notice_carrier: lawful_notice | sponsor_desk | archive_clerk | fan_public_receipt | pirate_relay | proxy_runner | production_hold | route_asset | explicit_absence | equivalent
    proof_of_service: signed_slip | archive_stamp | sponsor_countercopy | public_receipt | fan_queue_receipt | pirate_timestamp | lawful_annex | edit_checksum | oral_witness | explicit_absence | equivalent
    su_die_state: unseen | visible | protected | recruited | retained | suppressed | captured | hostile | missed | false_served | unavailable | explicit_absence
  result:
    notice_state: drafted | served | split_served | escrowed | public_served | sponsor_served | lawful_served | fan_served | production_hold | suppressed | unserved | false_served | recovery_only
    future_route_effect_after: unlocked_with_notice_debt | sponsor_only | lawful_only | public_only | fan_audit_required | split_required | costlier | hostile | blocked | recovery_only | recall_event_armed

The lens fails if the card stores only matured, served, notice_sent, sponsor_ack, audit_started, or claimant_notified.

Routing rite oracle

到期告知分流 or equivalent must require explicit assignment:

routing_assignment_required:
  slip: storyteller.card.maturity_notice_slip.v1
  source_ticket: storyteller.card.stabilization_liability_ticket.v1
  ticket_id: <stable ticket id>
  maturity_trigger: <trigger>
  calling_claimant: <claimant>
  omitted_or_deferred_claimant: <claimant or explicit_absence>
  selected_route: lawful_service | sponsor_service | archive_escrow | public_or_fan_notice | proxy_runner_service | split_notice | production_hold | suppress_or_false_service
  notice_carrier: <carrier or explicit_absence>
  proof_of_service: <proof or explicit_absence>
  handler_or_absence: <handler or explicit_absence>
  su_die_state_before: <state or explicit_absence>
  reader_to_protect: <reader>
  reader_left_unserved_or_deferred: <reader or explicit_absence>

The lens fails if sponsor money, archive stamp, lawful notice, public post, fan queue receipt, production order, or manager authority resolves service without named carrier, proof surface, omitted claimant, and future route effect.

Branch divergence oracle

A satisfying implementation must prove at least six non-equivalent branch families plus default or explicit blocked state.

Branch familyRequired reliefRequired costRequired future effect
Protect or recruit runnerservice legibility or route access improveshandler, staff protection, sponsor, or inspection cost rises苏牒 protected, recruited, retained, or route asset unlock
Lawful servicelawful reader or admissibility improvesinspection heat, bureau debt, sponsor pressure, or delay riseslawful-only, public addendum, or accepted-with-notice-debt
Sponsor servicesponsor stop-loss or commercial route pressure fallscontract capture, public distrust, fan resentment, or lawful hostility risessponsor-only or public/lawful challenge armed
Archive escrowsource trace or route-asset custody improvesarchive debt, schedule pressure, or sponsor pressure risesarchive-only, split-required, or recovery-only until release
Public or fan noticeprivate capture blocked or fan/public accountability improveswitness exposure, refund trigger, sponsor heat, or inspection heat risespublic-only, fan audit, or lawful bridge required
Split noticeselected reader unblocked and service dispute containedsource ambiguity, handler burden, or future correction cost risessplit-required or scoped reader use
Production holdfaction capture delayed or route temporarily kepthandler fatigue, lane scar, black-screen pressure, or unserved risk risesfuture source use costlier or production triage required
Suppress or false serviceshort-term burden may dropfalse-service risk, claimant hostility, public distrust, or route block riseshostile, blocked, costlier, or recovery-only

No branch may create universal clean service across sponsor, lawful, archive, public, fan oxygen, management, route-asset, callback, and broadcast-reality readers.

Character-state assertions

苏牒 is not optional flavor. Passing evidence must show at least four of these states or explicit state-blocked absences:

su_die_state_assertions:
  protected:
    future_effect_any: [accepted_with_notice_debt, proxy_posture_required, recruit_window_open]
    cost_any: [handler_burden_up, inspection_heat_up, staff_protection_cost_up]
  recruited:
    future_effect_any: [route_asset.su_die_maturity_notice_runner, future_notice_verification]
    cost_any: [payroll_leak_up, favor_debt_up, route_asset_pressure_up]
  retained:
    future_effect_any: [one_notice_served, follow_up_notice_hearing_required]
    cost_any: [future_service_costlier, handler_burden_up, payroll_leak_up]
  suppressed:
    event_seen_or_armed: storyteller.event.unserved_maturity_notice.v1
    future_effect_any: [unserved_notice_armed, recovery_only, false_service_risk]
  captured:
    future_effect_any: [sponsor_only, lawful_only, archive_only, public_only, route_asset_captured]
    cost_any: [route_asset_pressure_up, proof_legibility_down, claimant_hostility_up]
  hostile:
    future_effect_any: [hostile_notice_witness, service_rehearing_required, blocked_or_costlier_route]
    cost_any: [proxy_hostility_up, inspection_heat_up, fan_oxygen_resentment_up]
  missed_or_absent:
    event_seen_or_armed: storyteller.event.unserved_maturity_notice.v1
    future_effect_any: [recovery_only_notice_route, route_blocked_until_late_service]

The lens fails if protecting, recruiting, retaining, suppressing, capturing, missing, or alienating 苏牒 does not alter future service, route, reader, or counter state.

Reader state assertions

At least two readers must end in different states after every resolved branch:

reader_states_after_required:
  sponsor_reader: accepted_with_cost | sponsor_only | hostile | blocked | explicit_absence | equivalent
  lawful_reader: lawful_only | accepted_with_notice | proof_rehearing_required | blocked | explicit_absence | equivalent
  archive_reader: archive_stamp_required | escrowed | accepted_with_cost | blocked | explicit_absence | equivalent
  public_reader: public_only | notice_receipt_legible | distrustful | hostile | explicit_absence | equivalent
  fan_oxygen_reader: refund_audit_required | fan_served | resentful | blocked | explicit_absence | equivalent
  route_asset_reader: unlocked_with_notice_debt | split_required | captured | costlier | blocked | recovery_only | explicit_absence | equivalent
  production_reader: production_hold | handler_overdrawn | recovery_only | explicit_absence | equivalent
  su_die: protected | recruited | retained | suppressed | captured | hostile | missed | explicit_absence | equivalent

The lens fails if every reader accepts the same notice as clean proof.

Default contract

未送达到期告知 must record:

default_required:
  source_ticket_id: <ticket>
  slip_id_or_explicit_absence: <slip or explicit_absence>
  service_failure_kind: unserved | false_served | wrong_first_claimant | carrier_captured | omitted_claimant_hidden | proof_of_service_absent | suppress_notice | clean_reuse_without_service
  calling_claimant: <claimant>
  served_claimant_or_absence: <claimant or explicit_absence>
  omitted_or_deferred_claimant: <claimant or explicit_absence>
  hiding_or_default_actor: sponsor | inspector | archive | editor | fan_public | production | proxy_runner | route_asset_claimant | management | handler_absence | explicit_absence | equivalent
  false_service_claim_or_absence: <claim or explicit_absence>
  su_die_state_after: missed | hostile | suppressed | captured | explicit_absence | equivalent
  future_route_effect_after: sponsor_only | lawful_only | public_only | fan_audit_required | split_required | costlier | hostile | blocked | recovery_only

The default fails if it only increases pressure and does not change future route, reader, claimant, carrier, or route-asset state.

Downstream consumption oracle

A passing implementation must prove that a later surface consumes the notice state:

downstream_consumption_required:
  consumer: sponsor_stop_loss | lawful_annex | archive_release | fan_refund_audit | public_receipt | route_asset_custody | proxy_posture | production_triage | broadcast_reality | equivalent
  consumed_source_ticket_id: <ticket>
  consumed_notice_state: <state>
  consumed_su_die_state: <state>
  reader_state_before: <state>
  reader_state_after: <state>
  route_effect_after_read: <effect>

If service is only proven in the scene that creates it and never consumed by later play, progress is incomplete.

Replay evidence shape

lens_id: storyteller.lens.maturity_notice_runner.v1
session_id: lens-maturity-notice-runner-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_ticket_present: true
  source_ticket_has_maturity_trigger: true
  maturity_notice_slip_present_or_can_be_created: true
  calling_claimant_present: true
  omitted_or_deferred_claimant_present_or_explicit_absence: true
  su_die_state_before: unseen | visible | protected | recruited | retained | suppressed | captured | hostile | missed | explicit_absence
  no_fixed_turn_trigger: true
offered_content:
  character: storyteller.character.su_die_maturity_notice_runner.v1
  card: storyteller.card.maturity_notice_slip.v1
  rite: storyteller.rite.maturity_notice_routing.v1
branches:
  protect_or_recruit:
    selected_route: proxy_runner_service | lawful_service | split_notice
    su_die_state_after: protected | recruited | retained
    notice_state_after: served | split_served | lawful_served
    proof_of_service_after: <surface>
    future_route_effect: <effect>
    deltas: {}
  faction_or_public_service:
    selected_route: sponsor_service | archive_escrow | public_or_fan_notice | production_hold
    served_claimant: <claimant>
    omitted_or_deferred_claimant: <claimant or explicit_absence>
    su_die_state_after: retained | captured | suppressed | protected | explicit_absence
    notice_state_after: sponsor_served | escrowed | public_served | fan_served | production_hold
    future_route_effect: <effect>
    deltas: {}
  default:
    event_seen_or_armed: storyteller.event.unserved_maturity_notice.v1
    service_failure_kind: <kind>
    su_die_state_after: missed | hostile | suppressed | captured | explicit_absence
    future_route_effect: blocked | costlier | hostile | recovery_only
    deltas: {}
downstream_read:
  consumer: <consumer>
  consumed_notice_state: <state>
  consumed_su_die_state: <state>
  route_effect_after_read: <effect>
assertions:
  entry_state_driven: true
  source_ticket_and_scar_preserved: true
  calling_and_omitted_claimants_visible: true
  carrier_and_proof_visible_or_explicit_absence: true
  su_die_state_changes_future_options: true
  at_least_two_readers_diverge: true
  success_has_cost: true
  default_mutates_future_play: true
  downstream_reader_consumes_notice_state: true
  no_clean_universal_service: true
  no_fixed_turn_trigger: true

Progress metric

Progress is measured by playable service proof, not content count.

  • 20%: mature ticket opens a maturity notice slip with 苏牒 state or explicit absence.
  • 40%: slip records ticket, maturity trigger, calling claimant, omitted claimant, carrier/proof, service risk, 苏牒 state, and future effect.
  • 60%: protected/recruit branch and one lawful/split branch resolve with different costs.
  • 80%: sponsor, archive, public/fan, production-hold, or false-service branch changes future route availability.
  • 100%: unserved notice default and one non-default branch are replay-proven with seed, session id, assigned content, outcomes, counter deltas, 苏牒 state, and downstream consumption.

Runtime evidence binding (2026-07-16)

The playable packet now uses the real inherited ticket ID card.stabilization_liability_ticket plus six exact local starter cards:

  • storyteller.card.maturity_notice_slip.v1;
  • storyteller.character.su_die_maturity_notice_runner.v1;
  • storyteller.card.maturity_notice_claimant_split.v1;
  • storyteller.card.maturity_notice_carrier_proof.v1;
  • storyteller.card.maturity_notice_future_reader.v1;
  • storyteller.card.maturity_notice_service_route.v1.

storyteller.rite.maturity_notice_routing.v1 is one-shot, requires every exact assignment in hand, requires a selected option, and executes all eight branch families with five effect-backed counter deltas each. Choice 0 alone creates route_asset.su_die_maturity_notice_runner; sponsor capture removes 苏牒; production hold suppresses her without recruiting her; choice 7 arms the priority default.

storyteller.event.unserved_maturity_notice.v1 requires the exact false-service pending state. Its hostile path removes 苏牒, records both su_die.hostile and su_die.missed, leaves storyteller.card.maturity_notice_late_service_counterreceipt.v1, and forces future_route.service_rehearing_required.

Required evidence:

  • lens/storyteller-su-die-maturity-notice-runner.runtime.test.ts proves reachability and exclusivity for all eight rite choices and all four default outcomes;
  • lens/replays/maturity-notice-runner.recruit.replay.json proves exact recruit choice 0;
  • lens/replays/maturity-notice-runner.false-service-default.replay.json proves exact false-service choice 7 followed by hostile event choice 0.

Non-goals

  • Not a raw lens-count increase.
  • Not bulk content.
  • Not governance, dashboard, or process proof.
  • Not a generic courier route.
  • Not fixed timing.
  • Not a replacement for 稳定化责任交接线, 认领告知顺序线, 过期派发召回线, or 代理人姿态链.
  • Not valid if service proof becomes clean universal notice.
  • Not valid if 苏牒’s state does not mutate notice slip, reader table, claimant order, carrier state, and future route effect.