Hearing Transcript Redaction Lens / 听证笔录删改 Lens

This lens observes whether 听证笔录删改线 and 听证笔录删改机制 correctly make future-readable hearing words into transcript custody.

The oracle is: redaction is scoped custody, not universal truth repair. If a future route, archive seal, public table, sponsor gate, editor reader, lawful appeal, witness protection route, or broadcast-reality correction can cite a hearing result, the implementation must expose a docket row, assign keeper/proof/reader/posture, preserve or price omissions, and make missing or misfiled minutes durable.

A pass cannot be achieved by adding a character scene for Redaction Stenographer, a generic archive note, or a clean transcript recap. Transcript state must change future reader access, route availability, proof credibility, or recovery cost.

This lens observes:

It is observed through:

Design intent

The current corpus is already strong at creating hearings, dockets, witness burdens, public counterclaims, evidence carryover, and broadcast-reality consequences. This lens targets the remaining execution seam: the words generated by a correct hearing can still become false if future content reads them as clean, complete, universal minutes.

The player experience should be management/RPG pressure. The producer is not reading a full transcript; the producer is deciding who keeps the row, which proof anchor supports it, which reader can cite it, which reader is excluded or narrowed, and what happens when the minutes are cleaned too aggressively.

Must pass

1. Entry is state-triggered by future-readable hearing result

A valid replay or state inspection must open the transcript-redaction surface from present transcript pressure, not from sequence position.

entry_state_required:
  trigger_kind: state_pressure
  source_hearing_or_action_present: true
  line_or_explicit_silence_present: true
  future_reader_or_route_present: true
  keeper_or_explicit_absence_required: true
  proof_anchor_or_explicit_absence_required: true
  redaction_posture_available_or_default_armed: true
  default_if_unworked_present: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_transcript_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The lens fails if entry depends on a fixed turn, fixed day/week, chapter quota, raw transcript count, raw hearing count, dashboard state, or lens-health state.

2. Docket row is concrete

听证笔录删改案卷 or equivalent must record:

transcript_docket_required:
  source_hearing: memorial_air_chain | broadcast_reality_drift | claimant_briefing | fan_delegate_mandate | protected_witness | correction_slot | cutroom_priority | reader_rebuttal | equivalent
  source_session_id_or_in_world_source: <session id, route id, hearing id, or explicit_absence>
  spoken_line_or_silence: <line id or explicit_silence>
  speaker_or_absence: <character, witness, institution, relay, or explicit_absence>
  proof_anchor_or_absence: oath | checksum | receipt | air_chain | transcript_hash | archive_seal | public_excerpt | explicit_absence | equivalent
  keeper_or_absence: ruan_chi | han_yanshuang | baiya | yu_lan | shen_luo | inspector | sponsor | editor | public_delegate | explicit_absence | equivalent
  requested_redaction: none | lawful_redaction | sponsor_clean_minutes | editor_checksum_mask | public_excerpt | split_transcript_escrow | hostile_omission | equivalent
  transcript_readers:
    - inspector_or_archive | lawful_reader | sponsor | editor | public | witness | artist | broadcast_reality | route_asset | equivalent
    - <second reader or explicit_absence_with_cost>
  future_reader_or_route: <route, reader, seal, gate, appeal, correction, payroll, or event>
  risk_if_ignored: missing_minutes | false_clean_transcript | hostile_omission | sponsor_captured_minutes | reader_collision | recovery_only | equivalent

The lens fails if the row records only the winning branch, only a summary, only mood, or only an archive note.

3. Keeper and proof anchor are visible or explicitly absent

A transcript row must never use a clean proof token without keeper/proof custody.

keeper_proof_required:
  keeper_visible_or_explicit_absence: true
  proof_anchor_visible_or_explicit_absence: true
  if_keeper_absent_then_absence_has_cost: true
  if_proof_absent_then_reader_scope_narrowed_or_default_armed: true

