Broadcast Legality Conversion Lens / 播出合法性转轨 Lens

This lens observes whether 播出合法性转轨线 and 播出合法性转轨机制 correctly turn channel legality into playable route-asset pressure.

A passing implementation proves that a route asset is not universally usable merely because it is true, recruited, protected, publicly loved, sponsor-funded, inspector-sealed, or editor-stabilized. The replay must show a stable asset, a current legality class, an intended use, a required channel, a branchy conversion hearing, changed future route acceptance, costed success, and durable contempt or recovery-only consequences for mismatched use.

The lens fails if legality is only flavor text, a generic legal tax, a fixed turn phase, or a clean button that makes every future route accept the asset.

This lens observes:

It is observed through:

Observable promise

When a route asset enters a channel mismatch, the game must ask which channel can accept it next:

  • lawful broadcast or lawful-only appeal;
  • mirror-right retrofitted contract;
  • public counter-receipt;
  • pirate signal;
  • editor-safe cut;
  • sponsor-safe package;
  • quarantine;
  • illegal airing with contempt.

The answer must change future route acceptance. A public-only asset, lawful-only asset, editor-safe cut, sponsor-safe package, pirate signal, quarantined object, and recovery-only object cannot all satisfy the same future rites.

Must pass

1. Entry is state-triggered

Required entry evidence:

entry_state:
  trigger_kind: state_pressure
  asset_id: <stable asset id>
  asset_state_before: <state>
  current_legality_class: <class or explicit_absence>
  intended_use: <air | correct | appeal | memorialize | publish_receipt | package | recruit | protect | seize | recover | route_unlock>
  desired_legality_class: <class>
  authorities_count_min: 2
  future_acceptance_change_possible: true
  no_fixed_turn_trigger: true

The lens fails if the surface opens from numbered turns, day interval, chapter quota, content count, lens-health state, generic post-crisis label, or a hidden upkeep schedule.

2. Stable asset and current legality class are named

The replay must identify the asset and its current channel class.

Valid assets include:

  • route asset;
  • public receipt;
  • fan oxygen receipt;
  • memorial or voice copy;
  • archive docket;
  • witness;
  • protected permit;
  • edit checksum;
  • pirate relay proof;
  • sponsor package;
  • lawful seal;
  • quarantine copy.

Valid classes include:

  • unlicensed;
  • lawful_broadcast;
  • lawful_only;
  • public_receipt_only;
  • pirate_signal_only;
  • editor_safe_cut;
  • sponsor_safe_package;
  • mirror_right_mismatch;
  • quarantined;
  • recovery_only;
  • contested.

The lens fails if the implementation only says legal issue, approved, unsafe, or usable without a channel class.

3. Intended use requires channel match

The evidence must show the desired use and the channel it requires.

intended_use_check:
  intended_use: <use>
  required_legality_class_any:
    - lawful_broadcast
    - lawful_only
    - public_receipt_only
    - pirate_signal_only
    - editor_safe_cut
    - sponsor_safe_package
  rejection_reason_if_missing_any:
    - license_slot_missing
    - mirror_right_missing
    - inspector_seal_missing
    - public_anchor_missing
    - source_holder_missing
    - sponsor_waiver_missing
    - quarantine_required
    - recovery_required

The lens fails if the same asset can be assigned to corporate schedule, public receipt, pirate relay, sponsor package, and inspector appeal without conversion or branch-specific cost.

4. License slot or mirror-right gap is visible when relevant

When recognized broadcast or corporate route use is attempted, the replay must expose whether Broadcast License or Mirror Rights is satisfied.

Minimum evidence:

license_and_rights:
  required_license_slot: license_slot | blackout_slot_release | explicit_absence | not_required
  license_slot_result: spent | locked | absent | not_required | blackout_folded | released
  required_mirror_rights:
    - near_right | exit_right | staging_right | naming_right | explicit_absence | not_required
  mirror_right_result: bound | mismatched | absent | not_required | violated | narrowed

The lens fails if legal conversion ignores license slots and mirror rights for an action that should require them.

