Precedent Drift Registry / 先例漂移登记机制

Precedent Drift Registry defines how Storyteller stores, narrows, contaminates, or quarantines institutional memory after a branch result becomes useful to a later desk.

The mechanism exists because the corpus now has many strong local rulings: oxygen clawback, sponsor afteruse, continuity afteruse, enforcement mandate exhaustion, reader-specific rulings, and management compression. Those surfaces answer a case. They do not yet answer what happens when a later sponsor, inspector, archive desk, editor, fan delegate, management report, or route asset holder says: “that case is now the rule.”

This mechanic is not governance. It is a gameplay rule for how old branch states become dangerous future assets.

Entry contract

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
  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 surface fails if it opens because enough turns passed, a quota was met, a dashboard became green, or a generic reputation counter crossed a raw threshold.

Source memory model

The source case remains true. The mechanism never retcons a previous branch.

source_memory_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 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>

Accepted sources include:

Precedent claim model

The later claim must be explicit:

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 mechanism fails if the old case becomes a hidden global flag.

Content surfaces

  • 先例漂移案卷 records the source case, old scar, precedent claim, target case, analogy basis, and excluded reader.
  • 先例题名听证 resolves the memory posture.
  • 伪先例默认 fires or arms when a desk cites the old case as a clean new rule without caption discipline.

Branch states

branch_states:
  annotate_precedent:
    memory_state_after: annotated
    required_relief: institutional_memory_legible
    required_cost: citation_burden_or_public_distrust
    future_effect: citation_requires_caption
  narrow_scope:
    memory_state_after: narrowed
    required_relief: weak_similarity_blocked
    required_cost: future_conversion_cost
    future_effect: analogy_check_required
  split_readers:
    memory_state_after: split
    required_relief: one_reader_route_unblocked
    required_cost: route_copies_diverge
    future_effect: split_precedent_required
  counter_precedent:
    memory_state_after: contested
    required_relief: captured_rule_contested
    required_cost: appeal_or_bureau_debt
    future_effect: future_hearing_required
  quarantine_memory:
    memory_state_after: quarantine
    required_relief: false_rule_spread_blocked
    required_cost: route_delay_or_archive_debt
    future_effect: recovery_only_until_bridge
  publish_errata:
    memory_state_after: corrected
    required_relief: public_memory_or_inspection_rule_corrected
    required_cost: institutional_embarrassment_or_sponsor_pressure
    future_effect: errata_required_for_reuse
  accept_capture:
    memory_state_after: captured
    required_relief: claiming_institution_pressure_down
    required_cost: precedent_capture_or_excluded_reader_hostility
    future_effect: captured_reader_gate_required
  refuse_default:
    memory_state_after: false_precedent
    emitted_or_armed_event: storyteller.event.false_precedent_default.v1
    future_effect: hostile_reader_or_recovery_only

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

Counter and durable-state vocabulary

valid_deltas:
  relief_any:
    - institutional_memory_legible
    - false_universal_rule_blocked
    - weak_similarity_blocked
    - captured_rule_contested
    - public_memory_trust_up
    - inspection_or_archive_rule_corrected
  cost_any:
    - 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
  future_any:
    - 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

Replay evidence shape

mechanic_id: storyteller.mechanic.precedent_drift_registry.v1
session_id: precedent-drift-registry-v1-<timestamp>
seed: <deterministic-seed>
entry_state:
  trigger_kind: state_pressure
  source_case_present: 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
  no_fixed_turn_trigger: true
offered:
  card: storyteller.card.precedent_drift_docket.v1
  rite: storyteller.rite.precedent_caption_hearing.v1
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>
    counter_deltas:
      relief: []
      cost: []
      future: []
    future_route_effect: <effect>
  default_branch:
    emitted_or_armed_event: storyteller.event.false_precedent_default.v1
    false_rule: <rule>
    harmed_or_excluded_reader: <reader or explicit_absence>
    future_route_effect: <effect>