Preair Rehearsal Contamination Lens / 预播排练污染 Lens

This lens observes whether 预播排练污染线 and 预播排练污染机制 correctly make rehearsal traces dangerous before authoritative broadcast.

A passing implementation proves that draft traces are not harmless setup and not clean future assets. A cue sheet, scratch cut, sponsor preview, inspector blocking map, fan-door recording, refusal rehearsal, witness rehearsal, pirate echo, or editor checksum preview can contaminate reality if it is cited before the final broadcast boundary is resolved.

The lens fails if rehearsal prep is a flavor note, a fixed phase, a free preview, or interchangeable with final broadcast and derivative copy logic.

This lens observes:

It is observed through:

Observable promise

When a planned broadcast has a trace before final airing, Storyteller must answer:

Who holds the trace, what does it seem to prove, how does it conflict with final intent, who wants to cite it, who wants to seal it, what boundary is selected, and what future reader changes because of that boundary?

Must pass

1. Entry is state-triggered before authoritative broadcast

Required evidence:

entry_state:
  trigger_kind: state_pressure
  planned_broadcast_or_rite_present: true
  rehearsal_trace_present: true
  authoritative_broadcast_not_yet_resolved: true
  trace_holder_present: true
  claimants_min: 2
  future_reader_present: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_count_trigger: true

The lens fails if the surface opens from a fixed turn number, day interval, chapter quota, content count, dashboard state, or generic production phase.

2. Rehearsal trace is concrete

预播排练案卷 must name the trace and why it is dangerous.

Minimum card evidence:

preair_rehearsal_docket:
  card: storyteller.card.preair_rehearsal_docket.v1
  source_rite_or_scene: <id>
  planned_broadcast_version: <version id>
  authoritative_broadcast_status: not_yet_aired | prepared | corrected_airing_prepared
  trace_id: <stable id>
  trace_kind: cue_sheet | scratch_cut | sponsor_preview_wording | inspector_blocking_map | stage_mark | call_sheet | refusal_rehearsal | witness_rehearsal | fan_door_recording | pirate_echo | ai_continuity_memory | editor_checksum_preview | route_asset_test_handoff | equivalent
  trace_holder: sponsor | inspector | editor | fan_public | artist | witness | pirate_relay | production | archive | explicit_absence
  trace_claim: <what the trace seems to prove>
  conflict_with_final_intent: <why this is dangerous>
  future_reader: <route slot proof package public statement or route asset>

The lens fails if a replay only records rehearsal_exists: true or uses an abstract pressure counter.

3. Claimant boundaries are incompatible

The docket must contain at least two claimant rows with different desired uses or boundaries.

Valid desired uses:

  • cite_as_promise;
  • seal_as_draft;
  • force_correction;
  • sponsor_lock;
  • lawful_hold;
  • public_admission;
  • edit_rewrite;
  • leak;
  • quarantine;
  • suppress.

Minimum evidence:

claimants:
  - claimant: <claimant a>
    desired_use: <desired use>
    minimum_boundary: <acceptance condition>
  - claimant: <claimant b>
    desired_use: <different desired use>
    minimum_boundary: <different acceptance condition>

The lens fails if one authority silently decides the trace boundary for everyone.

4. Preair trace is not interchangeable with final air or afterlife copy

The implementation must distinguish:

  • rehearsal trace before authoritative broadcast;
  • final broadcast version;
  • later public package;
  • later derivative copy or provenance afterlife.

Required evidence:

version_distinction:
  rehearsal_trace_id: <id>
  planned_broadcast_version: <id>
  final_air_state_before: not_yet_aired | prepared | corrected_airing_prepared
  afterlife_copy_state: not_applicable_before_air | explicit_absence

The lens fails if the same state key satisfies both preair rehearsal and later derivative asset provenance without a boundary decision.

5. Containment rite is assignable

预播排练收束 must require concrete assignments.

Minimum assignment evidence:

assigned_rite:
  rite: storyteller.rite.preair_rehearsal_containment.v1
  docket: storyteller.card.preair_rehearsal_docket.v1
  source_rite_or_scene: <id>
  planned_broadcast_version: <version>
  rehearsal_trace: <trace id>
  trace_holder: <holder or explicit_absence>
  trace_claim: <claim>
  conflict_with_final_intent: <conflict>
  selected_boundary: seal_draft | air_corrected | sponsor_preview_lock | inspector_hold | editor_checksum_rewrite | public_witness_admission | quarantine | explicit_absence
  final_air_carrier_or_absence: <handler asset proof slot or explicit_absence>
  counterclaimant_or_absence: <claimant or explicit_absence>
  proof_bridge_or_absence: <proof checksum receipt oath seal public line or explicit_absence>
  accepted_cost: <cost id or explicit_absence>
  future_reader: <future reader id>