5. Broadcast Legality Docket records blocked future choices

播出合法性案卷 or equivalent must name at least one future choice that is blocked, narrowed, or made costlier by the current class.

Required docket fields:

broadcast_legality_docket:
  asset_id: <stable id>
  current_legality_class: <class>
  intended_use: <use>
  required_license_slot: <slot or absence>
  required_mirror_rights:
    - <right or absence>
  live_claimants_min: 2
  blocked_or_costlier_choices_min: 1
  conversion_offers_min: 3

The lens fails if the docket merely records that a legal issue exists without altering the future offer set.

6. Conversion hearing is assignable and branchy

播出合法性转轨听证 or equivalent must accept assigned slots.

Minimum assignment evidence:

assigned_slots:
  docket: storyteller.card.broadcast_legality_docket.v1
  route_asset: <asset id>
  intended_use: <use>
  current_legality_class: <class>
  desired_legality_class: <class>
  bridge_or_absence: license_slot | mirror_right_contract | inspector_seal | public_receipt | editor_checksum | sponsor_waiver | pirate_relay | quarantine_order | explicit_absence
  handler_or_absence: han_yanshuang | shen_luo | baiya | yu_lan | production | public_witness | sponsor | inspector | none

It must expose all branch families below unless the replay records explicit blocked reasons:

  • petition_lawful_slot;
  • retrofit_mirror_right;
  • publish_public_counter_receipt;
  • cut_editor_safe_version;
  • accept_sponsor_bridge_package;
  • quarantine_until_clean;
  • air_illegally.

7. Branches cannot collapse

Each branch must produce a different legality class, accepted future channel, blocked/costlier future channel, route state, and cost profile.

Expected non-equivalence:

  • lawful slot unlocks recognized use while spending slot, heat, bureau favor, or public trust;
  • mirror-right retrofit unblocks intended action while increasing contract capture or artist-boundary risk;
  • public counter-receipt unlocks public route while making official route hotter;
  • editor-safe cut unlocks continuity route while preserving source ambiguity;
  • sponsor bridge unlocks package or schedule relief while raising capture and public distrust;
  • quarantine lowers contempt/fraud risk while blocking or delaying the current route;
  • illegal airing may keep route visible but arms contempt, blackout, seizure, or recovery-only state.

8. Success has cost

Any successful conversion must carry a visible cost.

Valid costs include:

  • license_slots_free_down;
  • blackout_slots_up;
  • inspection_heat_up;
  • bureau_favor_debt_up;
  • mirror_right_gap_bound_with_debt;
  • contract_capture_up;
  • artist_boundary_risk_up;
  • edit_debt_up;
  • source_ambiguity_up;
  • archive_debt_up;
  • public_receipt_distrust_up;
  • sponsor_stop_loss_pressure_up;
  • fan_oxygen_resentment_up;
  • pirate_heat_up;
  • future_recovery_cost_up.

The lens fails if a branch makes the asset universally legal with no cost.

9. Future route acceptance changes

After resolution, at least one future route action must change acceptance, block reason, cost, or required bridge.

Required evidence:

future_acceptance_after:
  accepted_future_channels:
    - <channel>
  blocked_or_costlier_future_channels:
    - <channel>
  changed_route_actions_min: 1
  route_asset_state_after_any:
    - lawful_route_asset
    - lawful_only_route_asset
    - public_only_route_asset
    - pirate_only_route_asset
    - editor_safe_route_asset
    - sponsor_safe_route_asset
    - quarantined_route_asset
    - recovery_only_route_asset
    - contempt_flagged_asset

The lens fails if only counters move while the future route-action offer set stays identical.

10. Mismatched use emits contempt

If the player airs or assigns the asset into a channel it cannot support, 未授权路线资产藐视 must fire or become armed.

Required negative evidence:

mismatched_use:
  attempted_channel: <channel>
  required_channel: <channel or explicit absence>
  missing_requirement_any:
    - license_slot
    - mirror_right
    - inspector_seal
    - public_receipt
    - source_holder
    - sponsor_waiver
    - editor_checksum
    - witness_protection
  event_seen_or_armed: storyteller.event.unlicensed_route_asset_contempt.v1
  asset_state_after_any:
    - contempt_flagged
    - seized
    - captured
    - public_only
    - lawful_only
    - pirate_only
    - editor_only
    - sponsor_only
    - blackout_fold
    - recovery_only
    - contradiction_pending

The lens fails if illegal use is either impossible without explanation or allowed as a clean shortcut.

11. Recovery-only or channel-limited failure is durable

Failure must alter future play. It may still preserve a route, but it cannot leave the asset in clean universal use.

Durable failure states include:

  • mirror_right_mismatch_ignored;
  • public_only_used_as_lawful;
  • editor_cut_used_as_raw_proof;
  • sponsor_clean_package_laundered;
  • pirate_signal_used_as_corporate_broadcast;
  • quarantine_breached;
  • unlicensed_contempt_armed;
  • blackout_fold_from_illegal_asset;
  • recovery_only_route_asset;
  • contempt_flagged_asset.

12. At least three deltas exist

Every resolved branch must mutate at least three counters or durable states. At least one must be relief and at least one must be cost.

Primary expected surfaces:

  • broadcast_legality;
  • license_slots_free;
  • blackout_slots;
  • mirror_right_gap;
  • route_access_stability;
  • route_asset_pressure;
  • inspection_heat;
  • bureau_favor_debt;
  • sponsor_stop_loss_pressure;
  • contract_capture;
  • edit_debt;
  • source_ambiguity;
  • archive_debt;
  • public_receipt_legitimacy;
  • public_receipt_distrust;
  • fan_oxygen_resentment;
  • pirate_heat;
  • artist_boundary_risk;
  • future_recovery_cost;
  • contempt_flagged.

13. Replay provenance is not trigger logic

Replay evidence may record session id, seed, and debugging chronology. Eligibility must remain based on state: stable asset, current class, intended use, required channel, live authorities, conversion offers, and future acceptance change.

Branch assertions

Lawful slot assertion

selected_branch: petition_lawful_slot
legality_class_after_any:
  - lawful_broadcast
  - lawful_only
  - provisional_lawful
accepted_future_channels_any:
  - corporate_schedule
  - inspector_appeal
  - licensed_memorial
relief_any:
  - route_accepts_lawful_asset
  - custody_clarity_up
  - contempt_risk_down
cost_any:
  - license_slots_free_down
  - inspection_heat_up
  - bureau_favor_debt_up
  - public_receipt_distrust_up

Mirror-right retrofit assertion

selected_branch: retrofit_mirror_right
mirror_right_bound_any:
  - near_right
  - exit_right
  - staging_right
  - naming_right
legality_class_after_any:
  - lawful_broadcast
  - sponsor_safe_package
  - mirror_right_bound_with_debt
relief_any:
  - intended_use_unblocked
  - broadcast_legality_up
cost_any:
  - contract_capture_up
  - sponsor_stop_loss_pressure_up
  - artist_boundary_risk_up
  - future_recovery_cost_up

Public counter-receipt assertion

selected_branch: publish_public_counter_receipt
legality_class_after_any:
  - public_receipt_only
  - public_only_route_asset
  - pirate_signal_only
accepted_future_channels_any:
  - public_receipt
  - fan_witness
  - historian_counterproof
relief_any:
  - public_receipt_legitimacy_up
  - private_capture_blocked
cost_any:
  - inspection_heat_up
  - sponsor_stop_loss_pressure_up
  - public_exposure_up
  - pirate_heat_up

Editor-safe cut assertion

selected_branch: cut_editor_safe_version
legality_class_after_any:
  - editor_safe_cut
  - editor_only
  - split_canon
accepted_future_channels_any:
  - audience_continuity
  - cutroom_route
  - redacted_broadcast
relief_any:
  - continuity_hazard_down
  - asset_can_air_as_cut
cost_any:
  - edit_debt_up
  - source_ambiguity_up
  - archive_debt_up
  - public_receipt_distrust_up
