Maturity Notice Service Order Lens / 到期告知送达顺序 Lens
This lens observes whether Maturity Notice Service Order and Maturity Notice Routing prevent a mature stabilization liability ticket from becoming clean authority merely because someone says notice was sent.
The character lens for Su Die Maturity Notice Runner proves the courier route. This lens proves the system contract: a mature ticket must expose service order, omitted readers, carrier/proof state, and future effect before any downstream reader can cite it.
Observable promise
A passing implementation must show:
- source liability ticket;
- maturity trigger;
- handoff state before service;
- calling claimant;
- omitted or deferred claimant, or explicit absence;
- notice carrier, or explicit absence;
- proof of service, or explicit absence;
- selected service route;
- notice state after;
- future route or reader effect;
- durable default when service is hidden, false, captured, suppressed, or universalized.
The lens fails if implementation stores only ticket_matured, notice_sent, claimant_notified, sponsor_called, audit_started, or debt_recalled.
Entry oracle
entry_state_required:
trigger_kind: state_pressure
source_ticket_present: true
source_ticket_has_maturity_trigger: true
source_ticket_handoff_state_present: 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
at_least_two_reader_surfaces_can_diverge: 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: trueThe lens fails if entry comes from a fixed turn, fixed day, raw debt count, generic crisis count, dashboard state, or lens health.
Slip oracle
Maturity Notice Slip must keep source ticket, maturity, carrier/proof, and future effect separate.
maturity_notice_slip_required:
source_ticket:
ticket_id: <stable stabilization liability ticket id>
source_surface: <source surface>
handoff_state_before: <state>
carrier_before: <carrier or explicit_absence>
scar_after_source: <scar>
future_route_effect_before: <effect>
maturity:
maturity_trigger: <trigger>
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
carrier_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 | 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_armedThe slip fails if it records a mature ticket without calling claimant, omitted claimant, carrier or absence, proof surface, reader split, and future effect.
Routing oracle
Maturity Notice Routing must expose these branch families:
lawful_servicesponsor_servicearchive_escrowpublic_or_fan_noticeproxy_runner_servicesplit_noticeproduction_holdsuppress_or_false_service
Each branch must include relief, cost, and future_effect_any. No branch may make one notice satisfy sponsor, lawful, archive, public, fan, management, route asset, callback, and broadcast-reality readers cleanly.
Default oracle
Unserved Maturity Notice must record:
event_payload:
event_id: storyteller.event.unserved_maturity_notice.v1
source_ticket:
ticket_id: <stable ticket id>
handoff_state_before: <state>
maturity_trigger: <trigger>
carrier_before: <carrier or explicit_absence>
notice:
slip_id: <slip id 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
proof_of_service_or_absence: <proof or explicit_absence>
claimants:
calling_claimant: <claimant>
served_claimant_or_absence: <claimant or explicit_absence>
omitted_or_deferred_claimant: <claimant or explicit_absence>
result:
notice_state_after: unserved | false_served | claimant_hostile | sponsor_only_service_hardened | public_distrust | fan_refund_without_proof | lawful_reader_challenge | route_asset_captured | recovery_only
future_route_effect_after: sponsor_only | lawful_only | public_only | fan_audit_required | split_required | costlier | hostile | blocked | recovery_only
counter_deltas_required:
relief: at_least_zero_or_one_if_suppression_bought_time
cost: at_least_one
future: at_least_oneThe default fails if it is only a mood hit, timer failure, generic debt recall, or legal noncompliance warning.
Progress metric
maturityNoticeServiceOrderProgress = 0..8:
0: no source liability ticket is visible.1: source ticket and maturity trigger are visible.2: calling claimant and omitted/deferred claimant are visible or explicitly absent.3: notice carrier and proof of service are visible or explicitly absent.4: Maturity Notice Slip separates source ticket, maturity, carrier, and future locks.5: Maturity Notice Routing resolves a branch with relief, cost, and future effect.6: notice state after is consumed by a future reader or route.7: unserved, false, captured, or suppressed service arms a durable default.8: recovery preserves service scar instead of cleaning the ticket.
Non-goals
- Not a global inbox lens.
- Not a fixed maturity timer.
- Not a replacement for stabilization liability handoff.
- Not a duplicate of Su Die’s character route.
- Not valid if service proof has no caller, omitted claimant, carrier, proof, and future mutation.