Voice Substitution Liability Lens / 声音替身责任 Lens
This lens observes whether 声音替身责任线 and 声音替身责任机制 correctly make cross-character voice substitution playable.
A pass proves that 黎星瞳自我线 and Iris’s memorial voice probate surfaces cannot erase each other. A living voice is not memorial permission. A probated memorial voice is not living consent. When broadcast reality, sponsor pressure, archive law, public grief, cutroom continuity, or route assets ask one voice to stand in for another, the implementation must expose both source rows, both boundaries, the requested substitution, future reader, liability carrier, branch cost, and durable default.
Primary observation link
This lens observes:
- 声音替身责任线;
- 声音替身责任机制;
- 黎星瞳自我线;
- Iris Vale 纪念声权验讫线;
- Iris Vale 声权验讫残留线;
- Iris Vale 验讫后用引证线;
- Broadcast Reality;
- Archive Voice Custody;
- Route Assets and Custody.
It is observed through:
Observable promise
Storyteller must prove that a substituted voice creates a liability transfer. The player may keep voices separate, accept a scarred revoice, use a probate rider, split the receipt, take a sponsor clean blend, quarantine the slot, or default into miscast liability. None of those branches may let Iris’s voice become clean Xingtong consent or let Xingtong’s voice become clean Iris probate permission.
The lens fails if the implementation stores only voice_allowed, clip_ok, consent_done, probate_done, blend_clean, or stabilized.
Must pass
1. Entry requires live and memorial voice surfaces
A valid replay or state inspection must show:
entry_state:
trigger_kind: state_pressure
live_voice_surface_present: true
memorial_voice_surface_present: true
requested_substitution_present: true
source_boundaries_known_or_explicitly_absent: true
future_broadcast_or_route_reader_present: true
liability_carrier_can_change: true
player_can_select_or_default_substitution_posture: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_count_trigger: true
no_dashboard_or_lens_health_trigger: trueAccepted live voice surfaces include 星瞳自我案卷, 未剪辑真唱母带, 艺人拒忆回执, or explicit absence.
Accepted memorial voice surfaces include Iris Vale 纪念声权验讫案卷, Iris 声权验讫残留账本, Iris Vale 验讫后用引证账本, or explicit absence.
The lens fails if entry opens from fixed turn count, day/week interval, chapter quota, raw count, dashboard state, lens health, or generic production pressure.
2. Source boundaries are visible or explicitly absent
The implementation must preserve source identity:
source_boundary_required:
live_voice_source:
character: li_xingtong
source_surface: <surface or explicit_absence>
living_artist_state: present | protected | pressured | compromised | unavailable | hostile | recovery_only | explicit_absence
living_boundary_or_absence: <boundary or explicit_absence>
memorial_voice_source:
character: iris_vale
source_surface: <surface or explicit_absence>
memorial_voice_state: probated | residue | quarantined | cited_afteruse | breached | recovery_only | explicit_absence
memorial_boundary_or_absence: <boundary or explicit_absence>The lens fails if living voice, memorial voice, or either boundary is inferred from mood text, handler presence, sponsor payment, or broadcast need.
3. Docket records substitution and liability transfer
声音替身责任案卷 or equivalent must record:
docket_required:
live_voice_source: <source or explicit_absence>
memorial_voice_source: <source or explicit_absence>
requested_substitution:
mode: live_covers_memorial | memorial_covers_live | duet_split | chorus_blend | checksum_blend | sponsor_clean_sync | public_echo | route_unlock_voice | equivalent
requested_line_or_slot: <line slot route or explicit_absence>
requesting_actor: sponsor | cutroom | archive | fan_public | inspector | manager | pirate_relay | route_asset | broadcast_reality | equivalent
future_reader: broadcast_reality | archive_reader | lawful_reader | fan_public | sponsor_gate | route_asset | correction_slot | equivalent
liability_carrier_before: <actor or explicit_absence>
proposed_liability_carrier_after: li_xingtong | iris_probate_row | producer | sponsor | archive | cutroom | public | split | none | equivalent
hidden_boundary_risk: <risk or explicit_absence>The lens fails if the docket can be reduced to clean permission, edit usability, or generic stabilization.
4. Hearing assignment is explicit
声音替身责任听证 or equivalent must require:
assignment_required:
docket: storyteller.card.voice_substitution_liability_docket.v1
live_voice_source_or_absence: <source or explicit_absence>
memorial_voice_source_or_absence: <source or explicit_absence>
requested_substitution: <mode>
future_reader: <reader>
recognition_surface: separate_rows | living_consent_scar | probate_rider | split_duet_receipt | sponsor_clean_blend | quarantine_blackout | explicit_absence
handler_or_absence: <handler or explicit_absence>
liability_carrier_after: <carrier>
cost_surface_or_absence: <cost or explicit_absence>
excluded_reader_or_absence: <reader or explicit_absence>The lens fails if the player can choose a voice patch without naming source rows, recognition surface, liability carrier, cost, and future route effect.
5. Branch families diverge
At least five branch families must be playable or explicitly blocked by state, including one default family:
- keep voices separate;
- living revoice with explicit scar;
- memorial sample patch with probate rider;
- split duet receipt;
- sponsor clean blend;
- quarantine or blackout slot;
- miscast liability default.
Each branch must differ by voice state after, reader state after, cost surface, and future route effect.
6. Branch-specific assertions
Keep voices separate
selected_branch: keep_voices_separate
relief_any: [voice_integrity_up, xingtong_selfhood_up, iris_boundary_preserved, false_clean_risk_down]
cost_any: [schedule_pressure_up, audience_stability_down, sponsor_stop_loss_pressure_up, route_asset_pressure_up, fan_oxygen_resentment_up]
future_effect_any: [lawful_only, public_only, route_costlier, substitution_blocked_until_bridge]
forbidden: [universal_voice_permission]Living revoice with explicit scar
selected_branch: living_revoice_with_explicit_scar
relief_any: [broadcast_legibility_up, public_receipt_legitimacy_up, route_legibility_up]
cost_any: [xingtong_consent_debt_up, artist_boundary_risk_up, iris_afteruse_rider_required, inspection_heat_up]
future_effect_any: [living_consent_scar_required, iris_citation_rider_required, future_memorial_use_costlier]
forbidden: [living_voice_as_clean_memorial_probate]Memorial sample patch with probate rider
selected_branch: memorial_sample_patch_with_probate_rider
relief_any: [continuity_hazard_down, slot_survival_up, audience_stability_up]
cost_any: [voice_integrity_risk_up, archive_debt_up, fan_oxygen_resentment_up, public_receipt_distrust_up]
future_effect_any: [memorial_sourced_not_living_consent, lawful_or_public_rider_required, later_live_voice_hearing_required]
forbidden: [memorial_voice_as_living_consent]Split duet receipt
selected_branch: split_duet_receipt
relief_any: [public_receipt_legitimacy_up, false_private_capture_down, source_trace_up]
cost_any: [source_ambiguity_up, edit_debt_up, sponsor_pressure_up, handler_burden_up]
future_effect_any: [split_reader_handling_required, universal_acceptance_blocked, correction_slot_possible]
forbidden: [split_receipt_as_universal_acceptance]Sponsor clean blend
selected_branch: sponsor_clean_blend
relief_any: [sponsor_stop_loss_pressure_down, schedule_pressure_down, audience_stability_up]
cost_any: [contract_capture_up, xingtong_selfhood_down, iris_boundary_breach_up, public_receipt_distrust_up]
future_effect_any: [sponsor_only, breach_armed, recovery_only_if_challenged]
forbidden: [sponsor_money_as_clean_voice]Quarantine or blackout slot
selected_branch: quarantine_or_blackout_slot
relief_any: [false_clean_risk_down, voice_integrity_protected, contempt_risk_down]
cost_any: [black_screen_pressure_up, fan_oxygen_resentment_up, sponsor_stop_loss_pressure_up, route_asset_pressure_up]
future_effect_any: [immediate_route_blocked, lawful_or_public_bridge_required, recovery_only_substitution]
forbidden: [quarantine_as_clean_resolution]Miscast liability default
selected_branch: miscast_liability_default
event_seen_or_armed: storyteller.event.voice_miscast_liability_default.v1
hidden_or_false_source_any:
- live_voice_source_hidden
- memorial_voice_source_hidden
- living_boundary_hidden
- memorial_boundary_hidden
- memorial_voice_filed_as_living_consent
- living_consent_filed_as_memorial_permission
- sponsor_clean_blend_without_scar
- checksum_blend_hides_source_voice
future_effect_any:
- false_living_consent
- false_memorial_permission
- sponsor_only
- public_only
- lawful_only
- route_asset_capture
- correction_slot_required
- recovery_only7. Successful branches have relief, cost, and future effect
Every non-default branch 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_one8. Reader states diverge
Passing evidence must show reader states after resolution:
reader_states_after:
live_voice_reader: accepted_with_cost | protected | narrowed | hostile | blocked | recovery_only | explicit_absence | equivalent
memorial_voice_reader: accepted_with_cost | cited_with_rider | protected | narrowed | hostile | blocked | recovery_only | explicit_absence | equivalent
broadcast_reader: watchable_with_scar | split | sponsor_only | public_only | lawful_only | contradiction_pending | blocked | recovery_only | equivalent
excluded_reader_or_absence: <state or explicit_absence>At least two reader states must differ. The lens fails if every reader accepts the same blended voice.
9. Miscast default is durable
声音错配责任默认 must name false liability carrier, hidden boundary, first reader or actor, excluded reader, future route effect, and at least three deltas.
The default must mutate future play through Xingtong selfhood, Iris afteruse citation, broadcast reality drift audit, ruling reader collision, correction slot, or route asset custody.
Oracle assertions
A binding check should fail unless all assertions below are true.
- Primary links exist —
observesandobserved_througharrays are populated with concrete wiki pages. - Entry is state-triggered — entry requires live voice, memorial voice, requested substitution, future reader, and liability carrier pressure; no fixed chronology or raw count.
- Both source surfaces are visible or explicitly absent — living source and memorial source cannot be inferred.
- Both source boundaries are preserved — no source row is retried, deleted, or flattened.
- Requested substitution is visible — mode, line/slot, requesting actor, and future reader are recorded.
- Liability carrier is visible — before and after carrier are recorded, including split or explicit absence.
- Docket memory exists — Voice Substitution Liability Docket or equivalent records both sources and proposed transfer.
- Hearing assignment exists — Voice Substitution Liability Hearing or equivalent requires recognition surface, handler/absence, cost, excluded reader, and future effect.
- At least five branch families diverge — branches differ by voice state, reader state, cost, and future route effect.
- Success is costed — every success records relief, cost, and future effect.
- Split is not universal — split duet receipt must leave reader-specific scope or contradiction.
- Sponsor clean blend is capture — sponsor blend may stabilize, but it must create capture, breach, distrust, or recovery-only future state.
- Miscast default is durable — default names false liability carrier and mutates future play.
- No universal voice permission — Iris’s voice cannot become clean Xingtong consent; Xingtong’s voice cannot become clean Iris probate permission.
- Replay provenance exists — evidence includes session id, seed, state context, offered card/rite, branch outcomes, event/default, reader states, and deltas.
Progress metric
voiceSubstitutionLiabilityProgress = 0..9:
0: no cross-character voice substitution pressure.1: live voice and memorial voice surfaces exist or explicit absences are recorded.2: source boundaries and requested substitution mode are visible.3: future reader and proposed liability carrier are visible.4: Voice Substitution Liability Docket enters play.5: Voice Substitution Liability Hearing exposes recognition surface, handler, cost, excluded reader, and future effect.6: at least two non-default branches produce distinct relief/cost/future effects.7: at least five branch families are playable or explicitly blocked by state.8: Voice Miscast Liability Default creates durable false-liability fallout.9: later reader, route, correction, custody, or broadcast reality content consumes the resulting substitution state.
Evidence shape
lens_id: storyteller.lens.voice_substitution_liability.v1
session_id: lens-voice-substitution-liability-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
live_voice_surface_present: true
memorial_voice_surface_present: true
requested_substitution_present: true
source_boundaries_known_or_explicitly_absent: true
future_broadcast_or_route_reader_present: true
liability_carrier_can_change: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
offered:
card: storyteller.card.voice_substitution_liability_docket.v1
rite: storyteller.rite.voice_substitution_liability_hearing.v1
substitution_row:
live_voice_source_or_absence: <source or explicit_absence>
memorial_voice_source_or_absence: <source or explicit_absence>
living_boundary_or_absence: <boundary or explicit_absence>
memorial_boundary_or_absence: <boundary or explicit_absence>
requested_substitution: <mode>
requesting_actor: <actor>
future_reader: <reader>
liability_carrier_before: <carrier>
proposed_liability_carrier_after: <carrier>
branch_runs:
valid_branch:
selected_branch: keep_voices_separate | living_revoice_with_explicit_scar | memorial_sample_patch_with_probate_rider | split_duet_receipt | sponsor_clean_blend | quarantine_or_blackout_slot
recognition_surface: <surface>
handler_or_absence: <handler or explicit_absence>
cost_surface_or_absence: <cost or explicit_absence>
liability_carrier_after: <carrier>
reader_states_after:
live_voice_reader: <state>
memorial_voice_reader: <state>
broadcast_reader: <state>
excluded_reader_or_absence: <state or explicit_absence>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
event_seen_or_armed: storyteller.event.voice_miscast_liability_default.v1
false_liability_carrier: <carrier>
hidden_boundary: <boundary>
first_reader_or_actor: <actor>
future_route_effect: <effect>
assertions:
- primary_links_exist
- entry_requires_live_and_memorial_voice_surfaces
- source_boundaries_are_visible_or_explicitly_absent
- requested_substitution_future_reader_and_liability_carrier_are_visible
- branch_families_diverge_by_voice_state_reader_state_cost_and_future_route
- successful_branches_have_relief_cost_and_future_effect
- miscast_default_names_false_liability_carrier_and_mutates_future_play
- no_voice_becomes_universal_permission_for_the_other
- no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_triggerIntegration expectations
- 黎星瞳自我线 should provide living source, refusal, or explicit absence.
- Iris Vale 纪念声权验讫线 should provide initial scoped Iris probate rows.
- Iris Vale 声权验讫残留线 and Iris Vale 验讫后用引证线 should provide residue or rider states when Iris’s voice is consumed later.
- 裁定读者冲突线 should consume split receipt, public-only, lawful-only, sponsor-only, and false-universal-key states.
- 播出实在漂移审计 should consume source-voice contradiction.
- 稳定化责任交接线 should consume a voice substitution that kept broadcast alive by transferring liability.
- Route Assets and Custody should narrow, block, capture, or scar route access when substitution state is miscast.
Non-goals
- Not a first-use Iris probate.
- Not a first Xingtong consent hearing.
- Not a generic duet scene.
- Not a clean sponsor stabilization.
- Not a fixed-turn consequence sequence.
- Not valid if one voice becomes universal permission for the other.
- Not valid unless future reader, correction, custody, route, or broadcast reality state changes.