Source Anonymity Escrow Lens / 来源匿名托管 Lens
This lens observes whether 来源匿名托管线 prevents anonymous source claims from becoming either free universal proof or automatic source exposure.
A passing implementation proves that source claim, protected source or explicit absence, proof reader, hidden reader, holder or shield, substitute proof, and future route consumption are all visible. The lens fails if an unnamed source satisfies every reader, or if disclosure pressure names the source with no durable scar.
Primary observation link
This lens observes:
- 来源匿名托管线;
- 来源匿名托管机制;
- 受保护证人薪册;
- 听证笔录删改线;
- 举证负荷再分配线;
- 被排除者反回执挑战线;
- Route Assets and Custody and Broadcast Reality.
It is observed through:
Must pass
1. Entry is state-triggered by anonymous source proof use
entry_state:
trigger_kind: state_pressure
source_claim_present: true
anonymous_or_protected_source_visible_or_explicit_absence: true
future_reader_demands_proof: true
disclosure_target_or_hidden_reader_visible: true
escrow_holder_or_shield_or_explicit_absence_visible: true
substitute_proof_or_explicit_absence_visible: true
future_route_consumes_anonymity_state: true
player_can_escrow_disclose_publish_substitute_pay_split_reject_expose_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_source_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry depends on fixed turn, day/week interval, chapter quota, raw source count, dashboard state, lens health, or generic secrecy pressure.
2. Source claim, proof reader, and hidden reader are visible
Source Anonymity Escrow Docket or equivalent must record:
source_required:
source_claim_id: <stable id>
source_surface: transcript_line | protected_witness | confidant_promise | counterreceipt | caption_log | route_log | public_receipt | checksum | equivalent
source_claim_text_or_code: <claim code>
source_identity_state: anonymous | sealed | protected | payroll_due | public_alias | lawful_only | sponsor_known | explicit_absence | equivalent
reader_required:
proof_reader: lawful_body | public_table | archive | inspector | sponsor | route_claimant | editor | fan_oxygen_queue | harmed_artist | broadcast_reality | equivalent
hidden_reader_or_absence: sponsor | public_table | archive | inspector | hostile_claimant | editor | fan_queue | pirate_relay | management | route_asset | explicit_absence
requested_use: route_unlock | proof_burden_shift | lawful_annex | public_correction | sponsor_defense | counterreceipt_support | broadcast_reality_patch | equivalentThe lens fails if it records only anonymous tip accepted, source protected, redacted, or witness safe.
3. Holder, shield, substitute proof, or explicit absence is recorded
protection_required:
escrow_holder_or_absence: han_yanshuang | yu_lan | baiya | shen_luo | ruan_chi | inspector | archive_clerk | public_delegate | explicit_absence
shield_or_support_or_absence: lawful_seal | anonymity_shell | payroll_token | checksum_mask | public_alias | substitute_proof | route_quarantine | explicit_absence
substitute_proof_or_absence: checksum | lawful_annex | public_receipt | transcript_excerpt | witness_oath | route_log | explicit_absence
future_reader_or_route: <reader route ending scar or explicit_absence>The lens fails if source protection is implied by flavor or if absence is not explicit.
4. Anonymity and proof states diverge
Every resolved branch must expose:
result_required:
source_state_after: <state>
proof_reader_state_after: <state>
hidden_reader_state_after: <state>
future_route_effect: <effect>The lens fails if all readers treat anonymous proof as the same clean state.
5. Branch families are non-equivalent
At least six branch families must be playable or explicitly blocked by state:
escrow_sealed_source;lawful_sealed_disclosure;anonymous_public_proof;substitute_proof;pay_and_shield_source;split_reader_access;reject_anonymous_source;sponsor_exposure;forced_disclosure_default.
Each constructive branch must include relief, cost, and future route effect.
6. Branch assertions
escrow_assertion:
selected_posture: escrow_sealed_source
future_effect_any: [escrow_receipt_required, scoped_proof_reader]
forbidden: [anonymous_source_as_universal_proof]
lawful_assertion:
selected_posture: lawful_sealed_disclosure
future_effect_any: [lawful_only, appeal_required]
forbidden: [lawful_seal_as_public_repair]
public_assertion:
selected_posture: anonymous_public_proof
future_effect_any: [public_only, audit_later]
forbidden: [public_anonymous_proof_as_lawful_admissibility]
substitute_assertion:
selected_posture: substitute_proof
future_effect_any: [substitute_bridge_required, route_delay]
forbidden: [substitute_erases_source_risk]
shield_assertion:
selected_posture: pay_and_shield_source
future_effect_any: [protected_witness_route_open, payroll_due]
forbidden: [shield_without_cost]
default_assertion:
selected_posture: forced_disclosure_default
future_effect_any: [appeal_required, route_blocked, recovery_only]
forbidden: [free_forced_disclosure]Replay proof contract
lens_id: storyteller.lens.source_anonymity_escrow.v1
session_id: lens-source-anonymity-escrow-v1-<timestamp>
entry_state:
trigger_kind: state_pressure
source_claim_present: true
anonymous_or_protected_source_visible_or_explicit_absence: true
future_reader_demands_proof: true
disclosure_target_or_hidden_reader_visible: true
offered:
card: storyteller.card.source_anonymity_escrow_docket.v1
rite: storyteller.rite.source_anonymity_escrow_hearing.v1
resolved:
selected_posture: <branch>
source_state_after: <state>
proof_reader_state_after: <state>
hidden_reader_state_after: <state>
future_route_effect: <effect>
default:
event_seen_or_armed: storyteller.event.source_disclosure_default.v1
assertions:
- source_claim_proof_reader_and_hidden_reader_are_visible
- holder_shield_or_substitute_proof_is_recorded
- anonymity_and_proof_states_diverge
- default_forced_disclosure_is_durableFails if
- anonymous proof is a universal clean key;
- forced disclosure has no holder, shield, route cost, or recovery scar;
- public anonymous proof satisfies lawful proof;
- sponsor exposure repairs public trust;
- future route does not consume anonymity state.