Replay Export Custody Lens / 复盘导出羁押 Lens

This lens observes whether 复盘导出羁押线 and 复盘导出羁押机制 correctly turn an exportable replay into a contested route asset instead of a clean proof object.

A passing implementation proves source branch, relief, scar, export request, competing claimants, playback custodian, proof anchor, consent scope, counter-branch, future reader, branch choice, capsule state after, and durable default. It fails if replay export is only a save file, recap viewer, PR package, clean archive copy, or debug provenance with no in-world custodian.

This lens is state-triggered. It must not depend on a fixed numbered turn.

This lens observes:

It is observed through:

Gap this lens targets

The current surface is strong at making outcomes branchy and unclean. It also has lenses for public recap, stability package authorship, evidence carryover, omitted-frame counterclaims, and management compression.

The uncovered regression risk is narrower: after a branch result exists, a replay export can be treated as a neutral record. Sponsors, editors, inspectors, fan publics, archive desks, and management can all quote the same branch as if the replay itself had no custody, no scar, and no future reader.

This lens closes that gap by requiring the replay capsule to become a route asset with ownership, scope, counter-branch visibility, and future route consequences.

Must pass

1. Entry is state-triggered by an exportable scarred branch

entry_state_required:
  trigger_kind: state_pressure
  source_branch_result_present: true
  source_branch_has_relief_or_route_access: true
  source_branch_has_scar_or_omitted_cost: true
  export_request_present: true
  requesting_claimant_visible: true
  claimant_count_min: 2
  future_reader_present: true
  player_can_scope_seal_trade_expose_quarantine_refuse_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_export_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The lens fails if entry depends on fixed turn number, day/week interval, chapter quota, raw replay count, generic recap phase, dashboard state, lens health, or a clean archive cycle.

2. Source branch relief and scar are visible

A valid replay must name both the usable relief and the cost that would be hidden by clean export.

source_branch_required:
  source_surface: stability_package | public_recap | evidence_carryover | management_compression | route_asset_custody | fan_oxygen | editor_checksum | inspector_hold | sponsor_bridge | archive_signature | equivalent
  source_branch_id: <branch_or_resolution_id>
  source_relief: <relief_counter_state_or_route_access>
  source_scar: <scar_counter_state_omitted_cost_or_explicit_absence>
  source_proof_anchor_or_absence: <proof_or_explicit_absence>

The lens fails if the source is only “previous branch,” “replay exists,” or “proof was exported.”

3. Capsule records locks separately

复盘导出匣 or equivalent must separate source, export, claimant, assignment, future reader, and default locks.

capsule_required:
  source_lock:
    source_surface: <surface>
    source_branch_id: <id>
    source_relief: <relief>
    source_scar: <scar>
  export_lock:
    requesting_claimant: sponsor | editor | inspector | fan_public | archive | management | producer | route_asset_claimant | equivalent
    requested_use: sponsor_defense | editor_checksum | lawful_annex | public_receipt | management_case | route_asset_proof | correction_anchor | evidence_carryover | equivalent
    requested_scope: public | lawful | sponsor | archive | editor | management | route_only | named_reader_only | split_required | equivalent
    beneficiary_if_clean: <beneficiary_or_explicit_absence>
  claimant_lock:
    claimant_rows_min: 2
    rows_include_required_input_omitted_branch_and_future_effect: true
  assignment_lock:
    playback_custodian_or_absence: <value>
    proof_anchor_or_absence: <value>
    consent_scope_or_absence: <value>
    counter_branch_or_absence: <value>
    bridge_or_cost: <value>
  reader_lock:
    future_reader: <reader>
    accepted_capsule_states: []
    rejected_or_costlier_capsule_states: []
  default_lock:
    default_author: <claimant>
    default_event: storyteller.event.replay_capsule_misattribution_default.v1

The lens fails if these collapse into export approved, clip generated, proof available, or replay saved.

4. Rite assignment slots are explicit

复盘导出验讫 or equivalent must require concrete assignment:

assignment_required:
  capsule: storyteller.card.replay_export_capsule.v1
  source_surface: <id>
  source_branch_id: <id>
  source_scar: <scar_or_explicit_absence>
  requested_use: <use>
  selected_posture: scope_replay | seal_replay | trade_replay | expose_replay | quarantine_replay | refuse_export | clean_clip_default
  playback_custodian_or_absence: <handler_clerk_route_asset_or_explicit_absence>
  proof_anchor_or_absence: <proof_or_explicit_absence>
  consent_scope_or_absence: <scope_or_explicit_absence>
  counter_branch_or_absence: <branch_or_explicit_absence>
  bridge_or_cost: <bridge_or_cost>
  future_reader: <reader>

