Fan Witness Custody Hearing / 粉丝证词羁押听证

Fan Witness Custody Hearing is the assignable management action that decides whether 火签 becomes a protected witness, oxygen-paid route asset, public receipt carrier, archive-only sealed source, missed witness, or hostile counter-broadcaster.

The rite exists to prevent fan-side evidence from being solved by a high-rank manager alone. The player must handle witness safety, oxygen cost, proof custody, and faction framing in the same action.

Entry state

Offer this rite when all of the following are true:

entry_state:
  docket: storyteller.card.huo_qian_fan_witness_docket.v1
  witness_state_any:
    - offered
    - trusted_witness
    - paid_in_oxygen
    - protected_witness
    - missed
    - radicalized_hostile
    - captured_by_security
    - explicit_absence
  proof_rows_min: 1
  proof_row_kind_any:
    - fan_badge_clue
    - oxygen_queue_stub
    - d17_graffiti_map
    - support_light_echo
    - static_receipt
    - missing_trainee_fragment
  claimant_factions_min: 2
  action_needed_any:
    - protect
    - buy
    - publish
    - seal
    - suppress
    - recover
  no_fixed_turn_trigger: true

The rite is invalid if it unlocks from a fixed turn number, day count, chapter quota, generic D-17 visit counter, lens-health state, or raw content count.

Assignment slots

assignment_slots:
  fan_witness:
    accepts:
      - char.huo_qian
      - route_asset.huo_qian_fan_witness
      - explicit_absence
      - state.radicalized_hostile
      - state.captured_by_security
      - state.burned_as_extremist
  proof_object:
    accepts:
      - fan_badge_clue.d17
      - oxygen_queue_stub.lost_support_light
      - d17_graffiti_map
      - support_light_echo.lideng
      - k404_static_receipt.l07
      - missing_trainee_list_fragment
      - equivalent_fan_witness_proof
  handler:
    accepts:
      - unauthorized_historian
      - inspector_or_white_glove
      - archive_handler
      - artist_proxy
      - contract_handler
      - editor_black_box
      - pirate_relay
      - explicit_absence
  payment_or_shield:
    accepts:
      - fan_oxygen_credit
      - witness_payroll_slot
      - public_receipt_slot
      - archive_seal
      - security_clearance_cover
      - sponsor_cash
      - explicit_unpaid
  posture:
    accepts:
      - protect_witness_under_oath
      - buy_evidence_with_oxygen_credit
      - publish_fan_receipt
      - archive_only_seal
      - frame_as_extremist
      - ignore_until_clearance
      - recover_hostile_witness

Resolution rules

A resolution must record the selected posture, assigned witness/proof/handler/payment, one relief, one cost, and at least three counter or durable-state deltas.

Branch A — Protect witness under oath

selected_posture: protect_witness_under_oath
requires_any:
  - handler
  - witness_payroll_slot
  - public_receipt_slot
outcome_any:
  - protected_witness
  - route_asset.huo_qian_fan_witness
relief_any:
  - proof_row_becomes_admissible
  - fan_side_extraction_unlocked
  - public_receipt_legitimacy_up
cost_any:
  - inspection_heat_up
  - payroll_leak_up
  - handler_burden_up
  - witness_safety_risk_up
deltas_min: 3
future_route_effect_any:
  - fan_witness_assignment_available
  - li_deng_personhood_claim_route_opens
  - protected_witness_payroll_cost_active

Branch B — Buy evidence with oxygen credit

selected_posture: buy_evidence_with_oxygen_credit
requires_any:
  - fan_oxygen_credit
  - public_acknowledgment
outcome_any:
  - paid_in_oxygen
  - trusted_witness
  - oxygen_queue_stub_verified
relief_any:
  - huoqian_trust_up
  - proof_legitimacy_up
  - fan_group_stays_available
cost_any:
  - fan_oxygen_surplus_spent
  - sponsor_stop_loss_pressure_up
  - future_fan_claim_expected
  - public_receipt_distrust_if_underpaid
deltas_min: 3
future_route_effect_any:
  - future_fan_receipt_discount
  - fan_claim_expected_on_next_public_win
  - sponsor_counterclaim_armed

Branch C — Publish fan receipt

selected_posture: publish_fan_receipt
requires_any:
  - proof_object
  - handler_or_pirate_relay
outcome_any:
  - public_receipt_carrier
  - fan_proof_publicly_split
  - route_asset.huo_qian_fan_witness
