Precedent Drift Registry Lens / 先例漂移登记 Lens

This lens observes whether 先例漂移登记线 and 先例漂移登记机制 correctly make institutional memory playable after a resolved case is cited as precedent.

A passing implementation proves that an oxygen stay, sponsor release, continuity addendum, unserved mandate row, reader-specific ruling, or compressed management metric cannot silently become universal policy. The old branch remains true; the new play is the caption, reader limit, analogy basis, excluded reader, and future route effect of the claimed precedent.

The lens fails if the implementation stores only precedent_ok, policy_set, sponsor_rule, inspection_rule, archive_rule, management_clean, fans_consented, or any other clean global memory flag.

This lens observes:

It is observed through:

Observable promise

When a resolved source case is later cited as precedent, Storyteller must prove:

  • which source surface produced the old case;
  • which branch or default happened;
  • which source relief remains true;
  • which source cost, scar, excluded reader, or future effect remains true;
  • which institution is claiming the precedent;
  • what rule it claims;
  • what new target case or route it affects;
  • which analogy basis is being used;
  • which reader benefits;
  • which reader is excluded, harmed, or explicitly absent;
  • which caption posture the player selects;
  • which future route, proof, package, public receipt, report, or route asset changes.

The lens fails if the old case is retconned, erased, or accepted as clean precedent without a caption surface.

Must pass

1. Entry is state-triggered from source case plus later claim

entry_state_required:
  trigger_kind: state_pressure
  source_case_present: true
  source_case_branch_resolved_or_defaulted: true
  source_cost_or_scar_kept_true: true
  later_precedent_claim_present: true
  claiming_institution_present: true
  target_case_or_route_present: true
  desired_new_reader_present: true
  excluded_reader_present_or_explicit_absence: true
  analogy_basis_visible: true
  future_route_or_asset_effect_possible: true
  player_can_annotate_narrow_split_counter_quarantine_errata_capture_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: true

The lens fails if entry opens from numbered turns, day/week interval, chapter quota, content count, dashboard state, lens health, generic sponsor pressure, generic inspection heat, or generic legal review.

2. Source case memory remains visible

先例漂移案卷 or equivalent must preserve the source case:

source_case_required:
  source_surface: oxygen_clawback_foreclosure | sponsor_afteruse_citation | continuity_afteruse_contempt | enforcement_mandate_exhaustion | ruling_reader_collision | management_compression | broadcast_insolvency | equivalent
  source_case_id: <stable id or explicit_absence>
  original_branch: <branch selected or default>
  original_reader: <reader or explicit_absence>
  protected_reader: <reader or explicit_absence>
  harmed_or_excluded_reader: <reader or explicit_absence>
  source_relief_kept_true: <relief or explicit_absence>
  source_cost_kept_true: <cost or scar>
  source_future_effect_kept_true: <future effect>

The lens fails if precedent play reopens the source case by erasing its old cost or turns the old branch into a no-op.

3. Precedent claim is concrete

The docket must also record:

precedent_claim_required:
  claiming_institution: sponsor_desk | inspection_desk | archive_desk | management_desk | editor_desk | lawful_desk | fan_delegate | route_asset_holder | pirate_relay | equivalent
  claimed_rule: <generalized rule>
  target_case: <new case or route surface>
  analogy_basis: same_reader | same_asset | same_sponsor | same_signature | same_continuity_version | same_refund_shape | same_mandate_dimension | same_public_receipt | weak_similarity | equivalent
  desired_new_reader: <reader>
  excluded_reader_or_absence: <reader or explicit_absence>
  memory_state_before: unregistered | annotated | narrowed | split | appealed | contaminated | captured | quarantine | explicit_absence

The lens fails if the new claim is only they cite the old case with no target case, analogy basis, or excluded reader.

4. Hearing assignment is explicit

先例题名听证 or equivalent must require:

assignment_required:
  docket: storyteller.card.precedent_drift_docket.v1
  source_case_id: <stable id or explicit_absence>
  source_surface: <surface>
  original_branch: <branch>
  source_cost_kept_true: <cost or scar>
  source_future_effect_kept_true: <effect>
  claiming_institution: <institution>
  claimed_rule: <rule>
  target_case: <case or route>
  analogy_basis: <basis>
  desired_new_reader: <reader>
  excluded_reader_or_absence: <reader or explicit_absence>
  selected_posture: annotate_precedent | narrow_scope | split_readers | counter_precedent | quarantine_memory | publish_errata | accept_capture | refuse_default
  handler_or_absence: producer | shen_luo | yu_lan | han_yanshuang | baiya | inspector | sponsor_counsel | archive_clerk | fan_delegate | explicit_absence | equivalent
  proof_bridge_or_absence: docket_caption | public_footnote | archive_cross_index | reader_split_note | inspection_errata | counter_digest | quarantine_stamp | explicit_absence | equivalent
  accepted_cost_surface: <cost or explicit_absence>
  future_route_effect: <effect>
  no_fixed_turn_trigger: true

