Public Silence Surcharge / 公开沉默附加费机制

Public Silence Surcharge is the mechanism for charging, narrowing, or defaulting a route when a privately valid ruling lacks a public receipt.

It is the public-receipt afterlife of 裁定执行负荷机制. A source row can be valid, but if the public reader has no receipt, future public use must become costlier, lawful-only, split, quarantined, or recovery-only.

Design problem

The corpus now supports many valid rulings and enforcement rows. Without this mechanism, those rows can quietly become universal proof: management files a clean report, sponsor pressure falls, archive acceptance improves, and a public route later behaves as if public service happened.

This mechanism makes absence operational. Public silence can be useful, but it is never neutral.

State-triggered entry

Open or update this mechanism when all are true:

entry_state:
  trigger_kind: state_pressure
  source_ruling_or_load_row_present: true
  source_row_preserved_not_retried: true
  public_receipt_missing_or_contested: true
  benefited_desk_visible: true
  omitted_public_reader_visible: true
  future_public_reader_present: true
  player_response_available: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true

Valid source rows include ruling-enforcement load rows, public receipt rows, lawful service rows, archive orders, sponsor settlements, management compression reports, broadcast contract readbacks, and public recap liability rows.

Core object model

ObjectMeaningRequired observable field
public_silence_surcharge_ledgervisible record of the missing receiptsource row, silent surface, benefited desk, omitted reader
public_silence_source_rowprivate row that remains valid but publicly unreadsource id and why it cannot count as public receipt
public_silence_reader_tablepublic/fan/claimant/route readers who will surcharge or narrowdemanded surface and future effect
public_silence_surcharge_reviewassignable review of publish/split/compress/default posturebranch family, relief, cost, future reader
public_silence_surcharge_defaultdurable event for counting silence as clean serviceclean-service misuse and future surcharge

State machine

states:
  - silence_unseen
  - ledger_open
  - receipt_published_with_cost
  - lawful_public_acceptance_split
  - silence_compressed
  - public_surcharge_default_armed
  - future_public_reader_surcharged
  - recovery_only_public_afterlife

The state machine must preserve the source row. Publishing the receipt changes public afterlife; it does not retry the ruling.

Branch families

Publish receipt with cost

The public receipt is filed late, visibly, and with a named cost.

Expected result:

relief_any: [public_receipt_legitimacy_up, future_reader_accepts_with_cost]
cost_any: [inspection_heat_up, sponsor_capture_pressure_up, public_exposure_up]
future_reader_effect_any: [accepted_with_cost, public_table_accepts_with_scar]

Split lawful and public acceptance

The source row remains usable by lawful/archive desks, but public route use needs a separate receipt or narrower path.

Expected result:

relief_any: [archive_legitimacy_up, lawful_reader_acceptance_up]
cost_any: [route_access_narrowing_up, public_receipt_gap_visible]
future_reader_effect_any: [lawful_only_public_receipt_required, narrowed]

Compress silence

Management or sponsor reporting counts the private row as useful pressure relief while preserving the missing public receipt as debt.

Expected result:

relief_any: [sponsor_stop_loss_pressure_down, management_pressure_down]
cost_any: [fan_refund_debt_up, future_reader_surcharge_up]
future_reader_effect_any: [surcharge_hardened, sponsor_only_or_recovery_only]

Default surcharge

The next public reader narrates first because the missing receipt was counted as clean service.

Expected result:

event_seen_or_armed: event.storyteller.public_silence_surcharge_default.v1
cost_any: [future_reader_surcharge_up, route_access_narrowing_up, inspection_heat_up]
future_reader_effect_any: [accepted_only_with_surcharge, recovery_only_or_surcharged]

Counter contract

Every branch must mutate at least three surfaces:

  • one relief surface;
  • one cost surface;
  • one future public reader or route effect.

Primary surfaces:

surfaces:
  - public_receipt_gap
  - public_receipt_legitimacy
  - future_reader_surcharge
  - fan_refund_debt
  - inspection_heat
  - sponsor_capture_pressure
  - sponsor_stop_loss_pressure
  - route_access_narrowing
  - archive_legitimacy
  - management_pressure
  - public_reader_acceptance

Integration rules

Replay evidence contract

mechanic: storyteller.mechanic.public_silence_surcharge.v1
session_id: lens-storyteller-lens-public-silence-surcharge-v1-<timestamp>
seed: public-silence-surcharge-20260703
entry_state:
  trigger_kind: state_pressure
  source_ruling_or_load_row_present: true
  public_receipt_missing_or_contested: true
  future_public_reader_present: true
resolved:
  rite: rite.storyteller.public_silence_surcharge_review.v1
  selected_branch: publish_receipt_with_cost | split_lawful_public_acceptance | compress_silence | default_surcharge
  assignments_min: 3
  flags_any:
    - public_silence_surcharge.review_offered
    - public_receipt_gap.visible
    - future_public_reader.waiting
    - public_receipt_published_with_cost
    - future_reader_accepts_with_cost

Non-goals

Not a public sentiment system, PR minigame, generic reputation penalty, lawful-service duplicate, or sponsor apology. The mechanic only exists when a future reader would otherwise treat absent public service as neutral.