Correction Slot Auction Lens / 更正档期竞拍 Lens

This lens observes whether 更正档期竞拍线 and 更正档期竞拍机制 correctly make public correction finite, rivalrous, and replay-visible.

It exists because the current mesh can already detect drift, write public contrition, hand off stabilization liability, choose cutroom priority, inherit ending scars, track proxy posture, and absorb production triage. The remaining implementation risk is a free correction button: once proof exists, the old public version disappears without spending a slot, naming the harmed claimant, or mutating the rival correction.

This lens must fail any implementation where correction is a clean retcon, where only the selected correction changes, or where a missed correction does not create a stateful rival narrator/default.

Observable surface

The lens observes:

  • 更正档期案卷 rows;
  • 更正档期听证 assignments;
  • 更正档期违约 when correction is ignored or underfilled;
  • inherited source objects from drift, contrition, stabilization liability, cutroom priority, ending scar, proxy posture, production triage, and route assets;
  • durable mutation of broadcast reality, public receipt, sponsor pressure, inspector pressure, route asset custody, proxy posture, ending scar state, or production lane scar.

Must pass

A valid implementation must prove all of the following.

1. Entry is state-driven

The correction slot must open from live public-version pressure, not from a fixed numbered turn.

Required entry evidence:

entry_state:
  source_surface_any:
    - reality_drift
    - public_contrition
    - stabilization_ticket
    - ending_scar
    - cutroom_queue
    - proxy_row
    - production_triage
    - route_asset
  public_version_to_correct: <version id>
  finite_capacity_any:
    - schedule_slot
    - public_attention
    - edit_lane
    - legal_window
    - sponsor_review
    - witness_exposure
    - fan_oxygen_refund
    - route_asset_access
    - production_lane
    - handler_time
  correction_rows_or_displaced_objects_min: 2
  proof_anchor_or_explicit_absence_present: true
  no_fixed_turn_trigger: true

The lens fails if correction contention opens only because a turn number, chapter number, calendar beat, or content-count target arrived.

2. Docket contains concrete correction rows

更正档期案卷 must contain at least two correction rows, or one correction row plus one displaced scheduled/route object.

Each row or displaced object must include:

slot_id: <stable id>
source_surface: reality_drift | public_contrition | stabilization_ticket | ending_scar | cutroom_queue | proxy_row | production_triage | route_asset | equivalent
public_version_to_correct: <aired version, statement, edit, scar, receipt, route asset, proxy row, or absence>
correction_claimant: inspector | sponsor | archive | editor | fan_public | artist | witness | pirate | proxy | producer | route_claimant | split
claimant_harmed_by_correction: inspector | sponsor | archive | editor | fan_public | artist | witness | pirate | proxy | public_audience | route_claimant | none
proof_anchor: public_receipt | legal_seal | edit_checksum | source_tape | fan_oath | pirate_relay | stabilization_ticket | ending_scar | route_asset | proxy_testimony | explicit_absence
requested_correction_type: public_retraction | lawful_clarification | sponsor_countercopy | editor_patch_note | fan_counterbroadcast | artist_refusal_note | witness_protection_blur | archive_quarantine_note | route_asset_disclaimer
slot_cost: schedule_slot | public_attention | edit_lane | legal_window | sponsor_review | witness_exposure | fan_oxygen_refund | route_asset_access | production_lane | handler_time
rival_row_effect: delayed | suppressed | hostile_narration | counterbroadcast_ready | lawful_only | public_only | recovery_only | captured | costlier | contradiction_pending | blackout_pressure_up
slot_state: demanded | held | contested | assigned | aired | countered | seized | deferred | defaulted | recovery_only
future_route_effect: correction_unlocked_with_scar | clean_version_blocked | sponsor_capture | public_audit_required | lawful_only | public_only | proxy_hostile | route_asset_captured | ending_costlier | blackout_pressure_up

The lens fails if rows are labels such as fix it, issue correction, PR response, or clarify without claimant, harmed claimant, proof, cost, rival effect, and future route effect.

3. Assignment spends finite capacity

更正档期听证 must spend or reserve one finite capacity.

Required assignment evidence:

assignment:
  selected_row_id: <row id>
  selected_handler: yu_lan | shen_luo | baiya | han_yanshuang | inspector_rhee | han_cutroom | sponsor_orion | witness | pirate | proxy | producer | explicit_absence
  proof_anchor_used: <anchor or explicit_absence>
  correction_capacity_spent: schedule_slot | public_attention | edit_lane | legal_window | sponsor_review | witness_exposure | fan_oxygen_refund | route_asset_access | production_lane | handler_time
  claimant_harmed_by_correction: <claimant>

The lens fails if correction resolves without spending slot, attention, lane, legal window, sponsor review, route access, handler time, or equivalent finite capacity.

4. Selected correction mutates a rival row

The selected correction must change at least one rival row or displaced object.

Valid rival mutations include:

  • delayed;
  • suppressed;
  • hostile narration;
  • counterbroadcast ready;
  • lawful-only;
  • public-only;
  • recovery-only;
  • captured;
  • costlier;
  • contradiction pending;
  • black-screen pressure increased.

Required evidence:

rival_mutation:
  selected_row_id: <row id>
  rival_row_or_displaced_object: <row or object id>
  rival_state_before: <state>
  rival_state_after: delayed | suppressed | hostile_narration | counterbroadcast_ready | lawful_only | public_only | recovery_only | captured | costlier | contradiction_pending | blackout_pressure_up
  why_rival_changed: capacity_spent | proof_conflict | claimant_omitted | legal_capture | sponsor_capture | public_attention_spent | route_access_spent | handler_time_spent

The lens fails if the selected row improves and the rival row is unchanged or silently deleted.

5. Branch families remain non-equivalent

The implementation must support at least four non-equivalent branch families among:

  • public correction priority;
  • lawful correction priority;
  • sponsor countercopy priority;
  • editor patch-note correction;
  • counterbroadcast break-through;
  • defer/suppress/default.

Expected non-equivalence:

public_correction_priority:
  relief_any: [public_receipt_legitimacy_up, audience_stability_up, private_capture_blocked, fan_oxygen_trust_up]
  cost_any: [sponsor_pressure_up, inspection_heat_up, witness_exposure_up, route_asset_retaliation_up]
  future_route_effect_any: [correction_unlocked_with_scar, clean_version_blocked, public_audit_required, ending_costlier]
lawful_correction_priority:
  relief_any: [archive_fraud_down, reality_drift_down, lawful_use_unlocked, custody_clarity_up]
  cost_any: [bureau_favor_debt_up, public_distrust_up, schedule_pressure_up, sponsor_conflict_up]
  future_route_effect_any: [lawful_only, public_audit_required, route_asset_captured, correction_unlocked_with_scar]
sponsor_countercopy_priority:
  relief_any: [sponsor_stop_loss_down, slot_pressure_down, budget_strain_down]
  cost_any: [contract_capture_up, public_receipt_distrust_up, fan_oxygen_resentment_up, artist_trust_loss_up]
  future_route_effect_any: [sponsor_capture, public_audit_required, proxy_hostile, clean_version_blocked]
editor_patch_note_correction:
  relief_any: [continuity_hazard_down, slot_legibility_up, audience_churn_down]
  cost_any: [edit_debt_up, source_ambiguity_up, archive_debt_up, future_fraud_cost_up]
  future_route_effect_any: [ending_costlier, public_audit_required, blackout_pressure_up, correction_unlocked_with_scar]
counterbroadcast_breakthrough:
  relief_any: [private_capture_blocked, hidden_harm_visible, public_receipt_legitimacy_up]
  cost_any: [inspection_heat_up, black_screen_pressure_up, sponsor_retaliation_up, witness_exposure_up]
  future_route_effect_any: [public_only, proxy_hostile, blackout_pressure_up, ending_costlier]
default_or_suppression:
  emitted_event: storyteller.event.correction_slot_default.v1
  future_route_effect_any: [sponsor_capture, lawful_only, public_only, proxy_hostile, route_asset_captured, clean_version_blocked, ending_costlier, recovery_only]

The lens fails if public, lawful, sponsor, editor, counterbroadcast, and default corrections all become the same generic success or failure.

6. Default is playable, not flavor

When correction is ignored, underfilled, captured, or left without proof, 更正档期违约 must mutate state.

Required default evidence:

default_event:
  event_seen: storyteller.event.correction_slot_default.v1
  source_slot_id: <slot id>
  failed_requirement: no_handler | no_proof_anchor | no_public_capacity | harmed_claimant_hidden | rival_row_unmutated | correction_capacity_spent_elsewhere | selected_row_abandoned | proof_anchor_discredited
  default_narrator: sponsor | inspector | archive | fan_public | pirate | proxy | route_claimant | blackout_system | public_audience
  claimant_privileged_after: <claimant>
  claimant_harmed_after: <claimant>
  proof_anchor_after: <anchor or explicit_absence>
  slot_state_after: defaulted | countered | seized | recovery_only | hostile_narration | contradiction_pending
  rival_row_effect_after: <effect>
  external_surface_mutated: <surface>
  future_route_effect: <effect>

The lens fails if default only displays warning text, removes a row, or increments a generic danger counter without source slot provenance.

7. Future route mutations preserve source slot

Any mutation to ending eligibility, route asset custody, proxy posture, stabilization liability, production triage, public receipt, or broadcast reality must point back to the correction slot that caused it.

Required bridge evidence:

bridge:
  source_slot_id: <slot id>
  source_public_version_to_correct: <version id>
  proof_anchor_before: <anchor or absence>
  proof_anchor_after: <anchor or absence>
  claimant_privileged_before: <claimant>
  claimant_privileged_after: <claimant>
  claimant_harmed_before: <claimant>
  claimant_harmed_after: <claimant>
  future_route_effect_before: <effect>
  future_route_effect_after: <effect>
  external_surface_mutated: broadcast_reality | public_contrition | stabilization_ticket | ending_scar | cutroom_queue | proxy_posture | production_triage | route_asset | audience_stability

The lens fails if a correction changes an ending, route asset, proxy, or public version because correction_complete = true without row provenance.

8. Multi-session inheritance remains possible

Correction pressure may be created by one session and resolved later. The implementation must preserve source identity.

Required inheritance evidence:

inheritance:
  source_session_id: <session that created drift, contrition, ticket, scar, proxy row, or route asset>
  source_seed: <seed>
  source_surface: <surface>
  source_object_id: <object id>
  docket_session_id: <session that created correction docket>
  docket_seed: <seed>
  resolver_session_id: <session that resolved hearing or default>
  resolver_seed: <seed>
  source_slot_id: <slot id>
  selected_row_id: <row>
  rival_row_id: <row or displaced object>
  selected_state_after: <state>
  rival_state_after: <state>
  external_surface_after: <state>

The lens is incomplete if it only proves an isolated correction scene that cannot inherit older drift, contrition, stabilization, cutroom, proxy, route, or ending-scar objects.

Branch assertions

Public correction assertion

selected_correction_type_any: [public_retraction, fan_counterbroadcast, artist_refusal_note, witness_protection_blur]
slot_state_after: aired
claimant_prioritized_any: [fan_public, artist, witness, pirate, proxy]
claimant_harmed_any: [sponsor, inspector, archive, editor, route_claimant]
proof_anchor_any: [public_receipt, fan_oath, pirate_relay, source_tape, proxy_testimony]
rival_row_state_after_any: [delayed, suppressed, lawful_only, captured, costlier]
future_route_effect_any: [correction_unlocked_with_scar, clean_version_blocked, public_audit_required, ending_costlier]

Lawful correction assertion

selected_correction_type_any: [lawful_clarification, archive_quarantine_note, route_asset_disclaimer]
slot_state_after_any: [aired, lawful_only]
claimant_prioritized_any: [inspector, archive]
claimant_harmed_any: [fan_public, artist, witness, pirate, public_audience, sponsor]
proof_anchor_any: [legal_seal, stabilization_ticket, ending_scar, route_asset]
rival_row_state_after_any: [public_only, delayed, counterbroadcast_ready, recovery_only]
future_route_effect_any: [lawful_only, public_audit_required, route_asset_captured, correction_unlocked_with_scar]
selected_correction_type: sponsor_countercopy
slot_state_after_any: [aired, seized, captured]
claimant_prioritized_any: [sponsor]
claimant_harmed_any: [fan_public, artist, witness, pirate, public_audience]
proof_anchor_any: [stabilization_ticket, edit_checksum, explicit_absence]
rival_row_state_after_any: [suppressed, hostile_narration, counterbroadcast_ready, costlier]
future_route_effect_any: [sponsor_capture, public_audit_required, proxy_hostile, clean_version_blocked]

