Class Representative Mandate Drift / 集体代表委任漂移机制

This mechanic prevents prior group representation from becoming permanent clean authority.

The core rule is: a representative row may survive as history, but later play must retest mandate when the representative’s state, scope, or covered cohort changes before a future reader consumes it.

Mechanic boundary

This is not a replacement for:

This mechanic starts later: old representation exists, then a representative-state change makes reuse unsafe.

State machine

representative_mandate_state_machine:
  dormant:
    meaning: no future reader is trying to spend old authority
  reuse_attempted:
    required:
      - source_representative_row
      - original_representative
      - represented_cohorts
      - original_scope
      - future_reader
      - reuse_claim
  drift_visible:
    required_any:
      - bought_off
      - settled_separately
      - discharged
      - refused_reuse
      - captured
      - substituted
      - protected_withdrawal
      - oxygen_haircut
      - operator_exposed
      - mandate_expired
      - class_scope_changed
  review_open:
    offered:
      card: storyteller.card.class_representative_mandate_docket.v1
      rite: storyteller.rite.class_representative_mandate_review.v1
  resolved:
    states:
      - renewed_limited
      - split_required
      - substitute_required
      - withdrawal_protected
      - conflict_public
      - escrowed
      - quarantined
      - false_universal_representative
      - recovery_only

Entry must be caused by live state pressure. It must not be caused by fixed turn number, day/week interval, raw class count, raw delegate count, raw witness count, dashboard state, lens-health state, or generic legal aftermath.

Required fields

Every implementation must expose these fields through 集体代表委任案卷 or equivalent:

fields_required:
  source_representative_row_id: <row id or explicit_absence>
  source_surface: <surface>
  original_representative: <actor or explicit_absence>
  represented_cohorts: []
  excluded_or_deferred_cohorts: []
  original_scope: <scope or explicit_absence>
  original_proof_or_absence: <proof or explicit_absence>
  drift_kind: <drift kind or explicit_absence>
  representative_state_before: <state>
  representative_state_after: <state>
  claimant_trying_to_reuse: <actor>
  future_reader: <reader>
  reuse_claim: <claim>
  remedy_or_route_at_risk: <remedy or route>
  proof_of_current_mandate_or_absence: <proof or explicit_absence>
  selected_posture: <posture>
  mandate_state_after: <state>
  future_reader_or_route_effect: <effect>

If any field is absent, the absence must be explicit and must carry cost.

Branch contract

The mechanic must support at least six non-equivalent branch families plus default, or explicitly block unavailable branches with state reasons.

BranchRequired proofRequired costDurable result
Renew mandatecurrent mandate proof for named scopeproof upkeep, callback/addendum pressurerenewed_limited
Split cohortsrepresented and excluded cohorts namedsplit proof upkeep, route delaysplit_required
Appoint substitutesubstitute identity and authority visiblelegitimacy risk, carrier exposuresubstitute_required
Protect withdrawalrefusal/withdrawal preservedclaimant hostility, recovery costwithdrawal_protected
Publish conflict noticedrift published to future readerspublic distrust, sponsor/inspection heatconflict_public
Escrow authorityauthority held for lawful/archive readerarchive debt, lawful-only routingescrowed
Quarantine mandateunsafe reuse blockedroute block, recovery-only scarquarantined
Silent representative defaultfastest desk consumes old authorityfalse universal representative scarfalse_universal_representative

No branch may create clean universal representation across public, lawful, sponsor, archive, fan oxygen, access caption, route asset, management, and broadcast reality readers.

Counter surfaces

Each constructive branch must mutate relief, cost, and future route state.

counter_surfaces:
  relief:
    - representative_legitimacy
    - remedy_access
    - public_receipt_legitimacy
    - access_caption_trust
    - fan_delegate_legitimacy
  cost:
    - representative_drift_debt
    - cohort_fracture
    - fan_oxygen_resentment
    - sponsor_stop_loss_pressure
    - lawful_annex_debt
    - archive_debt
    - witness_retaliation_risk
    - operator_exposure
    - inspection_heat
    - handler_burden
  future:
    - future_route_cost
    - broadcast_reality_drift
    - route_asset_pressure
    - callback_required
    - public_addendum_required
    - recovery_only_mandate

Default rule

When old representation is reused without a current mandate proof, 沉默代表默认 must fire or arm. The event must name the old representative, hidden drift, false reuse claim, hidden cohort, and future route effect.

Replay evidence

mechanic_evidence:
  mechanic_id: storyteller.mechanic.class_representative_mandate_drift.v1
  session_id: lens-class-representative-mandate-drift-v1-<timestamp>
  seed: <deterministic-seed>
  entry_state:
    trigger_kind: state_pressure
    source_representative_row_present: true
    representative_state_changed: true
    future_reader_attempts_reuse: true
    represented_and_excluded_cohorts_visible_or_explicit_absence: true
    no_fixed_turn_trigger: true
  branch_result:
    selected_posture: <posture>
    mandate_state_after: <state>
    future_reader_or_route_effect: <effect>
    default_event_if_any: storyteller.event.silent_representative_default.v1 | explicit_absence
  assertions:
    - old_representation_preserved_as_history
    - current_mandate_retested_before_reuse
    - hidden_cohort_cannot_disappear
    - success_has_relief_cost_and_future_effect
    - default_names_false_representative_claim
    - no_universal_representative