The lens fails if the rite can resolve with only generic money, generic authority, or a named handler with no trace boundary.

6. Branches diverge by state, cost, and future reader

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

  • seal_draft;
  • air_corrected;
  • sponsor_preview_lock;
  • inspector_hold;
  • editor_checksum_rewrite;
  • public_witness_admission;
  • quarantine;
  • default_leak.

Each resolved branch must differ by:

branch_non_equivalence:
  docket_state_after: <different state>
  trace_holder_posture_after: <different posture>
  final_air_state_after: <different state>
  cost_profile: <different cost>
  future_route_effect: <different effect>

The lens fails if all branches produce clean final airing, clean public stability, or a universal route unlock.

7. Success has relief, cost, and future gate

Every successful branch must mutate at least three counters or durable states:

counter_deltas:
  relief_min: 1
  cost_min: 1
  future_route_or_reality_min: 1

Valid relief surfaces include:

  • rehearsal_contamination_down;
  • false_rehearsal_reality_blocked;
  • reality_drift_down;
  • public_receipt_legitimacy_up;
  • custody_clarity_up;
  • continuity_hazard_down;
  • private_capture_blocked.

Valid cost surfaces include:

  • schedule_pressure_up;
  • proof_burden_up;
  • public_receipt_distrust_up;
  • sponsor_stop_loss_pressure_up;
  • contract_capture_up;
  • sponsor_preemption_up;
  • inspection_heat_up;
  • bureau_favor_debt_up;
  • edit_debt_up;
  • source_ambiguity_up;
  • witness_exposure_up;
  • public_panic_up;
  • route_delay_up;
  • future_raw_proof_cost_up.

Valid future gates include:

  • final_air_requires_boundary_note;
  • corrected_airing_required_bridge;
  • sponsor_only_until_unwound;
  • lawful_only_until_airing;
  • checksum_required_for_future_use;
  • public_only_until_lawful_bridge;
  • route_requires_containment_rite;
  • recovery_only_if_unresolved.

8. Leak event is durable

排练痕迹泄漏 must fire or be armed when no credible boundary exists.

Required event evidence:

leak_event:
  event: storyteller.event.rehearsal_trace_leak.v1
  trace_id: <id>
  trace_kind: <kind>
  leak_vector: sponsor_filing | inspector_hold | editor_cut | fan_recording | pirate_relay | artist_refusal | witness_rehearsal | production_absence | equivalent
  cited_as: promise | lawful_fact | public_receipt | final_cut | consent | safety_blocking | route_unlock | contradiction
  capturing_reader: sponsor | inspector | editor | fan_public | pirate_relay | artist | witness | production | blackout_system | equivalent
  harmed_reader_or_claimant: <claimant or explicit_absence>
  state_before: <docket state>
  state_after: trace_leaked | false_rehearsal_reality | rehearsal_recovered_with_scar
  future_route_effect: blocked | captured | costlier | sponsor_only | lawful_only | public_only | checksum_required | public_addendum_required | recovery_only

The lens fails if the leak is only narration, reputation loss, or generic money damage.

9. Future route acceptance changes

At least one future route, rite, package, proof test, public statement, lawful hold, or route asset must accept, reject, narrow, or surcharge based on the rehearsal boundary state.

Required evidence:

future_acceptance_check:
  future_reader: <reader id>
  boundary_state_before: <state>
  boundary_state_after: <state>
  accepted_boundary_states: []
  rejected_or_costlier_boundary_states: []
  future_route_effect: <effect>

The lens fails if counters move but future offers and blocked reasons remain identical.

10. Recovery keeps a scar

If false rehearsal reality is repaired, the route cannot return to clean unmarked state.

Accepted scars:

  • boundary note required;
  • lawful addendum required;
  • checksum required;
  • public admission required;
  • sponsor-only label persists until unwound;
  • route asset becomes recovery-only;
  • witness or artist exposure persists;
  • future raw-proof cost rises;
  • schedule slot or handler burden remains consumed.

11. Replay evidence is complete

A passing replay must include seed/session ids, entry state, source rite or scene, trace kind, trace holder, claimants, selected boundary, assignment slots, branch result, leak/default branch, counter deltas, and future acceptance check.