The lens fails if sponsor money, inspector authority, archive custody, editor checksum, management report, or public outrage can set precedent without these assignments.

5. Branches diverge

At least six branch families must be playable or explicitly blocked by state, including one default family:

  • annotate precedent;
  • narrow scope;
  • split readers;
  • counter precedent;
  • quarantine memory;
  • publish errata;
  • accept capture;
  • false precedent default.

Each branch must differ by:

branch_non_equivalence:
  memory_state_after: <different state>
  desired_reader_state_after: <different state>
  excluded_reader_state_after: <different state>
  cost_surface: <different cost>
  future_route_effect: <different effect>

No branch may create clean universal precedent for sponsor, management, lawful, public, archive, editor, fan, route asset, and broadcast-reality readers.

6. Branch-specific assertions

Annotate precedent

selected_posture: annotate_precedent
relief_any:
  - institutional_memory_legible
  - false_universal_rule_blocked
cost_any:
  - public_receipt_distrust_up
  - inspection_heat_up
  - handler_burden_up
future_effect_any:
  - citation_requires_caption
  - accepted_with_scar
forbidden:
  - source_scar_deleted

Narrow scope

selected_posture: narrow_scope
relief_any:
  - target_route_can_use_limited_rule
  - weak_similarity_blocked
cost_any:
  - future_conversion_cost_up
  - sponsor_or_management_pressure_up
future_effect_any:
  - narrow_precedent_only
  - analogy_check_required
forbidden:
  - weak_similarity_as_clean_precedent

Split readers

selected_posture: split_readers
relief_any:
  - one_reader_route_unblocked
  - excluded_reader_recovery_hook_preserved
cost_any:
  - source_ambiguity_up
  - route_copies_diverge
future_effect_any:
  - split_precedent_required
  - universal_acceptance_blocked
forbidden:
  - split_as_universal_acceptance

Counter precedent

selected_posture: counter_precedent
relief_any:
  - captured_rule_contested
  - harmed_reader_visible
cost_any:
  - appeal_pressure_up
  - bureau_favor_debt_up
future_effect_any:
  - contested_precedent
  - future_hearing_required
forbidden:
  - counter_case_hidden_after_use

Quarantine memory

selected_posture: quarantine_memory
relief_any:
  - false_rule_spread_blocked
  - source_case_preserved
cost_any:
  - route_delay_up
  - archive_debt_up
future_effect_any:
  - quarantine_until_bridge
  - recovery_only_for_target_case
forbidden:
  - quarantine_as_clean_deletion

Publish errata

selected_posture: publish_errata
relief_any:
  - public_memory_trust_up
  - inspection_or_archive_rule_corrected
cost_any:
  - institutional_embarrassment_up
  - sponsor_stop_loss_pressure_up
future_effect_any:
  - errata_required_for_reuse
  - public_only_until_lawful_bridge
forbidden:
  - errata_as_free_retcon

Accept capture

selected_posture: accept_capture
relief_any:
  - claiming_institution_pressure_down
  - schedule_or_stop_loss_pressure_down
cost_any:
  - precedent_capture_up
  - excluded_reader_hostility_up
future_effect_any:
  - captured_precedent
  - captured_reader_gate_required
forbidden:
  - capture_record_hidden

False precedent default

selected_posture: refuse_default
event_seen_or_armed: storyteller.event.false_precedent_default.v1
false_rule_any:
  - fan_absence_equals_future_consent
  - sponsor_release_cleans_public_reader
  - archive_escrow_equals_ownership
  - unserved_mandate_row_never_mattered
  - checksum_equals_raw_truth
  - scarred_management_metric_was_clean
  - one_reader_acceptance_is_universal
future_effect_any:
  - false_precedent
  - captured_precedent
  - contaminated
  - hostile_reader
  - route_blocked
  - recovery_only

7. Reader states diverge

Passing evidence must show at least two reader states after resolution, and at least two must differ:

reader_states_after:
  sponsor_reader: accepted_with_caption | captured | narrowed | hostile | blocked | explicit_absence | equivalent
  management_reader: clean_metric_blocked | contaminated | accepted_with_scar | captured | appeal_armed | explicit_absence | equivalent
  lawful_reader: accepted_with_cost | lawful_only | errata_required | blocked | recovery_only | explicit_absence | equivalent
  public_reader: accepted_with_footnote | public_only | distrustful | hostile | blocked | explicit_absence | equivalent
  archive_reader: cross_index_required | quarantined | ownership_blocked | recovery_only | explicit_absence | equivalent
  editor_reader: checksum_limited | raw_truth_blocked | ambiguity_pending | recovery_only | explicit_absence | equivalent
  fan_or_artist_reader: consent_required | hostile | recovery_hook_preserved | blocked | explicit_absence | equivalent
  route_asset_or_broadcast_reader: accepted_with_cost | route_costlier | captured | blocked | recovery_only | explicit_absence | equivalent