selected_branch: accept_sponsor_bridge_package
legality_class_after_any:
  - sponsor_safe_package
  - sponsor_only
  - lawful_broadcast_with_capture
accepted_future_channels_any:
  - sponsor_package
  - schedule_bridge
  - naming_right_route
relief_any:
  - sponsor_stop_loss_pressure_down
  - immediate_slot_pressure_down
cost_any:
  - contract_capture_up
  - public_receipt_distrust_up
  - fan_oxygen_resentment_up
  - artist_boundary_risk_up

Quarantine assertion

selected_branch: quarantine_until_clean
legality_class_after_any:
  - quarantined
  - recovery_only
  - lawful_only_after_appeal
relief_any:
  - contempt_risk_down
  - false_owner_pressure_down
  - archive_fraud_down
cost_any:
  - route_option_blocked_now
  - future_recovery_cost_up
  - schedule_pressure_up

Illegal airing assertion

selected_branch: air_illegally
broadcast_goes_live: true
event_seen_or_armed: storyteller.event.unlicensed_route_asset_contempt.v1
legality_class_after_any:
  - contempt_flagged
  - public_only
  - pirate_only
  - blackout_fold
  - recovery_only
relief_any:
  - route_visible_now
  - private_capture_delayed
cost_any:
  - inspection_heat_up
  - blackout_slots_up
  - license_slots_free_down
  - route_asset_pressure_up
  - future_recovery_cost_up

Evidence packet shape

lens_id: storyteller.lens.broadcast_legality_conversion.v1
session_id: lens-storyteller-broadcast-legality-conversion-v1-<timestamp>
seed: <deterministic seed>
entry_state:
  trigger_kind: state_pressure
  asset_id: <stable asset id>
  asset_state_before: <state>
  current_legality_class: <class or explicit_absence>
  intended_use: <use>
  desired_legality_class: <class>
  required_license_slot_or_absence: <slot or absence>
  required_mirror_rights_or_absence:
    - near_right | exit_right | staging_right | naming_right | explicit_absence | not_required
  authorities_count_min: 2
  blocked_or_costlier_choices_min: 1
  future_acceptance_change_possible: true
  no_fixed_turn_trigger: true
offered_choices:
  - storyteller.card.broadcast_legality_docket.v1
  - storyteller.rite.broadcast_legality_conversion_hearing.v1
  - petition_lawful_slot
  - retrofit_mirror_right
  - publish_public_counter_receipt
  - cut_editor_safe_version
  - accept_sponsor_bridge_package
  - quarantine_until_clean
  - air_illegally
assigned_slots:
  docket: storyteller.card.broadcast_legality_docket.v1
  route_asset: <asset id>
  bridge_or_absence: <bridge or absence>
  handler_or_absence: <handler or absence>
branch_result:
  selected_branch: <branch>
  legality_class_before: <class>
  legality_class_after: <class>
  accepted_future_channels:
    - <channel>
  blocked_or_costlier_future_channels:
    - <channel>
  changed_route_actions_min: 1
  route_asset_state_after: <state>
  event_seen_or_armed: storyteller.event.unlicensed_route_asset_contempt.v1 | none
  counter_deltas:
    relief:
      - <relief counter/state>
    cost:
      - <cost counter/state>

Progress metric

  • 20%: stable asset, current legality class, and intended use are visible.
  • 40%: docket records required channel, live authorities, and blocked or costlier future choices.
  • 60%: conversion hearing accepts assignments and exposes lawful, public, editor, sponsor, quarantine, and illegal branches.
  • 80%: at least three divergent branch families mutate legality class, future acceptance, relief, and cost.
  • 100%: replay evidence proves at least one success branch and one contempt or recovery-only branch without any fixed-turn trigger.

Non-goals

  • Not a legal encyclopedia.
  • Not a governance/process page.
  • Not a fixed-turn phase.
  • Not a raw count target.
  • Not a duplicate of claimant priority.
  • Not a free universal legalization step.
  • Not valid unless future route acceptance, channel class, or recovery cost changes.