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: trueValid 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: trueIf 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.
| Branch | Relief | Cost | Future effect |
|---|---|---|---|
| Accept with callback | future reader accepts relief with callback visible | route delay, handler burden, complexity | accepted_with_callback or costlier |
| Attach callback cost | route proceeds while callback remains carried | callback debt, owed reader leverage | callback_required or costlier |
| Convert reader scope | relief usable only by named reader surface | incompatible reader pressure | public_only, lawful_only, sponsor_only, split_required |
| Publish callback debt | hidden callback becomes public/lawful/archive memory | sponsor pressure, public confusion, lawful heat | contradiction_pending or annex required |
| Quarantine relief | clean consumption blocked | route delay, archive debt, recovery pressure | blocked or recovery_only |
| Waive with named harm | fast narrow consumption allowed | harmed reader hostility and future recovery cost | hostile or contradiction_pending |
| Launder as clean default | immediate pressure may drop | false-clean relief hardens | false_clean_relief, blocked, hostile, recovery_only |
Downstream consumers
The mechanism is strongest when at least one of these later surfaces consumes the result:
- 播出档期合约绑定线 consumes callback state before accepting a relief-backed slot;
- 播出署名反诉线 consumes callback state before accepting a signatory release;
- 呼吸追缴扣押线 consumes callback state before treating a stay or haircut as closure;
- 林夕未来广播见证线 consumes callback state before treating a future signal relief as proof;
- equivalent route, public, lawful, sponsor, archive, producer-license, or ending reader consumes the state.
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_onlyEvidence 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.