Concession Token Afteruse Receipt Lens
This lens checks that a concession token can prove one risky voucher row was open, but cannot later be spent as blanket tab waiver, sponsor guest-list permission, archive blocking authority, audience snack access certification, or broadcast reenactment proof unless the game preserves which concession lead saw it, what voucher row it marked, who later tries to reuse it, the harmed claimant, the proof bridge, selected posture, after-state, future route effect, and counter movement.
Entry Oracle
entry_state:
trigger_kind: state_pressure
source_token_row_visible: true
voucher_clerk_visible_or_explicit_absence: true
claim_code_context_visible: true
cited_seat_block_visible: true
requested_afteruse_visible: true
future_reader_consumes_token_state: true
displaced_patron_visible_or_explicit_absence: true
proof_bridge_or_explicit_absence_visible: true
player_can_certify_restrict_attach_reopen_split_quarantine_or_default: true
no_fixed_turn_trigger: true
no_fixed_day_or_week_trigger: true
no_raw_marker_count_trigger: true
no_dashboard_or_lens_health_trigger: trueThe lens fails if entry is driven by fixed time, raw marker counts, dashboard health, or an anonymous concession token with no named future route trying to consume it.
Checks
1. Docket Preserves Concession Token Custody And Afteruse
concession_token_docket:
source_token_row: required
voucher_clerk_or_absence: required
claim_code_context: required
cited_seat_block: required
requested_afteruse: required
future_reader_or_route: required
displaced_patron_or_absence: required
proof_bridge_or_explicit_absence: required
selected_token_posture: required
token_afteruse_state_after: required
future_reader_or_route_effect: required
counter_deltas: required2. Review Branches Diverge
Required branch families:
certify_token_scope;restrict_token_reader;attach_voucher_bridge;reopen_displaced_patron_claim;split_ticket_from_sponsor_comp;quarantine_token_afteruse;false_token_default;future_effect_any.
3. Default Mutates Future Play
false_token_default:
false_clean_token: true
source_token_row_or_absence: required
hidden_or_overbroad_claim_code_context: required
cited_seat_block: required
capturing_reader_or_route: required
displaced_patron_or_absence: required
token_afteruse_state_after: required
future_reader_effect: recovery_only
counter_deltas_min: 3
durable_mutation: trueProgress Metric
Satisfied when the sibling TypeScript binding, focused card/rite/event content, and a lens-scoped durable replay show one selected branch changing named counters and future route state without treating the concession token as universal tab waiver, sponsor permission, snack access certification, archive custody, route-asset consent, or broadcast reenactment proof.
Replay Evidence
latest_replay:
session_id: lens-storyteller-lens-concession-token-afteruse-receipt-v1-20260716t0802z-certify-scope
seed: concession-token-afteruse-20260716
replay_path: lens/replays/concession-token-afteruse-receipt.certify-scope.replay.json
selected_rite: storyteller.rite.concession_token_afteruse_review.v1
selected_branch: certify_token_scope
required_flags:
- concession_token.branch.certify_token_scope
- future_route.token_named_scope_required
required_counter_mutations:
concessionTokenProgress: ">= 2"
futureRouteCost: ">= 1"