Appeal Retaliation Ledger / 申诉报复账本

Appeal Retaliation Ledger is the visible card that records retaliation after a captured metric appeal is suppressed, underfilled, discredited, bought without release, or routed without a future reader.

It sits after 指标捕获申诉案卷 and 指标申诉报复默认. The purpose is to prevent retaliation from becoming ambient punishment. The player should see who retaliated, what reserve or authority they spent, which trace exists, what can be assigned against it, and which future reader will accept, surcharge, or reject the counterpressure.

Entry state

Create or refresh this card when all are true:

entry_state:
  trigger_kind: state_pressure
  source_retaliation_event_present: true
  captured_report_id_present: true
  retaliation_author_present: true
  pressure_trace_or_explicit_absence_visible: true
  future_reader_present: true
  no_fixed_turn_trigger: true

The card does not appear because a fixed numbered turn, day interval, phase quota, chapter quota, raw content count, or lens-health state occurred.

Required fields

card_id: storyteller.card.appeal_retaliation_ledger.v1
state: hidden | retaliation_logged | trace_recorded | counterpressure_open | counterpressure_assigned | pressure_reversed | pressure_split | failed | recovery_only | closed
source_appeal:
  source_docket: storyteller.card.metric_capture_appeal_docket.v1 | equivalent
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1 | equivalent
  captured_report_id: <stable_report_id>
  captured_metric: <metric>
  hidden_debt: <debt_state>
  appeal_gap:
    proof_anchor: present | absent
    appeal_channel: present | absent
    handler: present | absent
    future_reader: present | absent
    retaliation_shield: present | absent
retaliation_row:
  author: board | sponsor | inspector | editor | fan_public | crew_table | route_asset_claimant | blackout_system | equivalent
  named_actor_or_absence: <actor_or_explicit_absence>
  retaliation_vector: discredit | sponsor_retainer | lawful_reversal | public_backfire | crew_leak | route_asset_recapture | false_clean_hardened | recovery_only | equivalent
  demanded_control: report_state | release_wording | legal_status | public_table | route_asset | witness | quote | producer_license | equivalent
  reserve_spent_or_absence: escrow | lien | audit_seal | edit_hold | oxygen_queue | seizure_team | silence_retainer | public_vigil | explicit_absence | equivalent
pressure_trace:
  trace_state: absent | weak | recorded | admissible | public | poisoned
  trace_anchor_or_absence: <receipt_oath_checksum_release_notice_witness_or_explicit_absence>
  trace_owner_or_absence: producer | comptroller | public_receipt | lawful_reader | crew_witness | route_asset_holder | unauthorized_historian | explicit_absence | equivalent
counterpressure_slots:
  selected_mode_or_absence: public_trace_exposure | lawful_stay | sponsor_release_call | route_asset_counterseal | witness_shelter | bait_overcommitment | explicit_no_answer
  handler_or_absence: <handler_or_explicit_absence>
  shield_or_absence: public_receipt | lawful_oath | sponsor_release | route_counterseal | payroll_shelter | edit_mask | explicit_absence | equivalent
  price_or_absence: exposure | bureau_favor_debt | contract_capture | quarantine | payroll | edit_debt | fan_oxygen_liability | explicit_absence | equivalent
future_reader:
  reader_id: <route_or_slot_or_license_or_public_table>
  accepts_after: []
  rejects_or_surcharges_after: []

The ledger is invalid if it records only anger, faction flavor, reputation, or a generic penalty.

Retaliation rows

A retaliation row must name both action and control demand:

AuthorTypical vectorDemanded control
boarddiscredit or false-clean hardeningreport state, producer license
sponsorretainer, release wording, buyoutprivate wording, naming right, silence
inspectorlawful reversal, seizure threatlegal status, archive copy, oath priority
editoredit hold, checksum threatcutroom access, continuity wording
fan publicpublic backfire, oxygen queue breakpublic table, witness wording
crew tableleak, refusal, safety noticecrew scar, pay, future assignment
route-asset claimantrecapture, quarantine challengeroute asset custody or release
blackout systemrecovery-only pressurebroadcast reality state

Counterpressure slots

Each selected response must fill or explicitly omit:

  • selected_mode_or_absence;
  • handler_or_absence;
  • shield_or_absence;
  • price_or_absence;
  • future_reader.

The player may choose a risky explicit absence, but the absence must be stored so 申诉压力反转 can either reverse, split, stay, overcommit, or harden the pressure.

State effects

A resolved ledger should mutate at least three surfaces:

  • one relief: retaliation_pressure_down, trace_legitimacy_up, hidden_debt_legibility_up, route_asset_integrity_up, producer_license_stay, public_receipt_legitimacy_up;
  • one cost: sponsor_stop_loss_pressure_up, inspection_heat_up, bureau_favor_debt_up, contract_capture_up, witness_exposure_up, handler_burden_up, fan_oxygen_liability_up, edit_debt_up;
  • one future reader or route effect: public_table_required, lawful_only, sponsor_release_required, counterseal_required, witness_shelter_required, costlier, recovery_only, reopened_with_scar.

Invalid states

The card is invalid when:

  • it does not point back to a source appeal/default;
  • retaliation author is hidden;
  • trace, handler, shield, price, or future reader is not represented;
  • sponsor release deletes discoverability;
  • route reopening has no scar, surcharge, lawful stay, quarantine, or public table requirement;
  • counterpressure changes only prose, mood, money, or generic reputation.

Replay evidence expectation

card: storyteller.card.appeal_retaliation_ledger.v1
source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1
captured_report_id: <id>
retaliation_row:
  author: <author>
  retaliation_vector: <vector>
  demanded_control: <control>
  reserve_spent_or_absence: <reserve_or_absence>
pressure_trace:
  trace_state: <state>
  trace_anchor_or_absence: <anchor_or_absence>
counterpressure_slots:
  selected_mode_or_absence: <mode_or_absence>
  handler_or_absence: <handler_or_absence>
  shield_or_absence: <shield_or_absence>
  price_or_absence: <price_or_absence>
future_reader: <reader>
assertions:
  - retaliation_is_replay_visible
  - trace_and_slots_are_explicit
  - future_reader_can_consume_result
  - no_fixed_turn_trigger