The lens fails if sponsor money, editor checksum, inspector seal, archive authority, public heat, or management priority resolves export without these slots.

5. Branch families diverge

A satisfying implementation must expose six constructive branch families plus a default, or explicitly block unavailable families with state reasons:

  • scope_replay;
  • seal_replay;
  • trade_replay;
  • expose_replay;
  • quarantine_replay;
  • refuse_export;
  • clean_clip_default.

Branches must differ by capsule state after, claimant posture, source-scar visibility, counter deltas, and future reader effect.

6. Branch assertions

Scope replay assertion

selected_posture: scope_replay
capsule_state_after: scoped
relief_any: [route_asset_integrity_up, replay_capsule_legibility_up, future_reader_acceptance_up]
cost_any: [handler_burden_up, future_clearance_cost_up, sponsor_stop_loss_pressure_up]
future_effect_any: [accepted_with_scope, forbidden_scope_named, costlier]

Seal replay assertion

selected_posture: seal_replay
capsule_state_after_any: [sealed, lawful_only]
relief_any: [admissibility_up, witness_exposure_down, false_public_claim_blocked]
cost_any: [archive_debt_up, public_receipt_distrust_up, inspection_heat_up]
future_effect_any: [lawful_only, public_addendum_required, archive_gate_required]

Trade replay assertion

selected_posture: trade_replay
capsule_state_after_any: [traded, captured, sponsor_only]
relief_any: [immediate_pressure_down, schedule_pressure_down, sponsor_stop_loss_pressure_down]
cost_any: [contract_capture_up, route_asset_integrity_down, source_ambiguity_up]
future_effect_any: [sponsor_gate_required, faction_gate_required, route_costlier]

Expose replay assertion

selected_posture: expose_replay
capsule_state_after_any: [exposed, public_only]
relief_any: [public_receipt_legitimacy_up, private_capture_blocked, false_clean_replay_down]
cost_any: [witness_exposure_up, consent_debt_up, sponsor_stop_loss_pressure_up]
future_effect_any: [public_only, lawful_route_costlier, protection_required]

Quarantine replay assertion

selected_posture: quarantine_replay
capsule_state_after_any: [quarantined, recovery_only]
relief_any: [misattribution_risk_down, false_clean_replay_down, source_scar_visibility_up]
cost_any: [schedule_pressure_up, audience_churn_up, future_clearance_cost_up]
future_effect_any: [proof_required, recovery_only_if_ignored, blocked_until_attested]

Refuse export assertion

selected_posture: refuse_export
capsule_state_after_any: [blocked, held_private]
relief_any: [consent_violation_risk_down, witness_exposure_down]
cost_any: [requesting_claimant_pressure_up, route_delay_up, public_receipt_distrust_up]
future_effect_any: [alternate_proof_required, future_reader_unserved]

Clean clip default assertion

selected_posture: clean_clip_default
event_seen_or_armed: storyteller.event.replay_capsule_misattribution_default.v1
capsule_state_after_any: [misattributed, captured, false_clean, recovery_only]
relief_any: [immediate_pressure_down, assignment_burden_down, sponsor_or_management_story_stabilized]
cost_any: [false_clean_replay_up, source_scar_visibility_down, excluded_reader_hostility_up, future_recovery_cost_up]
future_effect_any: [blocked, costlier, lawful_appeal_required, public_addendum_required, sponsor_gate_required, edit_checksum_required, recovery_only]

7. Every constructive branch has relief, cost, and future effect

Every non-default branch must mutate at least:

counter_contract:
  relief_min: 1
  cost_min: 1
  future_reader_or_route_effect_min: 1
  capsule_state_changes: true

A replay export that only improves evidence quality, public mood, sponsor confidence, or continuity fails.

8. Misattribution default is durable

复盘匣误归属默认 must fire or be armed when the capsule is hidden, underfilled, clean-clipped, lacks custodian, lacks proof, lacks consent scope, hides counter-branch, or lets another claimant file first.

default_required:
  event: storyteller.event.replay_capsule_misattribution_default.v1
  default_author: sponsor | editor | inspector | fan_public | archive | management | producer | route_asset_claimant | blackout_system | equivalent
  false_claim: clean_replay | sponsor_safe_replay | lawful_only_replay | public_truth_replay | editor_checksum_replay | management_case_replay | route_proof_replay | equivalent
  missing_inputs:
    playback_custodian: present | absent
    proof_anchor: present | absent
    consent_scope: present | absent
    counter_branch: present | absent
    future_reader: present | absent
    export_scope: present | absent
  capsule_state_after: misattributed | captured | false_clean | lawful_only | sponsor_only | public_only | editor_smoothed | recovery_only | blocked | equivalent
  future_route_effect: blocked | costlier | lawful_appeal_required | public_addendum_required | sponsor_gate_required | edit_checksum_required | split_required | recovery_only | equivalent
  counter_deltas: {}

