Cen Wei Temporary Chain Runner Lens / 岑微临时交接跑腿 Lens

This lens observes whether 岑微 and 岑微临时交接跑腿线 turn field custody into a concrete RPG state.

A pass requires a movable contested proof object, at least two claimant factions, visible Cen Wei state or explicit absence, an assignable permit or cover, a handler or explicit absence, divergent transfer branches, durable hostile/captured/missed states, and a future reader that consumes the runner state.

This lens observes:

Exact runtime packet

The executable surface begins with exactly eight Storyteller starter objects:

Required slotExact in-hand object
runnercard-storyteller-cen-wei-temporary-chain-runner
permitcard-storyteller-inspection-shadow-crew-permit
proof_objectstoryteller.card.cen_wei_contested_proof_packet.v1
archive_claimantstoryteller.card.cen_wei_archive_claimant.v1
rival_claimantstoryteller.card.cen_wei_public_claimant.v1
handlerstoryteller.card.cen_wei_chain_handler.v1
coverstoryteller.card.cen_wei_custody_cover.v1
future_readerstoryteller.card.cen_wei_future_chain_reader.v1

All eight slots are required and each accepts only its listed object. The lens fails on substituted cards, tag-only or generic matches, virtual assignments, an object missing from hand, an omitted slot, a mixed tuple, or rite resolution without a selected choice. An explicit absence remains a possible terminal person-state; it is not a valid substitute for any executable assignment slot.

Gap this lens targets

The inspection-shadow pack already rejects a clean high-rank authority button. This lens targets the character gap: Cen Wei can still be reduced to carrier present unless implementation records her state separately from the proof packet.

The lens fails if:

  • a proof packet moves with no carrier or explicit absence;
  • Han Yanshuang, Yu Lan, Baiya, Shen Luo, sponsor, archive, or inspector authority fills the carrier slot by itself;
  • the permit state changes but Cen Wei’s person-state does not;
  • captured, suppressed, hostile, sacrificed, or missed runner states have no future route cost;
  • future proof or route readers consume the packet without reading whether Cen Wei was protected, captured, missed, or made hostile.

Must pass

1. Entry is state-triggered by contested physical proof

entry_state_required:
  trigger_kind: state_pressure
  movable_or_uncertain_proof_present: true
  proof_object_can_change_future_route_or_counter: true
  claimant_factions_count_min: 2
  cen_wei_state_or_explicit_absence_visible: true
  carrier_slot_required_or_absence_recorded: true
  permit_cover_or_explicit_absence_visible: true
  handler_or_explicit_absence_visible: true
  future_reader_or_route_consumes_chain_state: true
  player_can_authorize_publicize_mask_bypass_sponsor_cover_sacrifice_or_record_absence: true
  non_neutral_default_exists: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_phase_trigger: true
  no_raw_runner_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The lens fails if entry comes from fixed chronology, a raw runner count, chapter quota, lens health, dashboard status, or a generic “evidence ready” flag.

2. Proof object and claimants are concrete

Inspection Shadow Crew Permit or equivalent must record:

proof_pressure_required:
  proof_object: <stable proof object id>
  proof_object_family: fan_oxygen_receipt | archive_docket_copy | black_box_fragment | consent_printout | witness_stub | memorial_air_copy | voice_custody_receipt | route_asset_packet | recovery_counterstub | public_receipt_fragment | equivalent
  proof_state_before: movable | physically_uncertain | contested | copied | unfiled | exposed | suppressed | equivalent
  claimant_factions:
    - archive | inspector | sponsor | fan_public | unauthorized_historian | editor | artist | pirate | false_owner | production | equivalent
    - second_claimant_or_equivalent
  affected_future_surface: route_unlock | audit | public_receipt | proof_burden | consent_debt | memorial_air_chain | receipt_counterclaim | route_asset_maintenance | equivalent

The lens fails if the row stores only evidence, receipt, packet, or transfer needed with no object id, claimant conflict, or future consumer.

3. Cen Wei state or explicit absence is visible

runner_state_required:
  carrier: storyteller.npc.cen_wei_temporary_chain_runner.v2 | other_runner | explicit_absence
  cen_wei_state_before: crew_unseen | crew_offer_ready | runner_authorized | lawful_chain_witness | public_receipt_carrier | editor_masked_carrier | neutral_route_asset | suppressed_carrier | hostile_leak_source | captured_carrier | sacrificed_permit | explicit_absence
  carrier_slot_reason: service_corridor | backstage_handoff | inspection_shadow | public_receipt_delivery | black_box_fragment_move | memorial_air_copy_move | route_asset_packet_move | equivalent
  permit_or_cover: inspection_shadow_crew_permit | audit_oath | public_receipt | editor_mask | sponsor_cover | production_cover | none | explicit_absence
  handler_or_absence: han_yanshuang | yu_lan | baiya | shen_luo | sponsor | production | fan_delegate | archive_clerk | explicit_absence
  future_reader: shadow_evidence_transfer | memorial_air_chain | proof_burden | receipt_counterclaim | route_asset_reader | protected_witness_payroll | equivalent