Editor patch-note assertion

selected_correction_type_any: [editor_patch_note, archive_quarantine_note]
slot_state_after_any: [assigned, aired, recovery_only]
claimant_prioritized_any: [editor, archive, producer]
claimant_harmed_any: [fan_public, artist, witness, sponsor, public_audience]
proof_anchor_any: [edit_checksum, source_tape, route_asset]
rival_row_state_after_any: [delayed, contradiction_pending, recovery_only, costlier]
future_route_effect_any: [ending_costlier, public_audit_required, blackout_pressure_up, correction_unlocked_with_scar]

Counterbroadcast/default assertion

event_seen: storyteller.event.correction_slot_default.v1
selected_by_absence_or_underfill: true
default_narrator_any: [fan_public, pirate, proxy, sponsor, inspector, archive, route_claimant, blackout_system]
slot_state_after_any: [defaulted, countered, seized, recovery_only, hostile_narration, contradiction_pending]
future_route_effect_any: [sponsor_capture, lawful_only, public_only, proxy_hostile, route_asset_captured, clean_version_blocked, ending_costlier, recovery_only, blackout_pressure_up]

Failure cases

The lens must fail if any of these are true:

  • entry is triggered by a fixed numbered turn, chapter beat, arbitrary deadline, or content-count target;
  • no correctable public version is named;
  • correction has fewer than two rows or displaced objects;
  • rows omit claimant, harmed claimant, proof anchor, finite capacity, rival effect, or future route effect;
  • correction resolves without spending finite capacity;
  • selected row changes but rival row does not;
  • rival row is silently deleted;
  • a character resolves all correction pressure cleanly;
  • missing proof or missing handler becomes clean success;
  • default event does not mutate state;
  • public, lawful, sponsor, editor, counterbroadcast, and default branches are equivalent;
  • ending eligibility, route asset custody, proxy posture, production triage, or broadcast reality changes without source slot provenance;
  • correction pressure cannot inherit source objects across sessions.

Passing evidence packet

lens: storyteller.lens.correction_slot_auction.v1
status: pass
session_id: <session id>
seed: <seed>
entry_state:
  source_surface: <surface>
  public_version_to_correct: <version id>
  finite_capacity: <capacity>
  correction_rows_or_displaced_objects_min: 2
  no_fixed_turn_trigger: true
docket_before:
  card: storyteller.card.correction_slot_docket.v1
  rows:
    - slot_id: <row a>
      correction_claimant: <claimant>
      claimant_harmed_by_correction: <claimant>
      proof_anchor: <anchor>
      slot_cost: <cost>
      future_route_effect: <effect>
    - slot_id: <row b or displaced object>
      correction_claimant: <claimant or owner>
      claimant_harmed_by_correction: <claimant>
      proof_anchor: <anchor or absence>
      slot_cost: <cost>
      future_route_effect: <effect>
branch_run:
  rite: storyteller.rite.correction_slot_hearing.v1
  selected_row_id: <row id>
  selected_handler: <handler>
  proof_anchor_used: <anchor>
  correction_capacity_spent: <capacity>
  claimant_harmed_by_correction: <claimant>
resolution:
  selected_state_after: <state>
  rival_row_or_displaced_object: <id>
  rival_state_after: <state>
  external_surface_mutated: <surface>
  future_route_effect: <effect>
default_run_if_any:
  event: storyteller.event.correction_slot_default.v1
  failed_requirement: <requirement>
  default_narrator: <narrator>
  slot_state_after: <state>
assertions:
  - finite_correction_capacity_spent
  - harmed_claimant_named
  - rival_row_mutated
  - default_stateful_if_underfilled
  - source_slot_preserved_into_future_route
  - no_fixed_turn_trigger

Implementation target

A satisfying replay should be able to show one inherited correction demand from an existing drift, contrition, stabilization, cutroom, proxy, route, or ending-scar object; create a correction docket with at least two competing rows or one row plus one displaced object; resolve one branch through the hearing; and show the rival row/state mutation plus downstream surface mutation. It should also be able to demonstrate a default path where missing proof, missing handler, or hidden harmed claimant creates a stateful rival narrator.