Audience-Jury Seat Map Annotation Afteruse Receipt Lens

This lens checks that Jao Min’s audience-jury seat-map annotation remains physical house-flow evidence when a sponsor recap or editor tries to consume it as group broadcast consent.

Source-chain oracle

A passing implementation must preserve this route:

source_chain:
  source_event: storyteller-event-12-license-recall
  source_option: seat_audience_jury
  pending_flag: seat_map_annotation.afteruse_pending
  character_disposition: st_scale_06_jury_nonattendance_usher.disposition_recorded
  public_trial: complete_storyteller-rite-10-public-trial
  entry_event: storyteller.event.seat_map_annotation_afteruse_claim.v1
  review_rite: storyteller.rite.seat_map_annotation_afteruse_review.v1
  false_default_event: storyteller.event.false_seat_map_annotation_default.v1

The company-trial branch must not open the claim. The entry event must also fail if Jao Min, the real jury-room floorplan, her jury-nonattendance docket, or the Chapter Two reader is absent.

Entry oracle

entry_state:
  trigger_kind: state_pressure
  audience_jury_selected: true
  public_trial_complete: true
  jury_nonattendance_disposition_recorded: true
  afteruse_pending: true
  real_floorplan_in_hand: true
  jao_min_card_in_hand: true
  jury_nonattendance_docket_in_hand: true
  chapter_two_reader_in_hand: true
  no_fixed_turn_trigger: true
  no_fixed_day_or_week_trigger: true
  no_raw_seat_count_trigger: true
  no_dashboard_or_lens_health_trigger: true

The entry event has seven posture windows. Each option grants five shared context cards plus one matching posture card and opens the review. The packet catalog contains twelve new cards in total; none may carry the starter tag.

Docket oracle

Seat Map Annotation Docket must preserve:

docket_required:
  source_seat_map_row: card-storyteller-st-scale-06-jury-room-floorplan
  annotated_seat_block: required
  original_house_context: audience-jury public trial
  usher_or_absence: card-storyteller-st-scale-06-custody-usher-badge
  displaced_patron_or_absence: protected role row
  requested_afteruse: group broadcast consent inference
  current_sponsor_or_editor_reader: required
  harmed_patron_or_absence: protected role row
  proof_bridge_or_explicit_absence: storyteller.card.st_scale_06_jury_nonattendance_docket.v1
  selected_seat_map_posture: required
  seat_map_afteruse_state_after: required
  future_reader_or_route_effect: required
  counter_deltas: required
  universal_clean_seat_consent: false

No newly invented named patron is required or permitted by the oracle.

Rite enforcement oracle

The review must expose ten exact slots and enable all four runtime guards:

  • enforceExactSlotAccepts
  • requiresAssignedCardsInHand
  • requiresSelectedOption
  • enforceSelectedOptionRequirements

Each option must require the matching branch-posture card. The runtime must reject:

  • missing source-state flags;
  • any accepted card absent from the player’s hand;
  • an arbitrary same-type card;
  • a missing option;
  • a valid posture card paired with the wrong option.

Branch and result oracle

CodeBranchExclusive flagFuture effect
1certify_seat_map_scopeseat_map_annotation.result.certified_scopeseat_map_scope_required
2restrict_annotation_readerseat_map_annotation.result.restricted_readernamed_reader_only
3attach_usher_bridgeseat_map_annotation.result.usher_bridgeusher_bridge_required
4split_house_flow_from_broadcast_consentseat_map_annotation.result.consent_splitconsent_reader_split
5publish_displaced_patron_noticeseat_map_annotation.result.patron_noticepatron_notice_required
6quarantine_seat_map_afteruseseat_map_annotation.result.quarantinedquarantined
7false_seat_map_defaultseat_map_annotation.result.false_seat_map_defaultrecovery_only

Every branch defines at least three counter deltas, an exact posture tuple, and universalCleanSeatConsent: false. A successful resolution must expose exactly one result flag and the matching code.

Default oracle

The false event must use trigger: { condition: true }, guard on the armed result-7 state, and provide one resolvable option.

false_seat_map_annotation_default:
  false_clean_seat_consent: true
  source_seat_map_row_or_absence: card-storyteller-st-scale-06-jury-room-floorplan
  hidden_or_overbroad_seat_scope: physical movement treated as group broadcast consent
  capturing_reader_or_route: sponsor recap and editor
  displaced_patron_or_absence: protected caption-access juror row
  seat_map_afteruse_state_after: false_clean_default
  future_reader_effect: recovery_only
  counter_deltas_min: 3
  durable_mutation: true

Replay oracle

Two gameplay-CLI replays are required:

  • lens/replays/seat-map-annotation-afteruse-receipt.certify-scope.replay.json reaches the audience-jury/Jao Min/public-trial chain, resolves the entry event, assigns all ten real cards, selects choice 0, and records result code 1.
  • lens/replays/seat-map-annotation-afteruse-receipt.false-default.replay.json reaches the same chain, selects choice 6 with the matching posture card, triggers the false-default event, resolves its option, and records durable recovery_only state.

Both must be deterministic, source: storyteller, lens-scoped, free of virtual slots, and independently replay-verifiable. Raw session directories are generation artifacts and must remain uncommitted.

Progress metric

  • 20%: existing wiki packet and source-chain links are bound.
  • 40%: audience-jury selection and Jao Min/public-trial state open the real entry event.
  • 60%: docket and ten exact slots preserve the patron, reader, proof, and future state.
  • 80%: seven option-specific tuples produce exclusive result codes.
  • 100%: certify and false-default replays plus negative runtime tests verify the implementation.

Non-goals

  • Not wiki-contract-only evidence.
  • Not a starter-hand rite.
  • Not another Jao Min recruitment route.
  • Not a raw seat-count or generic sightline lane.
  • Never grants universal audience consent, jury authority, archive custody, or platform authority.