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: trueThe 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:
| Author | Typical vector | Demanded control |
|---|---|---|
| board | discredit or false-clean hardening | report state, producer license |
| sponsor | retainer, release wording, buyout | private wording, naming right, silence |
| inspector | lawful reversal, seizure threat | legal status, archive copy, oath priority |
| editor | edit hold, checksum threat | cutroom access, continuity wording |
| fan public | public backfire, oxygen queue break | public table, witness wording |
| crew table | leak, refusal, safety notice | crew scar, pay, future assignment |
| route-asset claimant | recapture, quarantine challenge | route asset custody or release |
| blackout system | recovery-only pressure | broadcast 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