Prop Room Key Ring Afteruse Receipt Lens

This lens checks that a returned prop-room key ring cannot later be consumed as universal blanket access, custody, sponsor immunity, route clearance, or memorial witness authority unless the game preserves the source key ring, lock map or explicit absence, sign-out sheet, missing-key tag, requested afteruse, future reader, selected posture, after-state, and future route effect.

Entry Oracle

entry_state:
  trigger_kind: state_pressure
  source_key_ring_visible: true
  lock_map_or_explicit_absence_visible: true
  signout_sheet_visible: true
  missing_key_tag_visible: true
  requested_afteruse_visible: true
  future_reader_consumes_key_state: true
  player_can_certify_bind_reopen_split_quarantine_or_default: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_key_ring_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

Checks

1. Docket Preserves Access Provenance

prop_room_key_ring_docket:
  source_key_ring: required
  lock_map_or_absence: required
  signout_sheet: required
  missing_key_tag: required
  requested_afteruse: required
  future_reader_or_route: required
  selected_key_posture: required
  key_afteruse_state_after: required
  future_reader_or_route_effect: required
  counter_deltas: required
  universal_access: false

2. Review Branches Diverge

Required branch families:

  • certify_lock_scope;
  • bind_signout_consent;
  • reopen_missing_key_trace;
  • split_access_from_custody_clearance;
  • quarantine_key_ring_afteruse;
  • false_master_key_default;
  • future_effect_any.

Each branch must name relief, cost, counters, and future route effects.

3. Default Mutates Future Play

false_prop_room_key_ring_default:
  false_master_key: true
  source_key_ring_or_absence: required
  hidden_or_overbroad_access_scope: required
  capturing_reader_or_route: required
  missing_key_tag_or_absence: required
  key_afteruse_state_after: false_master_key_default
  future_reader_effect: recovery_only
  counter_deltas_min: 3
  durable_mutation: true

Progress Metric

Satisfied when the sibling TypeScript binding, focused card/rite/event content, runtime Jest assertions, and a lens-scoped durable replay show one selected branch changing named counters and future route state without treating the prop-room key ring as universal blanket access, custody, sponsor immunity, route clearance, or memorial witness authority.