Appeal Residue Routing / 申诉残留分流机制

Appeal Residue Routing is the mechanism for a scarred appeal result after it has already succeeded enough to matter.

指标捕获申诉机制 proves how a captured metric can be challenged. 申诉报复反压机制 proves how retaliation can be countered. This mechanism starts after either surface creates a limited residue credit and before future systems accidentally spend that credit as clean proof.

The core rule is: a paid appeal residue is a scarce routed asset, not a universal clean key.

Design purpose

The current mesh already prevents clean appeals, clean retaliation reversals, and universal reader acceptance. The remaining gap is a smaller execution edge:

  • an appeal succeeds with scar;
  • that scarred success produces a credit that later systems want to cite;
  • producer license, public table, lawful conversion, sponsor release, route asset, quote table, crew lane, and broadcast reality may all want to consume it;
  • one credit cannot satisfy every reader unless it is split, escrowed, surcharged, or burned.

This mechanism turns that residue into management + RPG pressure.

State-triggered entry

Open this mechanism only from state:

entry_state:
  trigger_kind: state_pressure
  source_result_present: true
  source_result_any:
    - storyteller.rite.metric_capture_appeal_hearing.v1
    - storyteller.event.appeal_pressure_reversal.v1
    - equivalent scarred appeal or counterpressure result
  source_result_preserved: true
  residue_credit_created: true
  residue_credit_has_limited_scope: true
  possible_consumer_present: true
  duplicate_or_scope_breach_risk_present: true
  no_fixed_turn_trigger: true

It must never open from fixed turn count, day count, phase quota, chapter quota, raw content count, raw scar count, dashboard state, or lens-health state.

Required state model

A satisfying implementation must expose durable states equivalent to at least eight of these:

appeal_residue_state:
  unopened: source result exists but no residue ledger has been created
  ledger_open: residue, source result, scope, spend limit, and possible readers are visible
  routed_to_license: producer license is the primary reader
  routed_to_public_table: public table is the primary reader
  routed_to_lawful_conversion: lawful conversion is the primary reader
  routed_to_sponsor_release: sponsor release is the primary reader with discoverability
  routed_to_route_asset: route asset or counterseal is the primary reader
  escrowed_split_metric: residue is held for scoped multi-reader use with surcharge
  burned_or_retired: residue is destroyed to prevent clean-key abuse
  duplicated: residue was overclaimed or double-spent
  captured_by_reader: one reader captured the residue first
  recovery_only: future use requires recovery cost or fresh appeal

Content surfaces

Ledger card

申诉残留账本 records the source result, residue credit, scope, spend limit, possible readers, primary reader, excluded readers, handler, proof or seal, price, and future route effect.

Routing hearing

申诉残留分流听证 resolves whether the residue is routed to license review, public table, lawful conversion, sponsor release, route asset counterseal, split-metric escrow, burn/retirement, or duplicate/no answer.

Duplication default

残留信用复用默认 fires or is armed when a residue is used beyond scope, flattened into a clean key, or consumed without a primary reader.

Assignment contract

assignment_contract:
  ledger: storyteller.card.appeal_residue_ledger.v1
  source_result_id: <stable appeal or counterpressure result id>
  source_report_or_ledger_id: <metric report or retaliation ledger id>
  residue_id: <stable residue id>
  residue_type: public_correction_credit | lawful_stay_credit | sponsor_release_credit | crew_scar_credit | quote_reprice_credit | route_counterseal_credit | split_metric_credit | trustee_credit | equivalent
  residue_scope: single_reader | scoped_multi_reader | held_until_release | burn_only | equivalent
  spend_limit: one_use | one_use_plus_receipt | scoped_multi_use_with_surcharge | release_required | equivalent
  selected_routing_mode: route_to_license_review | route_to_public_table | route_to_lawful_conversion | route_to_sponsor_release | route_to_route_asset_counterseal | escrow_for_split_metric | retire_or_burn_residue | duplicate_or_no_answer
  primary_reader_or_absence: <reader or explicit_absence>
  excluded_or_delayed_readers: []
  handler_or_absence: <handler or explicit_absence>
  proof_or_seal_or_absence: <proof seal oath checksum receipt or explicit_absence>
  price_or_burn_cost_or_absence: <price or explicit_absence>
  future_reader_effect: <effect>

No assignment may be implied by success, public sympathy, sponsor payment, legal authority, editor patch, or route urgency.

Branch contract

Every non-default branch must include:

counter_deltas_required:
  relief: at_least_one
  cost: at_least_one
  future_reader_or_route_effect: at_least_one

Branch families:

  • route_to_license_review: license risk narrows, but inspection or public table cost rises.
  • route_to_public_table: public proof improves, but sponsor, witness, or panic cost rises.
  • route_to_lawful_conversion: lawful use improves, but delay, bureau debt, or archive debt rises.
  • route_to_sponsor_release: private pressure weakens, but discoverable sponsor scar and public surcharge survive.
  • route_to_route_asset_counterseal: asset integrity improves, but quarantine, release, or recovery-only cost appears.
  • escrow_for_split_metric: residue remains scoped, contradiction stays visible, and readers pay surcharge.
  • retire_or_burn_residue: duplicate risk falls, but the current route loses the credit.
  • duplicate_or_no_answer: default captures or hardens the residue.

Counter surfaces

Primary counters and durable states:

  • appeal_residue_state
  • residue_credit_integrity
  • residue_spend_limit
  • future_reader_acceptance
  • false_clean_hardening
  • hidden_debt_legibility
  • producer_license_pressure
  • public_receipt_legitimacy
  • public_receipt_distrust
  • sponsor_stop_loss_pressure
  • contract_capture
  • inspection_heat
  • bureau_favor_debt
  • correction_slot_pressure
  • quote_integrity
  • route_asset_pressure
  • route_asset_integrity
  • handler_burden
  • archive_debt
  • source_ambiguity
  • future_recovery_cost
  • reality_drift

Future readers

At least one downstream reader must consume the routing result:

Replay evidence shape

mechanic_id: storyteller.mechanic.appeal_residue_routing.v1
session_id: lens-appeal-residue-routing-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_result_present: true
  residue_credit_created: true
  no_fixed_turn_trigger: true
ledger:
  card: storyteller.card.appeal_residue_ledger.v1
  source_result_id: <id>
  residue_id: <id>
  residue_scope: <scope>
  spend_limit: <limit>
assigned_hearing:
  rite: storyteller.rite.appeal_residue_routing_hearing.v1
  selected_routing_mode: <mode>
  primary_reader_or_absence: <reader or absence>
  handler_or_absence: <handler or absence>
  proof_or_seal_or_absence: <proof or absence>
  price_or_burn_cost_or_absence: <price or absence>
result:
  event_seen_or_armed: storyteller.event.residue_credit_duplication_default.v1 | none_if_valid
  residue_state_after: <state>
  future_route_effect: <effect>
  counter_deltas: {}
assertions:
  - entry_is_state_triggered
  - source_result_is_preserved
  - residue_scope_and_spend_limit_visible
  - routing_assignments_are_explicit
  - branch_outcomes_diverge
  - no_universal_clean_key
  - duplicate_or_scope_breach_arms_default
  - downstream_reader_consumes_result

Non-goals

  • Not a generic reward mechanism.
  • Not another appeal retry.
  • Not a reader-collision clone: this mechanism is about a limited credit being routed before it is overconsumed.
  • Not a scar-convergence clone: this mechanism handles a single appeal residue; convergence can consume it later if overused.
  • Not governance, dashboard, or raw count growth.
  • Not valid if a scarred appeal result becomes clean proof for every route.