The lens fails if Cen Wei is only an inventory card, a helper tag, a generic worker, affinity, or dialogue flag.

4. Permit row keeps runner state separate from proof state

The permit or transfer row must keep four locks separate:

ledger_locks_required:
  proof_lock:
    proof_object: <object id>
    proof_state_before: <state>
    future_effect_if_unworked: blocked | costlier | lawful_only | public_only | false_owner_pressure | recovery_only | equivalent
  claimant_lock:
    claimant_factions_min: 2
    claimant_pressure: archive | inspector | sponsor | fan_public | editor | artist | pirate | false_owner | production | equivalent
  runner_lock:
    cen_wei_state_before: <state or explicit_absence>
    carrier_slot: cen_wei | other_runner | explicit_absence
    runner_risk_before: none | low | armed | live | defaulted
  reader_lock:
    permit_or_cover: <cover or explicit_absence>
    handler_or_absence: <handler or explicit_absence>
    future_reader: <reader>
    state_if_ignored: suppressed_carrier | hostile_leak_source | captured_carrier | carrier_absent_false_chain | shadow_crew_custody_leak | equivalent

The lens fails if the proof object becomes valid while Cen Wei’s state is overwritten, implied, or left behind.

5. Shadow transfer has eight exact slots

Shadow Evidence Transfer or equivalent must require:

assignment_required:
  runner: card-storyteller-cen-wei-temporary-chain-runner
  permit: card-storyteller-inspection-shadow-crew-permit
  proof_object: storyteller.card.cen_wei_contested_proof_packet.v1
  archive_claimant: storyteller.card.cen_wei_archive_claimant.v1
  rival_claimant: storyteller.card.cen_wei_public_claimant.v1
  handler: storyteller.card.cen_wei_chain_handler.v1
  cover: storyteller.card.cen_wei_custody_cover.v1
  future_reader: storyteller.card.cen_wei_future_chain_reader.v1

Generic choices such as move evidence, send courier, ask inspector, or publish receipt fail. All eight exact cards must be in hand and assigned to their matching slots, and one of the eight stable choices must be selected.

6. Branches diverge by runner state

A satisfying implementation must expose exactly these stable choice ids and their matching branch families:

  • authorize_runner_lawful_custody lawful_chain;
  • route_runner_to_public_receipt public_receipt_chain;
  • mask_runner_under_editor_checksum editor_mask;
  • retain_runner_as_production_neutral production_neutral_route;
  • accept_sponsor_cover_capture sponsor_cover;
  • suppress_runner_access managed_bypass_or_suppress;
  • sacrifice_runner_permit sacrifice_carrier_or_permit;
  • abandon_runner_to_pirate_loop leak_capture_or_hostile.

Branches must differ by Cen Wei state, proof object state, claimant or reader state, counter deltas, and future route effect.

Branch assertions

branch_assertions:
  lawful_chain:
    cen_wei_state_after_any: [lawful_chain_witness, neutral_route_asset]
    relief_any: [custody_clarity_up, proof_legibility_up, admissibility_up]
    cost_any: [inspection_heat_up, bureau_favor_debt_up, lawful_only_route, runner_risk_up]
    future_effect_any: [lawful_proof_with_cost, audit_required]
  public_receipt_chain:
    cen_wei_state_after: public_receipt_carrier
    relief_any: [public_receipt_legitimacy_up, private_capture_blocked]
    cost_any: [sponsor_stop_loss_pressure_up, fan_oxygen_liability_up, public_exposure_up]
    future_effect_any: [public_only, receipt_bound, costlier]
  editor_mask:
    cen_wei_state_after: editor_masked_carrier
    relief_any: [retaliation_risk_down, continuity_hazard_down]
    cost_any: [edit_debt_up, archive_debt_up, source_ambiguity_up]
    future_effect_any: [checksum_only, contradiction_pending]
  production_neutral_route:
    cen_wei_state_after: neutral_route_asset
    relief_any: [future_small_chain_option_available, faction_capture_delayed]
    cost_any: [payroll_leak_up, handler_burden_up, recovery_cost_up]
    future_effect_any: [reusable_once_with_cost]
  sponsor_cover:
    cen_wei_state_after_any: [suppressed_carrier, captured_carrier, neutral_route_asset]
    relief_any: [slot_pressure_down, retaliation_pressure_down]
    cost_any: [contract_capture_up, public_distrust_up, ownership_debt_up]
    future_effect_any: [sponsor_only, captured, rescue_required]
  managed_bypass_or_suppress:
    cen_wei_state_after_any: [suppressed_carrier, explicit_absence]
    relief_any: [immediate_desk_pressure_down]
    cost_any: [custody_gap_up, proof_burden_up, carrier_option_lost]
    future_effect_any: [transfer_costlier, route_blocked, recovery_only]
  sacrifice_carrier_or_permit:
    cen_wei_state_after_any: [sacrificed_permit, hostile_leak_source, explicit_absence]
    relief_any: [stronger_proof_preserved_now]
    cost_any: [witness_debt_up, legitimacy_debt_up, hostile_testimony_armed]
    future_effect_any: [recovery_only, leak_armed]
  leak_capture_or_hostile:
    emitted_event: storyteller.event.shadow_crew_custody_leak.v2
    cen_wei_state_after_any: [hostile_leak_source, captured_carrier, explicit_absence]
    cost_any: [false_owner_pressure_up, archive_debt_up, sponsor_retaliation_up, recovery_cost_up]
    future_effect_any: [hostile, blocked, captured, recovery_only]