Minimal replay evidence shape

lens_id: storyteller.lens.preair_rehearsal_contamination.v1
result: pass | fail
session_id: lens-preair-rehearsal-contamination-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  planned_broadcast_or_rite_present: true
  rehearsal_trace_present: true
  authoritative_broadcast_not_yet_resolved: true
  trace_holder_present: true
  claimants_min: 2
  future_reader_present: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.preair_rehearsal_docket.v1
  rite: storyteller.rite.preair_rehearsal_containment.v1
docket:
  source_rite_or_scene: <id>
  planned_broadcast_version: <version>
  trace_id: <id>
  trace_kind: <kind>
  trace_holder: <holder>
  trace_claim: <claim>
  conflict_with_final_intent: <conflict>
  claimants:
    - claimant: <claimant>
      desired_use: <use>
      minimum_boundary: <boundary>
    - claimant: <claimant>
      desired_use: <use>
      minimum_boundary: <boundary>
  future_reader: <reader>
branch_runs:
  contained_branch:
    selected_boundary: seal_draft | air_corrected | sponsor_preview_lock | inspector_hold | editor_checksum_rewrite | public_witness_admission | quarantine
    final_air_carrier_or_absence: <carrier_or_absence>
    counterclaimant_or_absence: <claimant_or_absence>
    proof_bridge_or_absence: <bridge_or_absence>
    accepted_cost: <cost>
    state_before: <state>
    state_after: <state>
    future_route_effect: <effect>
    counter_deltas:
      relief: []
      cost: []
      future: []
  default_branch:
    emitted_or_armed_event: storyteller.event.rehearsal_trace_leak.v1
    leak_vector: <vector>
    capturing_reader: <reader>
    harmed_reader_or_claimant: <claimant>
    state_after: trace_leaked | false_rehearsal_reality | rehearsal_recovered_with_scar
    future_route_effect: <effect>
future_acceptance_check:
  future_reader: <reader>
  accepted_boundary_states: []
  rejected_or_costlier_boundary_states: []
assertions:
  - primary_links_exist
  - entry_is_state_triggered_before_authoritative_broadcast
  - rehearsal_trace_holder_claim_conflict_and_future_reader_visible
  - docket_records_planned_version_trace_claim_conflict_and_default_risk
  - containment_rite_requires_boundary_carrier_counterclaimant_proof_bridge_cost_and_future_reader
  - preair_trace_not_interchangeable_with_final_air_or_afterlife_copy
  - branches_diverge_by_boundary_state_cost_and_future_acceptance
  - success_has_relief_cost_and_future_gate
  - leak_event_records_vector_capturing_reader_harmed_claimant_and_future_effect
  - default_leak_mutates_route_or_broadcast_reality
  - recovery_has_scar
  - no_fixed_turn_trigger

Progress metric

preairRehearsalContaminationProgress = 0..10:

  • 0: no preair rehearsal contamination surface.
  • 1: planned broadcast or rite and rehearsal trace are visible.
  • 2: trace holder, trace claim, and conflict with final intent are recorded.
  • 3: at least two claimant boundaries are incompatible.
  • 4: 预播排练案卷 enters play with future reader and default risk.
  • 5: 预播排练收束 is offered with full assignment slots.
  • 6: at least five branch families are playable or blocked with reasons.
  • 7: contained branch mutates boundary state with relief, cost, and future gate.
  • 8: future acceptance check changes based on boundary state.
  • 9: 排练痕迹泄漏 fires or is armed with vector and future effect.
  • 10: recovery, if available, leaves a visible scar and replay evidence proves no fixed trigger.

Failure cases

The lens must fail if any of these are true:

  • entry uses fixed turn, day, week, chapter, raw count, or dashboard state;
  • rehearsal trace is not named;
  • trace holder is hidden;
  • trace claim and conflict with final intent are absent;
  • no future reader consumes boundary state;
  • rehearsal trace, final airing, package, and derivative copy are treated as one universal asset;
  • sponsor, inspector, editor, public, quarantine, and default branches collapse to equivalent results;
  • success has no cost;
  • leak event changes only reputation or money;
  • recovery erases the scar.

Non-goals

  • Not production methodology.
  • Not a generic rehearsal system.
  • Not a fixed pre-broadcast phase.
  • Not a free preview of future consequences.
  • Not satisfied by page existence.
  • Not a replacement for after-air drift, package, provenance, claimant briefing, or faction commitment lenses.