The default fails if it changes only prose, immediate mood, or generic reputation.

9. Future reader consumes capsule state

Passing evidence must show at least one downstream route, rite, public statement, lawful use, sponsor gate, editor checksum, fan receipt table, management metric, or route-asset custody branch consuming the resulting capsule state.

Valid effects include:

  • accepted_with_scope;
  • forbidden_scope_named;
  • lawful_only;
  • public_only;
  • sponsor_gate_required;
  • edit_checksum_required;
  • public_addendum_required;
  • lawful_appeal_required;
  • blocked_until_attested;
  • recovery_only;
  • route_costlier.

The lens fails if capsule resolution ends at immediate pressure.

Failure cases

The lens must fail if any of these are true:

  • entry is triggered by a fixed numbered turn;
  • source branch relief or scar is absent;
  • export request has no claimant or only one claimant;
  • future reader is absent;
  • capsule stores only replay provenance with no in-world custodian;
  • consent scope, proof anchor, counter-branch, or explicit absence is hidden;
  • branches collapse into the same clean proof state;
  • a clean clip can be universally accepted;
  • sponsor, editor, inspector, archive, fan public, or management authority erases source scar;
  • default changes only narration;
  • future play does not consume capsule state.

Progress metric

replayExportCustodyProgress = 0..10:

  • 0: replay export has no custody.
  • 1: source branch result with relief and scar exists.
  • 2: export request and at least two claimants are visible.
  • 3: future reader is named.
  • 4: 复盘导出匣 enters play with source, export, claimant, assignment, reader, and default locks.
  • 5: 复盘导出验讫 offers custodian, proof anchor, consent scope, counter-branch, bridge/cost, and future reader slots.
  • 6: at least four constructive branch families are reachable or explicitly blocked by state.
  • 7: one constructive branch mutates relief, cost, capsule state, and future reader effect.
  • 8: clean clip default fires or is armed with default author, missing inputs, capsule state, and future effect.
  • 9: downstream reader consumes scoped, sealed, traded, exposed, quarantined, refused, or false-clean capsule state.
  • 10: replay evidence proves one constructive branch and one default/miss branch with seed, session id, assignments, capsule state before/after, counter deltas, and future route effect.

Minimal replay evidence shape

lens_id: storyteller.lens.replay_export_custody.v1
result: pass | fail
session_id: replay-export-custody-v1-<timestamp>
seed: <deterministic_seed>
entry_state:
  trigger_kind: state_pressure
  source_branch_result_present: true
  source_branch_has_relief_or_route_access: true
  source_branch_has_scar_or_omitted_cost: true
  export_request_present: true
  requesting_claimant_visible: true
  claimant_count_min: 2
  future_reader_present: true
offered:
  card: storyteller.card.replay_export_capsule.v1
  rite: storyteller.rite.replay_export_attestation.v1
capsule:
  source_surface: <id>
  source_branch_id: <id>
  source_relief: <relief>
  source_scar: <scar>
  requesting_claimant: <claimant>
  requested_use: <use>
  requested_scope: <scope>
  claimant_rows_min: 2
  default_author: <author>
  future_reader: <reader>
attestation:
  selected_posture: scope_replay | seal_replay | trade_replay | expose_replay | quarantine_replay | refuse_export | clean_clip_default
  assigned_inputs:
    playback_custodian_or_absence: <value>
    proof_anchor_or_absence: <value>
    consent_scope_or_absence: <value>
    counter_branch_or_absence: <value>
    bridge_or_cost: <value>
  outcome:
    capsule_state_after: <state>
    source_scar_visibility: <state_or_delta>
    future_route_effect: <effect>
  counter_deltas:
    relief: []
    cost: []
default:
  emitted_or_armed_event: storyteller.event.replay_capsule_misattribution_default.v1 | none
  default_author: <author_or_none>
  missing_inputs: {}
assertions:
  entry_is_state_triggered_by_exportable_scarred_branch: true
  capsule_locks_are_separate: true
  assignment_slots_are_explicit: true
  branch_families_diverge: true
  every_constructive_branch_has_relief_cost_future_effect: true
  clean_clip_default_is_durable: true
  future_reader_consumes_capsule_state: true
  no_universal_clean_replay_export: true
  no_fixed_turn_trigger: true

Non-goals

  • Not a save/load feature.
  • Not a replay log viewer.
  • Not a public recap wording lens.
  • Not a stability-package arbitration duplicate.
  • Not dashboard or process governance.
  • Not a fixed turn-count trigger.
  • Not valid unless the replay capsule becomes playable custody that changes future route availability, cost, or state.