The lens fails if a famous handler, archive seal, sponsor signature, editor checksum, public outrage, or producer authority makes the transcript usable without keeper/proof state.

4. Hearing assignment is explicit

笔录删改听证 or equivalent must require:

assignment_required:
  transcript_docket: storyteller.card.hearing_transcript_redaction_docket.v1
  line_or_silence: <spoken line or explicit silence>
  speaker_or_absence: <speaker or explicit_absence>
  keeper_or_absence: <keeper or explicit_absence>
  proof_anchor_or_absence: <proof anchor or explicit_absence>
  future_reader: <future reader or route>
  redaction_posture: preserve_raw | lawful_redaction | sponsor_clean_minutes | editor_checksum_mask | public_excerpt | split_escrow | proceed_without_minutes

The lens fails if redaction resolves without naming row, keeper, proof anchor, future reader, and selected posture or explicit absence.

5. Branches diverge by transcript state, reader state, cost, and future route

At least five branch families plus one default family must be playable or explicitly blocked by state:

  • preserve raw transcript;
  • accept lawful redaction;
  • file sponsor clean minutes;
  • mask through editor checksum;
  • publish public excerpt;
  • split transcript escrow;
  • proceed without minutes.

Each branch must produce a different transcript state, reader state, cost surface, and future route effect.

6. No redaction posture is universal truth

No branch may make every reader accept the same clean minutes.

Required evidence:

no_universal_truth:
  transcript_state_after_not_universal_clean: true
  at_least_one_reader_narrowed_excluded_or_costed: true
  future_reader_effect_not_clean_universal: true
  counter_deltas_include_cost: true

The lens fails if lawful redaction becomes public truth, sponsor clean minutes become public truth, editor checksum mask becomes raw speech, public excerpt becomes lawful admissibility, or split escrow becomes a single clean canon without cost.

7. Misfiled reader scope defaults are durable

笔录删改默认 must fire or arm when:

  • future reader consumes hearing result with no transcript docket;
  • keeper or explicit absence is missing;
  • proof anchor or explicit absence is missing;
  • sponsor clean minutes are filed as public truth;
  • lawful redaction is filed as public truth;
  • public excerpt is filed as lawful admissibility;
  • editor checksum mask is filed as raw text;
  • speaker absence is ignored;
  • redacted line is removed without counter delta;
  • 阮尺 is captured, missed, or omitted without future cost.

Required default evidence:

default_event_required:
  event: storyteller.event.transcript_redaction_default.v1
  source_docket: storyteller.card.hearing_transcript_redaction_docket.v1 | explicit_missing_docket
  failed_slot_any:
    - keeper_missing
    - proof_anchor_missing
    - reader_misfiled
    - redaction_unpriced
    - speaker_absence_ignored
    - future_reader_consumed_clean_version
  transcript_state_after_any:
    - missing_minutes
    - false_clean_transcript
    - hostile_omission
    - sponsor_captured_minutes
    - reader_collision
    - recovery_only
  future_reader_effect_any:
    - blocked
    - hostile
    - public_only
    - lawful_only
    - sponsor_captured
    - editor_required
    - recovery_only
    - contradiction_pending
  counter_deltas_min: 3

The default cannot be a cutscene, mood change, generic reputation hit, or money-only penalty.

Branch assertions

Preserve raw transcript assertion

selected_posture: preserve_raw
transcript_state_after: raw_transcript_preserved
relief_any:
  - transcript_integrity_up
  - archive_signature_legitimacy_up
  - public_receipt_legitimacy_up
cost_any:
  - keeper_burden_up
  - witness_exposure_up
  - sponsor_stop_loss_pressure_up
  - inspection_heat_up
future_effect_any:
  - broad_reader_available_with_cost
  - protected_witness_payroll_required
  - audit_required

Lawful redaction assertion

selected_posture: lawful_redaction
transcript_state_after: lawful_redaction
relief_any:
  - legal_body_risk_down
  - archive_fraud_down
  - custody_clarity_up
