Broadcast Contract Readback Lens / 播出合约回读 Lens
This lens observes whether 播出合约回读线 and 播出合约回读机制 correctly force later routes to consume prior broadcast-slot contract state.
It targets the shallow-green failure after 播出档期合约绑定线: a contract can be scoped correctly once, but later public, lawful, sponsor, archive, editor, memorial, route-asset, or broadcast-reality readers may still reuse that result as if it were clean universal permission.
Primary observation link
This lens observes:
- 播出合约回读线;
- 播出合约回读机制;
- 播出档期合约机制;
- Broadcast Reality;
- Route Assets and Custody;
- 播出档期合约绑定线;
- 播出实在漂移审计;
- 连续性后用藐视线;
- 叙述优先栈线.
It is observed through:
Observable promise
A prior broadcast-slot contract result must be read by the next reader that wants to use it.
A passing implementation proves that later reuse names:
- prior contract row or explicit absence;
- prior resolution state;
- original bound reader;
- original excluded or harmed reader;
- original proof/custody anchor;
- original breach/default actor or explicit absence;
- current reuse request;
- current reader;
- scope delta;
- selected readback resolution;
- branch cost or boundary;
- future route effect.
The lens fails if the game checks only contract exists, binding lens passed, slot was authorized, broadcast aired, archive accepted, sponsor paid, checksum valid, or public remembers.
Entry oracle
A valid implementation opens only from state pressure:
entry_state_required:
trigger_kind: state_pressure
prior_contract_row_or_explicit_absence_present: true
prior_resolution_state_present: true
original_bound_reader_present_or_explicit_absence: true
original_excluded_or_harmed_reader_present_or_explicit_absence: true
original_proof_or_custody_anchor_present_or_explicit_absence: true
original_breach_default_actor_present_or_explicit_absence: true
current_reuse_request_present: true
current_reader_present: true
scope_delta_present: true
future_route_or_reader_effect_possible: true
player_can_read_add_split_rehear_unwind_escrow_block_recover_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry comes from a fixed turn number, day/week interval, chapter quota, raw page count, raw card count, dashboard state, lens health, generic legal review, generic PR crisis, or generic upkeep.
Docket oracle
播出合约回读案卷 or equivalent must record:
docket_required:
prior_contract:
prior_contract_row: <slot contract id or explicit_absence>
prior_resolution_state: bound_with_scope | narrowed_reader | split_rights | transferred | sponsor_sold | escrowed | cancelled_with_scar | breached | black_screen_fold | recovery_only | equivalent
original_requested_use: <use or explicit_absence>
original_bound_reader: <reader or explicit_absence>
original_excluded_or_harmed_reader: <reader or explicit_absence>
original_proof_or_custody_anchor: <anchor or explicit_absence>
original_breach_default_actor: <actor or explicit_absence>
current_reuse:
current_reuse_request: <reuse request>
current_reader: public | lawful | archive | sponsor | fan_public | editor_checksum | route_asset | memorial_voice | broadcast_reality | equivalent
scope_delta: inside_scope | narrower_than_scope | reader_mismatch | proof_mismatch | excluded_reader_returns | transferred_claimant_uses | escrow_spent_early | breached_row_reused | blackout_fold_reopened | recovery_only_attempt | equivalent
outcome:
readback_state: pending | accepted_inside_scope | accepted_with_addendum | split_required | proof_rehearing_required | claimant_unwind_required | escrow_required | blocked | default_armed | equivalent
future_route_effect: accepted_with_scope | costlier | split_canon | contradiction_pending | sponsor_only | lawful_only | public_only | blocked | hostile | recovery_only | equivalentThe lens fails if the docket omits the old reader, old harmed reader, anchor, current reader, mismatch, or future effect.
Audit oracle
播出合约回读审计 or equivalent must require explicit assignments:
assignment_required:
docket: storyteller.card.broadcast_contract_readback_docket.v1
prior_contract_row: <slot contract id or explicit_absence>
prior_resolution_state: <state>
original_bound_reader: <reader or explicit_absence>
original_excluded_or_harmed_reader: <reader or explicit_absence>
original_proof_or_custody_anchor: <anchor or explicit_absence>
original_breach_default_actor: <actor or explicit_absence>
current_reuse_request: <reuse>
current_reader: <reader>
scope_delta: <delta>
handler_or_absence: <handler or explicit_absence>
proof_bridge_or_absence: <proof or explicit_absence>
selected_resolution: read_inside_scope | add_boundary_and_reuse | split_readers | rehear_proof | unwind_claimant_capture | escrow_block_or_recover | spend_mismatch_default
accepted_cost_surface_or_absence: <cost or explicit_absence>
future_route_effect: <effect>The lens fails if a later reader can consume the old slot without handler/proof/cost decisions or explicit absence.
Branch divergence oracle
A satisfying implementation must prove at least five branch families plus one default or blocked state.
| Branch family | Required relief | Required cost | Required future effect |
|---|---|---|---|
| Read inside scope | old scope is honored and route remains legible | boundary remains visible or excluded reader pressure rises | accepted-with-scope or costlier |
| Add boundary and reuse | nearby reader can consume after addendum | archive debt, lawful annex, sponsor release, public note, or inspection heat | reader-limited or costlier |
| Split readers | incompatible readers remain playable | contradiction, handler burden, correction pressure, or source ambiguity | split-canon or contradiction-pending |
| Rehear proof | false proof transfer is blocked | route delay, proof debt, archive debt, or inspection heat | blocked-until-proof or recovery-only-until-hearing |
| Unwind claimant capture | sponsor/claimant capture is named or paid | contract capture, resentment, sponsor heat, future recovery cost | sponsor-only, captured, or recovery-only |
| Escrow/block/recover | unsafe reuse is blocked | black-screen pressure, route delay, public distrust, recovery cost | blocked, hostile, or recovery-only |
| Spend mismatch default | later reader consumes old row as clean | false clean claim and hostile actor | captured, contradiction-pending, blocked, hostile, or recovery-only |
No branch may produce clean acceptance across public, lawful, sponsor, archive, editor, fan, memorial, route-asset, and broadcast-reality readers.
Branch-specific assertions
Read inside scope
selected_branch: read_inside_scope
readback_state_after: accepted_inside_scope
relief_any: [slot_authority_clarity_up, false_clean_slot_use_down, route_legibility_up]
cost_any: [boundary_note_required, excluded_reader_pressure_up, future_route_cost_up]
future_effect_any: [accepted_with_scope, costlier]
forbidden: [old_contract_becomes_universal_license]Add boundary and reuse
selected_branch: add_boundary_and_reuse
readback_state_after: accepted_with_addendum
relief_any: [route_unblocked_with_scar, legality_up, public_receipt_legitimacy_up]
cost_any: [archive_debt_up, inspection_heat_up, sponsor_pressure_up, public_distrust_up]
future_effect_any: [addendum_required, lawful_only, public_only, sponsor_only, costlier]
forbidden: [addendum_as_free_cleanup]Split readers
selected_branch: split_readers
readback_state_after: split_required
relief_any: [one_route_unblocked, private_capture_blocked, contradiction_named]
cost_any: [handler_burden_up, source_ambiguity_up, correction_pressure_up]
future_effect_any: [split_canon, contradiction_pending, public_audit_required, lawful_addendum_required]
forbidden: [split_terms_as_universal_acceptance]Rehear proof
selected_branch: rehear_proof
readback_state_after: proof_rehearing_required
relief_any: [false_proof_blocked, custody_integrity_up]
cost_any: [route_delay_up, archive_debt_up, inspection_heat_up]
future_effect_any: [blocked_until_proof, recovery_only_until_hearing, costlier]
forbidden: [proof_anchor_travels_silently]Unwind claimant capture
selected_branch: unwind_claimant_capture
readback_state_after: claimant_unwind_required
relief_any: [public_route_can_be_reopened, capture_named, sponsor_clause_visible]
cost_any: [contract_capture_up_or_paid, sponsor_stop_loss_pressure_up, fan_resentment_up, future_recovery_cost_up]
future_effect_any: [sponsor_only, captured_until_unwind, recovery_only, costlier]
forbidden: [sponsor_or_claimant_transfer_as_neutral_reality]Escrow, block, or recover
selected_branch: escrow_block_or_recover
readback_state_after: escrow_required | blocked | default_armed
relief_any: [unsafe_reuse_blocked, false_clean_slot_use_down, source_trace_preserved]
cost_any: [route_delay_up, black_screen_pressure_up, public_distrust_up, future_recovery_cost_up]
future_effect_any: [blocked, hostile, contradiction_pending, recovery_only]
forbidden: [escrow_breach_blackout_or_recovery_row_as_clean_unlock]Scope readback default
selected_branch: spend_mismatch_default
event_seen_or_armed: storyteller.event.scope_readback_default.v1
false_clean_claim_created_any:
- old_public_scope_was_lawful_proof
- sponsor_sold_slot_was_neutral_memory
- split_rights_were_universal_agreement
- escrowed_row_was_ready_to_air
- black_screen_fold_left_no_audience_scar
- recovery_only_row_was_clean_unlock
future_effect_any:
- captured
- blocked
- hostile
- contradiction_pending
- split_canon
- sponsor_only
- lawful_only
- public_only
- recovery_onlyFuture-reader oracle
The content is not complete until at least one later route, proof object, package, public receipt, lawful annex, sponsor release, archive release, correction slot, route asset bridge, memorial replay, edit checksum, blackout reopening, or broadcast-reality check consumes readback_state_after.
Passing future effects include:
accepted_with_scope;addendum_required;split_canon;contradiction_pending;blocked_until_proof;captured_until_unwind;sponsor_only;lawful_only;public_only;blocked;hostile;recovery_only.
Oracle assertions
A binding check should fail unless all assertions below are true.
- Primary links exist — the lens has populated
observesandobserved_througharrays pointing to concrete Storyteller pages. - Entry is state-driven — no fixed turn, day, week, chapter quota, raw count, dashboard, or lens-health trigger.
- Prior state is visible — prior contract row, resolution state, original reader, excluded/harmed reader, proof anchor, and breach actor are available or explicitly absent.
- Current reuse is visible — current reuse request, current reader, scope delta, and future effect are available.
- Docket compares old and new — the card does not merely restate the old contract; it names the mismatch or inside-scope relation.
- Audit is assignable — the rite requires handler/proof/cost decisions or explicit absence.
- Branches diverge — read, add boundary, split, rehear proof, unwind capture, escrow/block/recover, and default cannot collapse into one result.
- Success has cost — every non-default success leaves boundary, addendum, split term, proof rehearing, debt, delay, or recovery hook.
- Default is durable — invalid reuse fires or arms 范围回读默认 with false clean claim, harmed reader, default actor, and future scar.
- No universal contract reuse — no prior slot result can be consumed cleanly by all future readers.
Progress metric
broadcastContractReadbackProgress = 0..8:
0: no prior contract state or no current reuse request.1: prior contract row and prior resolution state are visible.2: original bound reader, excluded/harmed reader, and proof/custody anchor are visible or explicitly absent.3: current reader, reuse request, and scope delta are visible.4: 播出合约回读案卷 or equivalent enters play.5: 播出合约回读审计 or equivalent offers at least three resolution choices.6: at least three branch families produce non-equivalent reader states and counter deltas.7: 范围回读默认 or equivalent fires/defaults on invalid reuse.8: at least five branch families are proven with replay/session evidence, including one split or proof-rehearing branch and one default or recovery-only branch.
Evidence shape
lens_id: storyteller.lens.broadcast_contract_readback.v1
session_id: lens-broadcast-contract-readback-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
prior_contract_row_or_explicit_absence_present: true
prior_resolution_state_present: true
original_bound_reader_present_or_explicit_absence: true
original_excluded_or_harmed_reader_present_or_explicit_absence: true
original_proof_or_custody_anchor_present_or_explicit_absence: true
original_breach_default_actor_present_or_explicit_absence: true
current_reuse_request_present: true
current_reader_present: true
scope_delta_present: true
no_fixed_turn_trigger: true
active_objects:
docket: storyteller.card.broadcast_contract_readback_docket.v1
rite: storyteller.rite.broadcast_contract_readback_audit.v1
offered_choices:
- read_inside_scope
- add_boundary_and_reuse
- split_readers
- rehear_proof
- unwind_claimant_capture
- escrow_block_or_recover
- spend_mismatch_default
branch_runs:
valid_branch:
selected_response: read_inside_scope | add_boundary_and_reuse | split_readers | rehear_proof | unwind_claimant_capture | escrow_block_or_recover
prior_resolution_state: <state>
current_reader: <reader>
scope_delta: <delta>
readback_state_after: <state>
future_route_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
event_seen_or_armed: storyteller.event.scope_readback_default.v1
scope_delta: <delta>
false_clean_claim_created: <claim>
harmed_reader_after: <reader state>
default_actor_after: <actor>
future_route_effect: captured | blocked | hostile | contradiction_pending | recovery_only | equivalent
assertions:
- primary_links_exist
- entry_is_state_triggered_from_prior_contract_and_current_reuse
- prior_resolution_original_reader_excluded_reader_anchor_and_breach_actor_are_visible
- current_reader_scope_delta_and_future_route_effect_are_visible
- docket_records_prior_state_and_current_mismatch
- audit_requires_handler_proof_bridge_cost_and_selected_resolution
- branch_outcomes_diverge_by_reader_state_route_state_cost_and_future_effect
- success_has_cost_or_boundary
- default_records_false_clean_claim_harmed_reader_default_actor_and_future_scar
- no_prior_contract_result_becomes_clean_universal_authorityNon-goals
- Not a governance checklist.
- Not a dashboard-only evidence spec.
- Not a turn-count, day-count, chapter-quota, or raw-count trigger.
- Not a generic legal audit.
- Not a duplicate of broadcast-slot binding.
- Not satisfied by page existence or earlier lens satisfaction.
- Not valid if a prior contract result can be reused by every future reader as clean universal reality.