Every constructive branch must have relief, cost, and future mutation.

7. Default event is durable

Shadow Crew Custody Leak must fire or arm when the transfer hides the carrier slot, the proof object moves without a named carrier or explicit absence, Cen Wei is suppressed without cost, a sponsor or archive captures the gap, or a future reader consumes chain state with no runner/person-state.

Required default record:

default_required:
  event: storyteller.event.shadow_crew_custody_leak.v2
  source_rite: storyteller.rite.shadow_evidence_transfer.v2 | equivalent
  proof_object: <stable object id>
  claimant_exploiting_gap: <claimant id>
  cen_wei_state_or_absence: <state or explicit_absence>
  missing_inputs: [proof_object | claimant_factions | carrier | permit_or_cover | handler | future_reader | equivalent]
  carrier_state_after: lawful_chain_witness | public_receipt_carrier | editor_masked_carrier | suppressed_carrier | hostile_leak_source | captured_carrier | sacrificed_permit | explicit_absence
  route_or_proof_state_after: protected | lawful_only | public_only | costlier | contradiction_pending | false_owner_pressure | recovery_only | blocked | equivalent
  counter_deltas_min: 3

The default fails if it changes only mood, generic reputation, a flavor leak, or a one-time evidence flag.

The event itself has exactly four terminal options:

OptionTerminal stateFuture effect
record_hostile_leakhostile_leak_sourcehostile
record_sponsor_capturecaptured_carrierrescue_required
record_public_correctionpublic_correction_witnesspublic_correction_required
record_recovery_onlyexplicit_absencerecovery_only

Each option must clear all three pending flags and mutate the proof state, harmed reader, future route, and four counters. A missing terminal choice or an unlisted fifth outcome fails.

No universal clean runner

No branch may make one temporary carrier satisfy every archive, sponsor, public, editor, route-asset, lawful, and broadcast-reality reader cleanly.

no_universal_clean_runner:
  proof_object_visible: true
  claimant_factions_min: 2
  cen_wei_state_visible_or_absence_recorded: true
  future_reader_visible: true
  at_least_one_reader_narrowed_or_costed: true

Replay proof contract

Durable replay evidence is limited to:

  • lens/replays/cen-wei-temporary-chain-runner.recruit.replay.json;
  • lens/replays/cen-wei-temporary-chain-runner.hostile-default.replay.json.

Both replay session ids must begin with lens-storyteller-lens-character-cen-wei-temporary-chain-runner-v1-.

lens_id: storyteller.lens.character.cen_wei_temporary_chain_runner.v1
session_id: lens-storyteller-lens-character-cen-wei-temporary-chain-runner-v1-<timestamp>
replay_paths:
  - lens/replays/cen-wei-temporary-chain-runner.recruit.replay.json
  - lens/replays/cen-wei-temporary-chain-runner.hostile-default.replay.json
entry_state:
  trigger_kind: state_pressure
  movable_or_uncertain_proof_present: true
  claimant_factions_count_min: 2
  cen_wei_state_or_explicit_absence_visible: true
  future_reader_or_route_consumes_chain_state: true
offered:
  npc: storyteller.npc.cen_wei_temporary_chain_runner.v2
  card: storyteller.card.inspection_shadow_crew_permit.v2
  rite: storyteller.rite.shadow_evidence_transfer.v2
resolved:
  selected_branch: <branch>
  cen_wei_state_after: <state>
  proof_object_state_after: <state>
  future_reader_effect: <effect>
default:
  event_seen_or_armed: storyteller.event.shadow_crew_custody_leak.v2 | none
assertions:
  - proof_object_claimants_carrier_cover_handler_and_future_reader_are_visible
  - cen_wei_state_or_explicit_absence_is_visible
  - branch_families_diverge_by_runner_state
  - default_custody_leak_is_durable
  - future_reader_consumes_cen_wei_state

Fails if

  • proof moves with no carrier or explicit absence;
  • high-rank authority replaces the carrier slot;
  • the permit state changes but Cen Wei’s state remains neutral or hidden;
  • hostile, captured, suppressed, sacrificed, or missed runner states have no future cost;
  • future readers consume the proof packet without consuming the runner state;
  • the line opens from fixed turn, day, phase, raw count, dashboard, or lens health.