Callback Consumption Proof / 回叫消费证明机制

Callback Consumption Proof is the mechanism that prevents a future reader from treating prior relief as clean proof after a callback obligation has been created.

It sits downstream of 救济回叫义务机制. The earlier mechanism creates and settles delayed obligations. This mechanism tests the later moment: a route, proof package, sponsor release, lawful annex, broadcast slot, public receipt, archive copy, management report, route asset, or ending reader wants to cite that relief as if it were closure.

Design promise

Relief can travel, but callback memory must travel with it.

The player must be able to inspect:

  • which relief is being consumed;
  • who benefited from the relief;
  • what callback was created or explicitly absent;
  • which reader was owed, excluded, deferred, or harmed;
  • who now wants to use the relief;
  • what use is being claimed;
  • what proof bridge or carrier travels with the claim;
  • what cost, scope, quarantine, or default follows.

The mechanism fails if a downstream route can say only prior relief exists and unlock cleanly.

Entry condition

entry_condition:
  trigger_kind: state_pressure
  source_relief_row_present: true
  relief_has_callback_state_or_explicit_absence: true
  downstream_reader_requests_consumption: true
  intended_use_present: true
  owed_reader_or_explicit_absence_present: true
  excluded_or_deferred_reader_or_explicit_absence_present: true
  player_response_available: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_relief_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

Valid downstream consumers include public receipts, lawful annexes, sponsor releases, archive copies, management closure reports, producer-license reviews, broadcast slot contracts, signatory counterclaims, route asset unlocks, future broadcast witness rows, and ending scar readers.

Invalid entry includes fixed timing, fixed chapter phase, raw count of callback rows, dashboard status, lens health, or generic cleanup.

State objects

Consumption docket

回叫消费案卷 records source relief, callback memory, future reader, intended use, selected posture, and future effect.

The docket is required whenever a future reader tries to use callback-bearing relief as proof, closure, precedent, slot authority, sponsor release, route unlock, public receipt, lawful annex, ending scar, or broadcast fact.

Consumption review

回叫消费复核 asks how the callback travels into the later route.

Required assignment surfaces:

assignment_required:
  source_relief_row: <row id or explicit_absence>
  callback_state: honored | assigned | owed | deferred | disputed | converted | quarantined | waived_with_named_harm | defaulted | explicit_absence
  future_reader: <reader>
  intended_use: <use>
  owed_reader_or_absence: <reader or explicit_absence>
  excluded_or_deferred_reader_or_absence: <reader or explicit_absence>
  carrier_or_absence: <handler proof bridge or explicit_absence>
  selected_posture: accept_with_callback | attach_callback_cost | convert_reader_scope | publish_callback_debt | quarantine_relief | waive_with_named_harm | launder_as_clean_default
  boundary_cost_or_absence: <cost scar or explicit_absence>
  future_reader_effect: <effect>

Laundering default

回叫洗白默认 fires or arms when a future reader consumes relief while missing callback state, owed reader, excluded reader, carrier, proof bridge, or named waiver harm.

The event must name the default narrator and mutate future reader state. It cannot be only a generic penalty.

Reader scope rules

reader_scope_rules:
  public_receipt_is_not_lawful_annex: true
  lawful_annex_is_not_public_receipt: true
  sponsor_release_is_not_public_or_lawful_closure: true
  archive_stamp_is_not_owed_reader_answer: true
  route_unlock_is_not_callback_settlement: true
  management_closure_is_not_broadcast_reality_acceptance: true
  witness_receipt_is_not_universal_clean_proof: true
  quarantine_is_not_consumption: true

If one reader accepts the relief, incompatible readers must become costlier, scoped, split, blocked, hostile, or recovery-only unless an explicit proof bridge has been assigned.

Branch contract

A satisfying implementation exposes at least five non-equivalent branch families plus default or quarantine.

BranchReliefCostFuture effect
Accept with callbackfuture reader accepts relief with callback visibleroute delay, handler burden, complexityaccepted_with_callback or costlier
Attach callback costroute proceeds while callback remains carriedcallback debt, owed reader leveragecallback_required or costlier
Convert reader scoperelief usable only by named reader surfaceincompatible reader pressurepublic_only, lawful_only, sponsor_only, split_required
Publish callback debthidden callback becomes public/lawful/archive memorysponsor pressure, public confusion, lawful heatcontradiction_pending or annex required
Quarantine reliefclean consumption blockedroute delay, archive debt, recovery pressureblocked or recovery_only
Waive with named harmfast narrow consumption allowedharmed reader hostility and future recovery costhostile or contradiction_pending
Launder as clean defaultimmediate pressure may dropfalse-clean relief hardensfalse_clean_relief, blocked, hostile, recovery_only

Downstream consumers

The mechanism is strongest when at least one of these later surfaces consumes the result:

Counter contract

Every resolution must mutate at least three counters or durable states:

counter_contract:
  relief_any:
    - callback_legitimacy_up
    - future_reader_trust_up
    - false_clean_relief_down
    - callback_discoverability_up
  cost_any:
    - callback_debt_up
    - owed_reader_hostility_up
    - route_delay_up
    - handler_burden_up
    - lawful_heat_up
    - sponsor_pressure_up
    - archive_debt_up
  future_any:
    - future_reader_effect_changed
    - route_costlier
    - public_only
    - lawful_only
    - sponsor_only
    - split_required
    - blocked
    - hostile
    - recovery_only

Evidence shape

mechanic: storyteller.mechanic.callback_consumption_proof.v1
entry_state:
  trigger_kind: state_pressure
  source_relief_row_present: true
  downstream_reader_requests_consumption: true
  no_fixed_turn_trigger: true
consumption:
  card: storyteller.card.callback_consumption_docket.v1
  source_relief_id: <stable id>
  callback_state_before: <state>
  owed_reader_or_absence: <reader or explicit_absence>
  future_reader: <reader>
  intended_use: <use>
review:
  rite: storyteller.rite.callback_consumption_review.v1
  selected_posture: accept_with_callback | attach_callback_cost | convert_reader_scope | publish_callback_debt | quarantine_relief | waive_with_named_harm | launder_as_clean_default
  carrier_or_absence_present: true
  proof_bridge_or_absence_present: true
result:
  event_seen_or_armed: storyteller.event.callback_laundering_default.v1 | none
  future_reader_effect: <effect>
  counter_deltas:
    relief: []
    cost: []
    future: []

Failure cases

The mechanism fails if any of these are true:

  • entry uses fixed turn count, fixed day/week interval, raw count, dashboard state, or lens-health state;
  • the source relief is unnamed;
  • the callback state is summarized as handled;
  • owed reader or excluded reader is hidden without explicit absence;
  • sponsor, archive, public, lawful, management, or route reader accepts the same relief as universal clean proof;
  • quarantine becomes consumption;
  • waiver omits named harm;
  • default does not name a default narrator;
  • no future reader changes state.

Non-goals

  • Not the original callback creation mechanic.
  • Not a QA replay harness.
  • Not governance.
  • Not raw-count expansion.
  • Not valid unless a future reader visibly consumes callback state and changes play.