relief_any:
  - public_receipt_legitimacy_up
  - missing_trainee_fragment_enters_public_record
  - security_extremist_frame_blocked
cost_any:
  - inspection_heat_up
  - sponsor_stop_loss_pressure_up
  - radicalization_risk_up_if_unprotected
deltas_min: 3
future_route_effect_any:
  - public_route_requires_witness_safety
  - archive_challenge_pending
  - sponsor_clean_cut_blocked

Branch D — Archive-only seal

selected_posture: archive_only_seal
requires_any:
  - archive_handler
  - inspector_or_white_glove
outcome_any:
  - archive_sealed_witness
  - public_receipt_suppressed
relief_any:
  - immediate_public_instability_down
  - proof_not_destroyed
cost_any:
  - huoqian_trust_down
  - fan_oxygen_resentment_up
  - public_receipt_legitimacy_down
  - radicalization_risk_up
deltas_min: 3
future_route_effect_any:
  - later_public_conversion_required
  - witness_recovery_cost_up
  - hostile_counter_broadcast_armed_if_unpaid

Branch E — Frame as extremist

selected_posture: frame_as_extremist
outcome_any:
  - burned_as_extremist
  - security_extremist_frame_hardened
relief_any:
  - security_clearance_pressure_down
  - sponsor_or_archive_pressure_paused
cost_any:
  - fan_witness_safety_down
  - fan_oxygen_resentment_up
  - public_receipt_legitimacy_down
  - li_deng_personhood_claim_down
  - hostile_witness_reprisal_armed
deltas_min: 3
future_route_effect_any:
  - fan_side_extraction_blocked_or_costlier
  - hostile_fan_testimony_pending
  - recovery_requires_public_contrition_or_witness_payroll

Branch F — Ignore until clearance

selected_posture: ignore_until_clearance
outcome_any:
  - missed
  - captured_by_security
  - radicalized_hostile
emits_or_arms: storyteller.event.fan_witness_radicalization_break.v1
relief_any:
  - handler_slot_saved
  - immediate_schedule_pressure_not_spent
cost_any:
  - custody_gap_up
  - radicalization_risk_up
  - proof_row_lost_or_leaked
  - fan_oxygen_resentment_up
deltas_min: 3
future_route_effect_any:
  - fan_witness_hearing_costlier
  - proof_burden_on_producer_up
  - hostile_narration_capture_armed

Replay evidence shape

rite_id: storyteller.rite.fan_witness_custody_hearing.v1
session_id: lens-storyteller-huo-qian-fan-witness-custody-v1-<timestamp>
seed: <deterministic-seed>
preconditions:
  docket: storyteller.card.huo_qian_fan_witness_docket.v1
  witness_state_before: offered | trusted_witness | paid_in_oxygen | protected_witness | missed | radicalized_hostile | captured_by_security | explicit_absence
  proof_rows:
    - <proof id>
  claimant_factions:
    - fan_public
    - security_or_archive_or_sponsor_or_inspector_or_editor
assignments:
  fan_witness: char.huo_qian | route_asset.huo_qian_fan_witness | explicit_absence | hostile_or_captured_state
  proof_object: <proof id or explicit_absence>
  handler: <handler or explicit_absence>
  payment_or_shield: <payment, payroll, public receipt, archive seal, security cover, sponsor cash, or explicit_unpaid>
  posture: <selected posture>
outcome:
  witness_state_after: protected_witness | paid_in_oxygen | public_receipt_carrier | archive_sealed_witness | burned_as_extremist | missed | radicalized_hostile | captured_by_security
  relief: <one relief>
  cost: <one cost>
  deltas:
    huoqian_trust: <delta or no change>
    fan_witness_safety: <delta or no change>
    radicalization_risk: <delta or no change>
    fan_oxygen_resentment: <delta or no change>
    public_receipt_legitimacy: <delta or no change>
assertions:
  - offer was state-triggered
  - witness/proof/handler/payment assignments were visible
  - outcome changed durable witness state
  - at least three counters or durable tags changed
  - no high-rank-only shortcut resolved the rite
  - no fixed turn trigger was used

Non-goals

  • Not a generic dialogue check.
  • Not a sympathy scene.
  • Not a free fan army unlock.
  • Not a high-rank handler shortcut.
  • Not a fixed-turn side quest.
  • Not a way to erase archive, sponsor, security, or public costs.