Witness Carrier Discharge / 见证承载解除机制
Witness Carrier Discharge is a pressure mechanic for situations where a named witness, delegate, handler, editor, lawful officer, pirate relay, or public receipt carrier has already carried one service and a later row tries to reuse that same carrier as clean capacity.
This mechanic sits between 呼吸折让见证委任线 and 回叫承载撞车线. The former makes consent require a witness; the latter prevents one carrier from satisfying several rows. The remaining playable gap is discharge: after the carrier has served once, the game must decide whether that carrier is released, renewed, substituted, protected, escrowed, published as deferred, quarantined, or double-spent.
Mechanic promise
A passing implementation proves that:
- entry is state-triggered by a previous service plus a proposed reuse, not by timing or raw counts;
- the previous service names its owed reader, scope, promise, and carrier state;
- the proposed next use names the new reader and reuse claim;
- the carrier’s consent, protection, payment, or refusal is visible;
- the player can discharge, renew, substitute, protect, escrow, publish, quarantine, or default;
- any success is scoped and has cost;
- a default leaves a durable false-reuse scar consumed by later routes.
State-triggered entry
entry_state_required:
trigger_kind: state_pressure
previous_service_exists: true
previous_service_reader_visible: true
previous_service_scope_visible_or_explicit_absence: true
carrier_state_before_visible: true
proposed_next_use_exists: true
proposed_next_reader_visible: true
reuse_claim_visible: true
carrier_consent_or_refusal_state_visible: true
future_reader_or_route_consumes_result: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_witness_count_trigger: true
no_dashboard_or_lens_health_trigger: trueValid source services include:
- a fan oxygen witness row from 火签粉丝证词案卷;
- a fan delegate row from 粉丝委任账本;
- a carrier collision row from 回叫承载撞车案卷;
- a consent debt row from 同意债转移案卷;
- a route-asset or handler-burden row that names a carrier as protected, paid, hostile, captured, quarantined, or absent.
Data model
witness_carrier_discharge_state:
previous_service:
row_id: <row id or explicit_absence>
source_surface: oxygen_haircut_witness | callback_carrier_collision | fan_delegate_mandate | consent_debt_transfer | handler_burden | equivalent
original_owed_reader: <reader>
original_service: <service>
promised_limit_or_absence: <scope or explicit_absence>
still_open_readers: []
carrier:
id: <carrier id or explicit_absence>
kind: named_character | public_delegate | lawful_officer | editor | pirate_relay | worker | route_asset | explicit_absence | equivalent
state_before: protected | paid | public_receipt_carrier | lawful_only | sponsor_bought | editor_masked | pirate_amplified | hostile | captured | absent | overdrawn | quarantined | equivalent
consent_to_reuse: renewed | refused | limited | proxy_only | absent | coerced | unknown | equivalent
protection_or_payment_state: <state>
proposed_next_use:
row_id: <row id or explicit_absence>
reader: <reader>
service_claimed: <service>
reuse_claim: same_public | same_proof | same_mandate | same_signature | clean_capacity | equivalent
result:
selected_posture: discharge_with_receipt | renew_with_limit | substitute_carrier | protect_refusal | lawful_escrow_release | publish_deferred_service | quarantine_carrier | default_double_spend
carrier_state_after: <state>
still_open_readers_after: []
future_reader_or_route_effect: <effect>Branch resolution rules
Discharge with receipt
The carrier is released only for a named scope.
Required after-state:
discharge_with_receipt_required:
discharged_scope: whole_source_row | public_only | lawful_only | sponsor_only | archive_only | route_asset_only | equivalent
still_open_readers_after: []
carrier_state_after: released | limited | protected | equivalent
future_effect: clean_for_named_scope | callback_required | costlier | equivalent
universal_clean_discharge_forbidden: trueRenew with limit
The carrier may carry a second row only through visible renewed consent and scope.
renew_with_limit_required:
renewed_consent_source: public_receipt | lawful_annex | oxygen_payment | protected_witness_receipt | explicit_refusal_override_absent | equivalent
renewal_limit: <reader and service scope>
carrier_state_after: limited_renewal | strained | protected | equivalent
future_effect: limited_renewal | public_only | lawful_only | sponsor_only | equivalentSubstitute carrier
The proposed next use moves to another carrier with cost.
substitute_carrier_required:
original_carrier_state_after: released | protected | quarantined | equivalent
substitute_carrier: <carrier or explicit_absence>
substitute_cost_visible: true
future_effect: substitute_required | costlier | contradiction_pending | equivalentProtect refusal
The carrier refuses reuse, and the refusal becomes a playable object.
protect_refusal_required:
refusal_visible: true
refusal_scope: <service or row>
carrier_state_after: protected_refusal | hostile | absent | equivalent
unserved_next_row_state: callback_required | blocked | recovery_only | equivalentLawful escrow release
A lawful reader releases the carrier only for named legal scope.
lawful_escrow_release_required:
lawful_scope_named: true
public_scope_not_clean_by_default: true
future_effect: lawful_only | annex_required | costlier | equivalentPublish deferred service
The discharge conflict becomes public queue state.
publish_deferred_service_required:
deferred_service_public: true
excluded_or_deferred_readers_visible: true
future_effect: public_only | callback_required | contradiction_pending | equivalentQuarantine carrier
The carrier cannot be reused until safety, proof, or custody is repaired.
quarantine_carrier_required:
quarantine_reason: witness_safety | proof_contamination | custody_capture | unpaid_protection | lawful_conflict | equivalent
carrier_state_after: quarantined | protected | absent | equivalent
future_effect: blocked | quarantine_required | recovery_only | equivalentDefault double-spend
The default fires or arms 见证承载双花默认.
default_double_spend_required:
event_seen_or_armed: storyteller.event.witness_carrier_double_spend_default.v1
false_reuse_claim: witness_spoke_for_all | delegate_reused_for_all | prior_receipt_clean_for_all | lawful_annex_clean_for_public | pirate_relay_as_lawful_mandate | mask_as_public_consent | paid_once_so_available | equivalent
default_narrator: <actor>
carrier_state_after: hostile | captured | burned | absent | overdrawn | quarantined | false_clean | recovery_only | equivalent
future_effect: false_clean_reuse | callback_required | discharge_required | blocked | hostile | recovery_only | equivalentCounter contract
Every non-default branch must mutate at least three surfaces:
counter_deltas_required:
relief: at_least_one
cost: at_least_one
future_reader_or_route_effect: at_least_onePrimary counters and durable states:
witness_carrier_capacitywitness_discharge_debtmandate_reuse_pressurefan_oxygen_resentmentpublic_receipt_legitimacypublic_receipt_distrustwitness_retaliation_riskhandler_burdencontract_capturelawful_annex_debtarchive_debtroute_asset_pressurebroadcast_reality_driftfuture_route_cost
Replay evidence expectation
mechanic_id: storyteller.mechanic.witness_carrier_discharge.v1
session_id: lens-witness-carrier-discharge-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
previous_service_exists: true
proposed_next_use_exists: true
carrier_state_before_visible: true
future_reader_or_route_consumes_result: true
no_fixed_turn_trigger: true
offered:
card: storyteller.card.witness_carrier_discharge_receipt.v1
rite: storyteller.rite.witness_carrier_discharge_review.v1
branch_runs:
valid_branch:
selected_posture: discharge_with_receipt | renew_with_limit | substitute_carrier | protect_refusal | lawful_escrow_release | publish_deferred_service | quarantine_carrier
carrier_state_after: <state>
still_open_readers_after: []
future_reader_or_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
event_seen_or_armed: storyteller.event.witness_carrier_double_spend_default.v1
false_reuse_claim: <claim>
default_narrator: <actor>
future_reader_or_route_effect: <effect>
assertions:
- entry_is_state_triggered
- previous_service_and_proposed_reuse_visible
- original_scope_and_new_reader_visible
- carrier_consent_or_refusal_visible
- branch_outcomes_diverge
- success_has_scope_cost_and_future_effect
- default_is_durable
- no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_triggerNon-goals
- Not a global stamina meter.
- Not a rest/upkeep system.
- Not governance.
- Not a duplicate of handler burden; it observes whether a served witness can be reused, not whether a person is tired.
- Not valid unless a later reader or route consumes the discharge result.