cost_any:
  - public_distrust_up
  - fan_oxygen_resentment_up
  - bureau_favor_debt_up
future_effect_any:
  - lawful_only
  - appeal_required
  - public_addendum_required
selected_posture: sponsor_clean_minutes
transcript_state_after: sponsor_clean_minutes | sponsor_captured_minutes
relief_any:
  - sponsor_stop_loss_pressure_down
  - slot_pressure_down
  - budget_strain_down
cost_any:
  - contract_capture_up
  - public_receipt_distrust_up
  - future_fraud_cost_up
future_effect_any:
  - sponsor_captured
  - public_audit_required
  - hostile_omission_risk

Editor checksum mask assertion

selected_posture: editor_checksum_mask
transcript_state_after: editor_checksum_mask
relief_any:
  - continuity_hazard_down
  - source_safety_up
  - voice_integrity_up
cost_any:
  - edit_debt_up
  - source_ambiguity_up
  - public_reader_blocked
future_effect_any:
  - checksum_only
  - editor_reader_required
  - contradiction_pending

Public excerpt assertion

selected_posture: public_excerpt
transcript_state_after: public_excerpt
relief_any:
  - private_capture_blocked
  - public_receipt_legitimacy_up
  - fan_delegate_legitimacy_up
cost_any:
  - inspection_heat_up
  - witness_reprisal_risk_up
  - sponsor_retaliation_up
future_effect_any:
  - public_only
  - lawful_appeal_required
  - sponsor_retaliation_pending

Split escrow assertion

selected_posture: split_escrow
transcript_state_after: split_transcript_escrow
reader_states_after_min: 2
relief_any:
  - contradiction_contained
  - witness_safety_up
  - immediate_route_unblocked
cost_any:
  - handler_burden_up
  - source_ambiguity_up
  - reader_collision_pending
  - future_recovery_cost_up
future_effect_any:
  - reader_specific_minutes
  - split_canon
  - costlier_future_correction

Proceed without minutes assertion

selected_posture: proceed_without_minutes
emitted_or_armed_event: storyteller.event.transcript_redaction_default.v1
transcript_state_after_any:
  - missing_minutes
  - false_clean_transcript
  - hostile_omission
  - sponsor_captured_minutes
  - recovery_only
cost_any:
  - reality_drift_up
  - archive_fraud_up
  - public_receipt_distrust_up
  - witness_reprisal_risk_up
  - black_screen_pressure_up
future_effect_any:
  - blocked
  - hostile
  - recovery_only
  - contradiction_pending

Character-state assertion

If Redaction Stenographer is present as keeper, the result must mutate her state or burden.

ruan_chi_assertion:
  if_ruan_chi_keeper_present: true
  then_state_after_any:
    - protected_keeper
    - keeper_burdened
    - witness_exposed
    - sponsor_captured_minutes
    - hostile_omission_witness
    - frightened_missing_keeper
    - recovery_only_keeper
  if_ruan_chi_absent: true
  then_explicit_absence_or_default_required: true

The lens fails if 阮尺 is flavor-only, always recruited by page presence, or omitted without a transcript cost.

Future-reader assertion

A pass must show at least one future reader consuming the transcript result:

future_reader_consumption_required:
  future_reader_present: true
  future_reader_consumes_state: true
  consumed_state_any:
    - raw_transcript_preserved
    - lawful_redaction
    - sponsor_clean_minutes
    - editor_checksum_mask
    - public_excerpt
    - split_transcript_escrow
    - missing_minutes
    - false_clean_transcript
    - hostile_omission
    - recovery_only
  route_or_reader_effect_changed: true

The lens fails if redaction only resolves the current hearing with no later route, reader, archive, public, sponsor, editor, lawful, witness, or broadcast-reality consequence.

Progress metric

