Reader Rebuttal Notice Lens / 读者反驳通知 Lens
This lens observes whether 读者反驳通知线 and 读者反驳通知机制 correctly make future-reader citation of prior rows playable instead of silent authority transfer.
A passing implementation proves that when a transcript row, rehearsal trace, delegate mandate, recovery-discharge row, default-recovery row, asset provenance row, public contrition receipt, protected-witness row, archive custody row, or equivalent route asset is cited by a future reader, the game exposes the affected party or explicit absence, notice carrier or explicit absence, rebuttal proof or explicit absence, selected boundary, future reader effect, and durable no-notice default.
The lens fails if future readers can consume cited rows as clean proof, route unlock, public receipt, lawful fact, sponsor release, final cut, discharge record, consent record, or contradiction closure without notice or explicit absence.
Primary observation link
This lens observes:
- 读者反驳通知线;
- 读者反驳通知机制;
- Route Assets and Custody;
- Broadcast Reality;
- Archive Custody;
- Producer License and Pressure;
- 阮尺删改速记员线;
- 预播排练污染线;
- 默认恢复分诊线;
- 复原病房出院压迫线;
- 粉丝委任分裂线.
It is observed through:
Observable promise
Storyteller must make authority reuse answerable. Whenever a later route asks to cite an earlier row, the game must answer:
What row is being cited, who is citing it, what is it being used for, who is affected or explicitly absent, what notice boundary is chosen, what rebuttal proof exists or is absent, and how does the future reader change because of that boundary?
Must pass
1. Entry is state-triggered by future-reader citation
Required evidence:
entry_state:
trigger_kind: state_pressure
cited_authority_row_present: true
future_reader_present: true
intended_use_present: true
affected_party_or_explicit_absence_present: true
notice_boundary_unresolved: true
route_or_proof_would_change_if_rebuttal_exists: true
player_can_record_notice_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 depends on fixed turn number, day/week interval, chapter quota, raw cited-row count, dashboard state, lens-health state, or generic unrest.
2. Cited row, reader, intended use, and affected party are visible
Reader Rebuttal Notice Ledger must record:
citation_context:
source_row_id: <stable cited row id>
source_surface: transcript | rehearsal_trace | delegate_mandate | recovery_discharge | default_recovery | asset_provenance | contrition | witness | archive_custody | equivalent
citing_reader: archive | inspector | sponsor | editor | fan_public | pirate_relay | route_asset | broadcast_reality | lawful_body | management | equivalent
intended_use: proof | public_receipt | lawful_fact | sponsor_release | final_cut | route_unlock | consent_record | discharge_record | contradiction_close | equivalent
affected_party_or_absence: <speaker subject witness claimant delegate artist handler fan public or explicit_absence>
affected_party_state: reachable | protected | recovering | hostile | missing | captured | proxy_only | explicit_absence | equivalentThe lens fails if a replay records only row_used: true, notice_sent: true, or generic claimant pressure.
3. Notice carrier, rebuttal proof, boundary, and future reader are recorded
The ledger must expose:
notice_record:
notice_carrier_or_absence: ruan_chi | yu_lan | han_yanshuang | baiya | shen_luo | fan_delegate | archive_clerk | pirate_relay | handler | explicit_absence | equivalent
rebuttal_proof_or_absence: counter_oath | raw_minutes | checksum_note | medical_boundary | public_counterline | lawful_annex | sponsor_exception | pirate_packet | explicit_absence | equivalent
notice_boundary: private_notice | lawful_annex | public_counterline | editor_mask | sponsor_silence | archive_objection | split_notice | no_notice
response_window_state: open | narrowed | waived_with_receipt | blocked | false_noticed | expired_by_reader_action | equivalent
future_reader: <future reader id>The lens fails if a famous handler, sponsor preference, legal stamp, public post, or editor note satisfies notice by implication.
4. Hearing assignment slots are explicit
Reader Rebuttal Notice Hearing must require:
hearing_assignment:
rite: storyteller.rite.reader_rebuttal_notice_hearing.v1
ledger: storyteller.card.reader_rebuttal_notice_ledger.v1
source_row_id: <stable cited row id>
citing_reader: <reader id>
intended_use: <use id>
affected_party_or_absence: <party or explicit_absence>
affected_party_state: <state>
notice_carrier_or_absence: <carrier or explicit_absence>
rebuttal_proof_or_absence: <proof or explicit_absence>
selected_notice_boundary: private_notice | lawful_annex | public_counterline | editor_mask | sponsor_silence | archive_objection | split_notice | no_notice
protected_boundary_or_absence: <boundary or explicit_absence>
waived_or_blocked_reason_or_absence: <reason or explicit_absence>
future_reader: <future reader id>
accepted_cost_or_absence: <cost or explicit_absence>Generic notify, legalize, apologize, pay, publish, redact, or approve choices cannot satisfy this lens.
5. Branch families diverge
At least six branch families must be playable or explicitly blocked by state, including one default/no-notice branch:
private_notice;lawful_annex;public_counterline;editor_mask;sponsor_silence;archive_objection;split_notice;no_notice_or_false_notice.
Each resolved branch must differ by:
branch_non_equivalence:
notice_state_after: <different state>
affected_party_state_after: <different state>
cited_row_state_after: <different state>
cost_profile: <different cost>
future_reader_effect: <different effect>The lens fails if all branches produce clean acceptance, clean public legitimacy, or a universal route unlock.
6. Boundary-specific assertions
Private notice assertion
selected_branch: private_notice
relief_any: [surprise_citation_down, affected_party_hostility_down, rebuttal_legibility_up]
cost_any: [handler_burden_up, schedule_pressure_up, future_route_cost_up]
future_effect_any: [accepts_with_rebuttal, accepts_with_cost, response_window_open]
forbidden: [private_notice_as_consent]Lawful annex assertion
selected_branch: lawful_annex
relief_any: [archive_fraud_risk_down, legal_body_risk_down, custody_clarity_up]
cost_any: [inspection_heat_up, bureau_favor_debt_up, public_receipt_distrust_up]
future_effect_any: [lawful_only, audit_required, public_addendum_required]
forbidden: [lawful_annex_as_public_truth]Public counterline assertion
selected_branch: public_counterline
relief_any: [private_capture_down, public_receipt_legitimacy_up, contradiction_legibility_up]
cost_any: [sponsor_stop_loss_pressure_up, witness_exposure_up, public_contradiction_up]
future_effect_any: [public_only, lawful_bridge_required, contradiction_pending]
forbidden: [public_counterline_as_lawful_admissibility]Editor mask assertion
selected_branch: editor_mask
relief_any: [source_exposure_down, witness_retaliation_risk_down, checksum_legibility_up]
cost_any: [edit_debt_up, source_ambiguity_up, future_raw_proof_cost_up]
future_effect_any: [checksum_required, editor_required, split_record]
forbidden: [editor_mask_as_raw_text]Sponsor silence assertion
selected_branch: sponsor_silence
relief_any: [sponsor_stop_loss_pressure_down, immediate_slot_pressure_down]
cost_any: [contract_capture_up, false_notice_risk_up, public_receipt_distrust_up]
future_effect_any: [sponsor_only, sponsor_unwind_required, default_armed]
forbidden: [sponsor_silence_as_clean_closure]Archive objection assertion
selected_branch: archive_objection
relief_any: [custody_clarity_up, archive_fraud_risk_down, contradiction_legibility_up]
cost_any: [archive_debt_up, claimant_resentment_up, future_hearing_required]
future_effect_any: [split_record, contradiction_pending, accepts_with_cost]
forbidden: [archive_objection_as_repair]Split notice assertion
selected_branch: split_notice
relief_any: [route_survival_up, reader_scope_legibility_up]
cost_any: [handler_burden_up, contradiction_pending_up, future_recovery_cost_up]
future_effect_any: [split_public_lawful_routes, sponsor_only_branch, public_only_branch]
forbidden: [split_notice_as_universal_acceptance]No-notice assertion
selected_branch: no_notice_or_false_notice
event_seen_or_armed: storyteller.event.rebuttal_notice_default.v1
state_after_any: [false_authority, disputed_authority, hostile, captured, blocked, recovery_only]
future_effect_any: [blocked, hostile, captured, contradiction_pending, lawful_annex_required, public_receipt_required, checksum_required, sponsor_unwind_required, recovery_only]7. Future reader acceptance changes
At least one future route, rite, package, proof test, public statement, lawful hold, sponsor release, final cut, discharge record, or route asset must accept, reject, narrow, surcharge, split, or block based on the notice boundary.
Required evidence:
future_acceptance_check:
future_reader: <reader id>
cited_row_state_before: <state>
notice_boundary: <boundary>
accepted_boundary_states: []
rejected_or_costlier_boundary_states: []
future_reader_effect: <effect>The lens fails if counters move but future offers, blocked reasons, and reader acceptance remain identical.
8. Hard boundary misfilings arm default
Rebuttal Notice Default must fire or arm when:
- ledger is absent;
- affected party is hidden;
- explicit absence is missing;
- notice carrier is missing;
- rebuttal proof is missing;
- private notice is filed as consent;
- lawful annex is filed as public truth;
- public counterline is filed as lawful admissibility;
- editor mask is filed as raw text;
- sponsor silence is filed as clean closure;
- archive objection is filed as repair;
- split notice is filed as universal acceptance;
- no future reader effect changes.
The default must mutate future play.
9. Recovery keeps a scar
Late repair is valid only if no-notice remains legible to future readers.
Accepted scars:
- late lawful annex;
- late public counterline;
- checksum correction;
- sponsor unwind;
- archive objection;
- affected party receipt;
- substitute-only route;
- recovery-only route;
- future reader surcharge;
- contradiction-pending state.
Replay evidence shape
lens_id: storyteller.lens.reader_rebuttal_notice.v1
result: pass | fail
session_id: lens-reader-rebuttal-notice-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
trigger_kind: state_pressure
cited_authority_row_present: true
future_reader_present: true
intended_use_present: true
affected_party_or_explicit_absence_present: true
notice_boundary_unresolved: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
active_objects:
card: storyteller.card.reader_rebuttal_notice_ledger.v1
rite: storyteller.rite.reader_rebuttal_notice_hearing.v1
event_default: storyteller.event.rebuttal_notice_default.v1
citation_context:
source_row_id: <stable cited row id>
source_surface: transcript | rehearsal_trace | delegate_mandate | recovery_discharge | default_recovery | asset_provenance | contrition | witness | archive_custody | equivalent
citing_reader: <reader>
intended_use: <use>
affected_party_or_absence: <party or explicit_absence>
offered_choices:
- private_notice
- lawful_annex
- public_counterline
- editor_mask
- sponsor_silence
- archive_objection
- split_notice
- no_notice
branch_runs:
valid_branch:
selected_notice_boundary: <boundary>
notice_carrier_or_absence: <carrier or explicit_absence>
rebuttal_proof_or_absence: <proof or explicit_absence>
affected_party_state_after: <state>
cited_row_state_after: <state>
future_reader_effect: <effect>
counter_deltas:
relief: []
cost: []
future: []
default_branch:
selected_notice_boundary: no_notice | false_notice
emitted_or_armed_event: storyteller.event.rebuttal_notice_default.v1
default_kind: <kind>
default_narrator: <narrator>
harmed_party_state_after: <state>
cited_row_state_after: <state>
future_reader_effect: <effect>
assertions:
primary_links_exist: true
entry_is_state_triggered_by_future_reader_citation: true
cited_row_reader_intended_use_and_affected_party_are_visible: true
notice_carrier_rebuttal_proof_boundary_and_future_reader_are_recorded: true
hearing_assignment_slots_are_explicit: true
branch_families_diverge: true
future_reader_acceptance_changes_by_boundary: true
hard_boundary_misfilings_arm_default: true
no_notice_default_is_durable: true
recovery_keeps_scar: true
no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger: trueProgress metric
readerRebuttalNoticeProgress = 0..9:
0: future reader cites prior row with no notice surface.1: cited row, future reader, and intended use are visible.2: affected party or explicit absence is visible.3: Reader Rebuttal Notice Ledger enters play.4: notice carrier, rebuttal proof, boundary, response-window state, and future reader are recorded.5: Reader Rebuttal Notice Hearing exposes assignment slots.6: at least three legitimate notice branches produce different reader acceptance and counter deltas.7: no-notice or false-notice arms/fires Rebuttal Notice Default.8: at least five branch families are proven, including one public/lawful/editor/sponsor/archive/split branch and one default branch.9: downstream route or reader consumes notice boundary and proves no universal clean authority reuse.
Non-goals
- Not a governance or methodology page.
- Not a notification UI.
- Not a raw count target.
- Not a fixed cleanup phase.
- Not a replay of the original hearing, rehearsal, delegate, discharge, or recovery scene.
- Not valid if cited rows have the same future-reader effect with and without rebuttal.