Caption Witness Custody Lens / 字幕证词羁押 Lens
This lens observes whether 字幕证词羁押线 and 字幕证词羁押机制 make captions playable as custody-bearing proof rather than flavor text.
A passing implementation proves that a caption layer can clarify or distort a source surface, that the caption operator or absence is visible, that at least one reader is harmed or excluded, that a pressure actor tries to benefit, that branches diverge, and that a future route consumes the resulting caption state.
The lens fails if a caption is treated as a clean transcript, a localization task, a sponsor-copy note, or a universal substitute for the source voice.
Primary observation link
This lens observes:
- 字幕证词羁押线;
- 字幕证词羁押机制;
- Broadcast Reality;
- Screen Rights;
- Route Assets and Custody;
- Archive Voice Custody.
It is observed through:
Observable promise
The player must decide who can hold or certify a caption when caption text is the public-facing proof of a contested source.
The result must preserve the source surface, caption text or absence, operator or absence, harmed reader, pressure actor, and future reader. It must also mutate both current pressure and later route access.
Must pass
1. Entry is state-driven
entry_state:
trigger_kind: state_pressure
source_surface_present: true
caption_layer_present_or_explicit_absence: true
caption_claim_changes_meaning_or_access: true
caption_operator_or_absence_visible: true
harmed_or_excluded_reader_visible_or_explicit_absence: true
pressure_actor_present: true
future_reader_or_route_consumes_caption: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: trueThe lens fails if entry depends on turn count, day/week interval, chapter quota, content count, dashboard state, or lens health.
2. Source and caption remain distinct
Required evidence:
source_caption_distinction:
source_surface: <voice lyric gesture silence archive playback sponsor line or equivalent>
source_holder_or_absence: <holder or explicit_absence>
source_proof_or_absence: <proof or explicit_absence>
caption_text_or_absence: <caption text or explicit_absence>
caption_language_channel: <channel>The lens fails if the caption silently replaces the source.
3. Caption operator or absence is visible
字幕证词账本 must expose:
caption_operator_surface:
caption_operator_or_absence: <operator or explicit_absence>
operator_protection_state: protected | exposed | anonymous | sponsor_bound | inspector_bound | editor_bound | absent | equivalentThe lens fails if the caption is treated as system output with no holder, operator, or explicit absence.
4. Harmed reader and pressure actor are visible
Required evidence:
caption_pressure:
excluded_or_harmed_reader: deaf_access_public | foreign_language_public | source_voice_holder | sponsor | inspector | fan_public | archive_reader | artist_boundary | route_asset | explicit_absence | equivalent
pressure_actor: sponsor | inspector | editor | historian | fan_delegate | artist_boundary | fan_relay | management | false_caption_claimant | equivalentThe lens fails if a caption has no beneficiary and no harmed reader.
5. Assignment slots are explicit
字幕证词听证 must require:
assignment:
selected_row: <caption row id>
source_surface: <source surface>
source_holder_or_absence: <holder or explicit_absence>
source_proof_or_absence: <proof or explicit_absence>
caption_text_or_absence: <caption text or explicit_absence>
caption_language_channel: <channel>
caption_operator_or_absence: <operator or explicit_absence>
excluded_or_harmed_reader: <reader or explicit_absence>
pressure_actor: <actor>
future_reader_or_route: <stable reader or route id>Generic subtitle approval, legal review, sponsor copy cleanup, or transcript correction cannot satisfy this lens.
6. Branches diverge
A satisfying implementation must expose at least five non-equivalent branch families and one default branch:
certify_raw_caption;certify_access_caption;accept_sponsor_safe_caption;split_language_tracks;escrow_archive_caption;publish_fan_relay_overlay;hide_or_autoclean.
Branches must not collapse to the same counter deltas or future route state.
7. Branch assertions
branch_assertions:
certify_raw_caption:
state_after: certified_raw
relief_any: [caption_legibility_up, public_route_clarity_up]
cost_any: [source_voice_exposure_up, sponsor_copy_pressure_up, inspection_heat_up]
future_effect_any: [public_route_with_caption_cost, source_rehearing_required]
certify_access_caption:
state_after: certified_access
relief_any: [access_public_trust_up, caption_legibility_up]
cost_any: [caption_operator_exposure_up, handler_burden_up, artist_boundary_pressure_up]
future_effect_any: [access_route_protected, source_rehearing_required]
accept_sponsor_safe_caption:
state_after: sponsor_safe
relief_any: [sponsor_copy_pressure_down, immediate_slot_pressure_down]
cost_any: [sponsor_capture_up, source_ambiguity_up, public_receipt_distrust_up]
future_effect_any: [sponsor_capture, public_route_costlier, false_caption_default_armed]
split_language_tracks:
state_after: split_language
relief_any: [access_public_trust_up, foreign_language_public_trust_up, private_capture_down]
cost_any: [translation_drift_up, editor_debt_up, source_ambiguity_up]
future_effect_any: [split_caption_canon, contradiction_pending]
escrow_archive_caption:
state_after: archive_escrowed
relief_any: [false_caption_risk_down, source_proof_preserved]
cost_any: [archive_debt_up, route_delay_up, inspection_heat_up]
future_effect_any: [lawful_only_caption, source_rehearing_required, blocked]
publish_fan_relay_overlay:
state_after: fan_relayed
relief_any: [private_capture_down, public_pressure_up]
cost_any: [relay_custody_risk_up, fan_liability_up, inspection_heat_up]
future_effect_any: [public_only_route, lawful_appeal_required, source_rehearing_required]
hide_or_autoclean:
state_after_any: [false_caption_witness, hostile_caption_public, recovery_only]
event_seen_or_armed: storyteller.event.false_caption_witness_default.v1
cost_any: [false_caption_witness_up, hostile_caption_public_up, future_recovery_cost_up]
future_effect_any: [hostile, blocked, recovery_only]8. Every success has cost
No caption branch may create universal clean meaning. Even a correct or access-protective caption must increase exposure, burden, delay, reader split, sponsor pressure, inspection heat, archive debt, edit debt, relay risk, or recovery cost.
9. Future reader consumes caption state
The branch must mutate a future route or reader:
- public route with caption cost;
- protected access route;
- sponsor capture;
- split caption canon;
- lawful-only caption;
- source rehearing required;
- public-only route;
- contradiction pending;
- hostile;
- blocked;
- recovery-only.
Flavor-only caption dialogue fails.
10. False caption default is durable
伪字幕证词默认 must fire or become armed when a caption is spent as proof while source, operator, harmed reader, or scope is missing, hidden, or misfiled.
The default must name source surface, caption text or absence, caption channel, operator or absence, false caption claim, harmed reader, default actor, caption state after, and future route effect.
Progress metric
captionWitnessCustodyProgress = 0..8:
0: no caption custody state.1: caption row exists with source and caption surfaces separated.2: caption operator or explicit absence is visible.3: harmed reader, pressure actor, and future reader are visible.4: hearing rite offers at least three non-equivalent branches.5: selected branch mutates relief, cost, and future route effect.6: at least five branch families are implemented.7: false caption default fires or arms on invalid use.8: replay proves at least one constructive branch and one false-caption/default branch.
Evidence shape
lens_id: storyteller.lens.caption_witness_custody.v1
session_id: lens-caption-witness-custody-v1-<timestamp>
seed: <deterministic seed>
entry_state:
trigger_kind: state_pressure
source_surface_present: true
caption_layer_present_or_explicit_absence: true
caption_claim_changes_meaning_or_access: true
caption_operator_or_absence_visible: true
harmed_or_excluded_reader_visible_or_explicit_absence: true
pressure_actor_present: true
future_reader_or_route_consumes_caption: true
no_fixed_turn_trigger: true
branch_runs:
constructive:
selected_branch: certify_raw_caption | certify_access_caption | accept_sponsor_safe_caption | split_language_tracks | escrow_archive_caption | publish_fan_relay_overlay
source_surface: <source>
caption_language_channel: <channel>
caption_operator_or_absence: <operator or explicit_absence>
harmed_reader_after: <reader>
caption_state_after: <state>
future_reader_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default:
selected_branch: hide_or_autoclean
event_seen_or_armed: storyteller.event.false_caption_witness_default.v1
false_caption_claim: <claim>
caption_state_after: false_caption_witness | hostile_caption_public | recovery_only
future_reader_effect: <effect>
assertions:
- primary_links_exist
- entry_is_state_triggered_by_caption_pressure
- source_and_caption_are_distinct
- caption_operator_or_explicit_absence_visible
- harmed_reader_and_pressure_actor_visible
- future_reader_consumes_caption_state
- assignment_slots_are_explicit
- branch_outcomes_diverge
- every_success_has_relief_and_cost
- false_caption_default_is_durable
- no_universal_clean_caption
- no_fixed_turn_triggerNon-goals
- Not a governance checklist.
- Not a localization backlog.
- Not a transcript-redaction duplicate.
- Not a sponsor-copy duplicate.
- Not a narration-priority duplicate.
- Not a fixed-turn, fixed-day, fixed-week, chapter-count, content-count, dashboard-state, or lens-health trigger.
- Not satisfied by page existence; replay must show source/caption distinction, operator custody, harmed reader, branch divergence, costed success, durable default, and future route consumption.