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: true

Valid source services include:

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: true

Renew 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 | equivalent

Substitute 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 | equivalent

Protect 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 | equivalent

Lawful 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 | equivalent

Publish 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 | equivalent

Quarantine 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 | equivalent

Default 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 | equivalent

Counter 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_one

Primary counters and durable states:

  • witness_carrier_capacity
  • witness_discharge_debt
  • mandate_reuse_pressure
  • fan_oxygen_resentment
  • public_receipt_legitimacy
  • public_receipt_distrust
  • witness_retaliation_risk
  • handler_burden
  • contract_capture
  • lawful_annex_debt
  • archive_debt
  • route_asset_pressure
  • broadcast_reality_drift
  • future_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_trigger

Non-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.