hearingTranscriptRedactionProgress = 0..9:

  • 0: no future-readable hearing result or no line/silence.
  • 1: source hearing/action and line or explicit silence are visible.
  • 2: future reader/route is visible.
  • 3: keeper or explicit absence and proof anchor or explicit absence are visible.
  • 4: 听证笔录删改案卷 enters play.
  • 5: 笔录删改听证 offers assignment slots and redaction posture.
  • 6: at least three non-default branch families are visible and state-gated.
  • 7: at least two valid branches produce different transcript states, reader states, costs, and future effects.
  • 8: missing, false-clean, captured, over-masked, or misfiled minutes trigger durable future-reader cost.
  • 9: replay proves future reader consumption with session/seed, source row, docket, assignment, selected branch, counter deltas, event/default state, and route/reader effect.

Minimal replay evidence shape

lens: storyteller.lens.hearing_transcript_redaction.v1
result: pass | fail
session_id: lens-hearing-transcript-redaction-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_hearing_or_action_present: true
  line_or_explicit_silence_present: true
  future_reader_or_route_present: true
  keeper_or_explicit_absence_required: true
  proof_anchor_or_explicit_absence_required: true
  no_fixed_turn_trigger: true
source_row:
  source_hearing: <hearing_or_action_id>
  source_session_id_or_in_world_source: <source id or explicit_absence>
  spoken_line_or_silence: <line id or explicit_silence>
  speaker_or_absence: <speaker or explicit_absence>
  proof_anchor_or_absence: <proof or explicit_absence>
objects:
  docket: storyteller.card.hearing_transcript_redaction_docket.v1
  rite: storyteller.rite.transcript_redaction_hearing.v1
assignment:
  keeper_or_absence: <keeper or explicit_absence>
  future_reader: <reader or route>
  redaction_posture: preserve_raw | lawful_redaction | sponsor_clean_minutes | editor_checksum_mask | public_excerpt | split_escrow | proceed_without_minutes
branch_result:
  keeper_state_after: <state_or_absence>
  transcript_state_after: <state>
  reader_states_after: []
  future_reader_effect: <effect>
  emitted_or_armed_event: storyteller.event.transcript_redaction_default.v1 | none_if_valid
  counter_deltas:
    relief: []
    cost: []
    future: []
assertions:
  source_line_keeper_proof_reader_visible: true
  branch_postures_diverge: true
  success_has_cost: true
  redaction_scope_not_universal_truth: true
  default_mutates_future_reader_access: true
  future_reader_consumes_transcript_state: true
  no_fixed_turn_day_week_raw_count_dashboard_or_lens_health_trigger: true

Failure cases

The lens must fail if any of these are true:

  • entry is fixed-turn, fixed-day, chapter quota, raw transcript count, dashboard status, or lens-health state;
  • no future-readable hearing result exists;
  • no line or explicit silence is recorded;
  • future reader is absent;
  • keeper and proof anchor are missing without explicit absence;
  • docket records only winning branch or summary text;
  • rite omits docket, keeper, proof anchor, future reader, or redaction posture;
  • branch outcomes collapse into the same reader state;
  • success has no cost;
  • lawful redaction is treated as public truth;
  • sponsor clean minutes are treated as public truth;
  • public excerpt is treated as lawful admissibility;
  • editor checksum mask is treated as raw speech;
  • split escrow becomes clean universal canon;
  • default event fails to mutate future route, reader, custody, proof, or recovery state;
  • 阮尺 is present as flavor but cannot be protected, burdened, captured, missed, hostile, or recovery-only;
  • replay evidence lacks seed/session, source row, docket, assignment, selected branch, transcript state, reader state, counter deltas, and future-reader consumption.

Non-goals

  • Not a whole-hearing transcript viewer.
  • Not a generic archive methodology page.
  • Not a moral rule against all redaction.
  • Not a governance checklist.
  • Not raw count satisfaction.
  • Not a free cleanup action.
  • Not a fixed-turn content trigger.
  • Not valid unless transcript custody changes future reader access, route availability, proof credibility, or recovery cost.