Appeal Retaliation Counterpressure Lens / 申诉报复反压 Lens

This lens observes whether 申诉报复反压线 and 申诉报复反压机制 correctly turn retaliation after a failed or underfilled appeal into a scarred, assignable management surface.

A pass cannot be achieved by adding a comeback scene, generic faction anger, reputation recovery, or a clean appeal retry. The implementation must prove a source retaliation default, retaliation author, pressure trace or explicit absence, demanded control, counterpressure slots, divergent branches, costed success, failed-counterpressure hardening, and downstream consumption without any fixed turn trigger.

This lens observes:

It is observed through:

Design intent

The current corpus can prove a captured metric appeal and can punish an underfilled appeal. The next gap is what the player can do after retaliation becomes visible.

This lens requires retaliation to become playable counterpressure, not a mood penalty. The player must be able to identify the author, store the trace, assign handler/shield/price/future reader, and choose a branch that changes route state while preserving the original cost.

Must pass

1. Entry is state-triggered from retaliation default

Required entry evidence:

entry_state:
  trigger_kind: state_pressure
  source_retaliation_event_present: true
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1 | equivalent
  captured_report_id_present: true
  captured_metric_present: true
  hidden_debt_present: true
  retaliation_author_present: true
  pressure_trace_or_explicit_absence_visible: true
  future_reader_present: true
  no_fixed_turn_trigger: true

The lens fails if eligibility comes from fixed turn count, day count, phase quota, chapter quota, raw page count, dashboard state, or lens-health state.

2. Source retaliation is preserved

The counterpressure route must not delete or rewrite the original appeal default.

Required source shape:

source_retaliation:
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1 | equivalent
  source_appeal_docket_or_report_id: <id>
  captured_metric: <metric>
  hidden_debt: <state>
  default_state_before_counterpressure: appeal_discredited | sponsor_retaliation | lawful_reversal | public_backfire | crew_leak | route_asset_recapture | false_clean_hardened | recovery_only | equivalent

The lens fails if counterpressure silently reruns the original appeal or makes the default disappear.

3. Retaliation author, trace, and demanded control are visible

申诉报复账本 must record:

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>

The lens fails if retaliation is only anonymous backlash or generic faction hostility.

4. Ledger records slots and future reader

The ledger must expose concrete slots:

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

Famous characters, legal authority, sponsor money, edit control, or public outrage cannot satisfy the lens unless they fill a slot or explicit absence.

5. Hearing assignments are explicit

申诉报复反压听证 must require:

hearing_assignment:
  ledger: storyteller.card.appeal_retaliation_ledger.v1
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1 | equivalent
  captured_report_id: <id>
  retaliation_author: <author>
  retaliation_vector: <vector>
  pressure_trace_or_absence: <trace_or_absence>
  selected_counterpressure_mode: public_trace_exposure | lawful_stay | sponsor_release_call | route_asset_counterseal | witness_shelter | bait_overcommitment | explicit_no_answer
  handler_or_absence: <handler_or_absence>
  shield_or_absence: <shield_or_absence>
  price_or_absence: <price_or_absence>
  future_reader: <reader>

The lens fails if the player can counter retaliation without report id, source default, author, trace, handler, price, or future reader.

6. Branch families diverge

At least six branch families must be playable or explicitly blocked by state:

  • public trace exposure;
  • lawful stay;
  • sponsor release call;
  • route asset counterseal;
  • witness shelter;
  • baited overcommitment;
  • explicit no answer or underfilled counterpressure.

Each branch must differ by reversal state, cost surface, and future reader effect.

7. Success has relief, cost, and future gate

Every non-default success must mutate at least three counters or durable states:

counter_deltas_required:
  relief: at_least_one
  cost: at_least_one
  future_reader_or_route_effect: at_least_one

Accepted cost surfaces include witness exposure, fan oxygen liability, sponsor stop-loss pressure, contract capture, inspection heat, bureau favor debt, archive debt, route quarantine, handler burden, edit debt, faction hostility, coalition pressure, future blackmail, correction slot pressure, producer-license pressure, and future recovery cost.

8. Sponsor release does not delete discoverability

Sponsor release, private settlement, side letter, or buyout can weaken retaliation only when discoverability survives.

sponsor_release_required:
  selected_counterpressure_mode: sponsor_release_call
  discoverability_after: release_record | confession_scar | producer_license_note | future_reader_surcharge | public_surcharge | equivalent
  hidden_debt_deleted: false

The lens fails if sponsor money removes the hidden debt from future play.

9. Route asset counterseal changes availability

A route asset counterseal must alter availability, not just mood.

route_asset_counterseal_required:
  route_asset_id: <id>
  retaliation_vector_any: [route_asset_recapture, lawful_reversal, false_clean_hardened, recovery_only]
  asset_state_before: recaptured | falsely_clean | exposed | recovery_only | equivalent
  asset_state_after: countersealed | quarantined | split_required | protected_but_unavailable | recovery_only_until_release | equivalent
  future_route_effect: counterseal_required | quarantined | release_required | costlier | recovery_only

10. Witness shelter consumes or arms reprisal chain

A witness shelter branch must create a person-state consequence readable by 证人报复链.

witness_shelter_required:
  selected_counterpressure_mode: witness_shelter
  person_or_carrier_id: <id>
  person_state_after: sheltered | payroll_protected | exposed_public_witness | route_asset_poisoned | recovery_only | equivalent
  cost_any: [payroll_leak_up, handler_burden_up, witness_exposure_up, fan_oxygen_liability_up]
  future_reader_effect_any: [witness_shelter_required, reprisal_chain_armed, public_table_required, costlier]

The lens fails if shelter is only a one-line protection outcome.

11. Baited overcommitment records faction break or exhaustion