The lens fails if every reader accepts the same institutional memory.

8. Success has relief, cost, and future effect

Every non-default branch must mutate at least three counters or durable states:

counter_deltas_required:
  relief: at_least_one
  cost: at_least_one
  future_reader_or_route_effect: at_least_one

Accepted relief surfaces:

  • institutional_memory_legible;
  • false_universal_rule_blocked;
  • weak_similarity_blocked;
  • captured_rule_contested;
  • public_memory_trust_up;
  • inspection_or_archive_rule_corrected.

Accepted cost surfaces:

  • precedent_capture_up;
  • precedent_contamination_up;
  • public_receipt_distrust_up;
  • inspection_heat_up;
  • bureau_favor_debt_up;
  • sponsor_stop_loss_pressure_up;
  • route_copies_diverge;
  • archive_debt_up;
  • source_ambiguity_up;
  • excluded_reader_hostility_up.

Accepted future effects:

  • citation_requires_caption;
  • analogy_check_required;
  • split_precedent_required;
  • future_hearing_required;
  • quarantine_until_bridge;
  • errata_required_for_reuse;
  • captured_reader_gate_required;
  • recovery_only;
  • route_blocked.

9. Default is durable

伪先例默认 or equivalent must name:

  • source surface;
  • source case id or explicit absence;
  • original branch;
  • source cost or scar kept true;
  • default actor;
  • false rule;
  • target case;
  • missing caption surface;
  • first accepting reader;
  • harmed or excluded reader;
  • precedent memory state after;
  • future route effect;
  • at least three deltas.

The default must change future play through route acceptance, sponsor package gating, inspection errata, archive cross-index, legality conversion, management metric contamination, public receipt footnote, route asset recovery, or broadcast reality drift.

10. Future acceptance changes

After resolution, at least one future offer must change acceptance, block reason, surcharge, required bridge, reader label, route state, or recovery requirement.

Valid examples:

  • a sponsor package accepts the precedent only with capture label;
  • an inspection report requires errata before using the old case;
  • an archive proof requires a cross-index before transfer;
  • a public receipt requires a footnote;
  • a legality conversion is blocked until the analogy is narrowed;
  • a route asset remains recovery-only while memory is quarantined;
  • a management metric is marked contaminated;
  • a broadcast reality readback rejects false precedent.

11. Replay evidence is complete and not trigger logic

Replay evidence may record seed, session id, and source sessions. Eligibility must remain based on resolved source case, later precedent claim, claiming institution, target case, desired reader, excluded reader, analogy basis, and future route effect.

lens_id: storyteller.lens.precedent_drift_registry.v1
result: pass | fail
session_id: lens-precedent-drift-registry-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_case_present: true
  source_case_branch_resolved_or_defaulted: true
  source_cost_or_scar_kept_true: true
  later_precedent_claim_present: true
  claiming_institution_present: true
  target_case_or_route_present: true
  desired_new_reader_present: true
  excluded_reader_present_or_explicit_absence: true
  analogy_basis_visible: true
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.precedent_drift_docket.v1
  rite: storyteller.rite.precedent_caption_hearing.v1
docket:
  source_surface: <surface>
  source_case_id: <id or explicit_absence>
  original_branch: <branch>
  source_cost_kept_true: <cost>
  source_future_effect_kept_true: <effect>
  claiming_institution: <institution>
  claimed_rule: <rule>
  target_case: <case or route>
  analogy_basis: <basis>
  desired_new_reader: <reader>
  excluded_reader_or_absence: <reader or explicit_absence>
branch_runs:
  valid_branch:
    selected_posture: annotate_precedent | narrow_scope | split_readers | counter_precedent | quarantine_memory | publish_errata | accept_capture
    memory_state_before: <state>
    memory_state_after: <state>
    reader_states_after: {}
    counter_deltas:
      relief: []
      cost: []
      future: []
    future_route_effect: <effect>
  default_branch:
    emitted_or_armed_event: storyteller.event.false_precedent_default.v1
    false_rule: <rule>
    missing_caption_surface: <surface or explicit_absence>
    first_accepting_reader: <reader>
    harmed_or_excluded_reader: <reader or explicit_absence>
    precedent_memory_state_after: false_precedent | captured_precedent | contaminated | hostile_reader | recovery_only | route_blocked
    future_route_effect: <effect>