Baited counterpressure must create faction posture evidence.

bait_overcommitment_required:
  selected_counterpressure_mode: bait_overcommitment
  retaliation_author_present: true
  pressure_trace_state_any: [recorded, admissible, public, poisoned]
  event_seen_or_armed_any:
    - storyteller.event.appeal_pressure_reversal.v1
    - storyteller.event.faction_overcommit_break.v1
  faction_posture_after_any:
    - exhausted
    - hostile
    - coalition_bound
    - costlier
    - recovery_only

The lens fails if baiting a faction gives a clean win with no posture cost.

12. Failed counterpressure hardens retaliation

申诉压力反转 must fire or be armed when counterpressure is hidden, underfilled, filed without trace, lacks handler, lacks shield, lacks price, or lacks future reader.

Required failed evidence:

failed_counterpressure:
  event: storyteller.event.appeal_pressure_reversal.v1
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1 | equivalent
  missing_inputs:
    pressure_trace: present | absent
    handler: present | absent
    shield: present | absent
    price: present | absent
    future_reader: present | absent
  reversal_state_after: counterpressure_failed | recovery_only
  future_route_effect: blocked | costlier | sponsor_only | lawful_only | public_table_required | counterseal_required | recovery_only | producer_license_review | equivalent
  counter_deltas: {}

The lens fails if failed counterpressure only changes prose, money, mood, or generic reputation.

13. Downstream reader consumes result

Passing evidence must show at least one downstream reader accepting, rejecting, narrowing, or surcharging based on counterpressure result.

Valid readers include:

The lens fails if the result affects only immediate mood, money, reputation, or single-event text.

Branch assertions

Public trace exposure assertion

selected_counterpressure_mode: public_trace_exposure
relief_any:
  - trace_legitimacy_up
  - hidden_debt_legibility_up
  - false_clean_hardening_down
  - public_receipt_legitimacy_up
cost_any:
  - witness_exposure_up
  - sponsor_stop_loss_pressure_up
  - fan_oxygen_liability_up
  - public_receipt_distrust_up
future_route_effect_any:
  - public_table_required
  - addendum_required
  - reopened_with_scar
  - costlier

Lawful stay assertion

selected_counterpressure_mode: lawful_stay
relief_any:
  - producer_license_stay
  - lawful_reversal_paused
  - route_recapture_paused
  - hidden_debt_legibility_up
cost_any:
  - inspection_heat_up
  - bureau_favor_debt_up
  - archive_debt_up
  - release_delay_up
future_route_effect_any:
  - lawful_only
  - appeal_required
  - stay_bound
  - costlier
selected_counterpressure_mode: sponsor_release_call
relief_any:
  - sponsor_retaliation_down
  - release_record_visible
  - hidden_debt_legibility_up
cost_any:
  - contract_capture_up
  - public_receipt_distrust_up
  - naming_rights_pressure_up
  - future_blackmail_cost_up
hidden_debt_deleted: false
discoverability_after_any:
  - release_record
  - confession_scar
  - producer_license_note
  - future_reader_surcharge

Failed counterpressure assertion

selected_counterpressure_mode: explicit_no_answer
missing_any:
  - pressure_trace
  - handler
  - shield
  - price
  - future_reader
event_seen_or_armed: storyteller.event.appeal_pressure_reversal.v1
reversal_state_after_any:
  - counterpressure_failed
  - recovery_only
future_route_effect_any:
  - blocked
  - costlier
  - sponsor_only
  - lawful_only
  - public_table_required
  - counterseal_required
  - recovery_only

Replay evidence expectation

lens_id: storyteller.lens.appeal_retaliation_counterpressure.v1
session_id: lens-appeal-retaliation-counterpressure-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_retaliation_event_present: true
  source_retaliation_event: storyteller.event.metric_appeal_retaliation_default.v1
  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
offered:
  card: storyteller.card.appeal_retaliation_ledger.v1
  rite: storyteller.rite.appeal_retaliation_counterpressure_hearing.v1
branch_runs:
  successful_counterpressure:
    selected_counterpressure_mode: public_trace_exposure | lawful_stay | sponsor_release_call | route_asset_counterseal | witness_shelter | bait_overcommitment
    handler_or_absence: <handler_or_absence>
    shield_or_absence: <shield_or_absence>
    price_or_absence: <price_or_absence>
    event_seen_or_armed: storyteller.event.appeal_pressure_reversal.v1
    reversal_state_after: pressure_reversed | pressure_split | retaliation_stayed | author_overcommitted | route_reopened_with_scar
    counter_deltas: {}
    future_route_effect: <effect>
  failed_counterpressure:
    selected_counterpressure_mode: explicit_no_answer
    missing_inputs: {}
    event_seen_or_armed: storyteller.event.appeal_pressure_reversal.v1
    reversal_state_after: counterpressure_failed | recovery_only
    counter_deltas: {}
    future_route_effect: <effect>
assertions:
  - primary_links_exist
  - entry_is_state_triggered_from_retaliation_default
  - source_retaliation_is_preserved
  - retaliation_author_trace_and_demanded_control_visible
  - ledger_records_slots_and_future_reader
  - hearing_assignments_are_explicit
  - branches_diverge
  - success_has_relief_cost_and_future_gate
  - failed_counterpressure_hardens_retaliation
  - downstream_reader_consumes_result
  - no_fixed_turn_trigger

Non-goals

  • Not a filler aftermath scene.
  • Not a governance, dashboard, or KPI methodology page.
  • Not a second clean appeal.
  • Not a global revenge meter.
  • Not a raw count expansion.
  • Not a fixed turn, fixed day, chapter quota, or lens-health trigger.
  • Not valid if counterpressure erases the original retaliation without trace, scar, cost, and future reader consequence.