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.v1The 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: trueThe 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: falseNo 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:
enforceExactSlotAcceptsrequiresAssignedCardsInHandrequiresSelectedOptionenforceSelectedOptionRequirements
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
| Code | Branch | Exclusive flag | Future effect |
|---|---|---|---|
| 1 | certify_seat_map_scope | seat_map_annotation.result.certified_scope | seat_map_scope_required |
| 2 | restrict_annotation_reader | seat_map_annotation.result.restricted_reader | named_reader_only |
| 3 | attach_usher_bridge | seat_map_annotation.result.usher_bridge | usher_bridge_required |
| 4 | split_house_flow_from_broadcast_consent | seat_map_annotation.result.consent_split | consent_reader_split |
| 5 | publish_displaced_patron_notice | seat_map_annotation.result.patron_notice | patron_notice_required |
| 6 | quarantine_seat_map_afteruse | seat_map_annotation.result.quarantined | quarantined |
| 7 | false_seat_map_default | seat_map_annotation.result.false_seat_map_default | recovery_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: trueReplay oracle
Two gameplay-CLI replays are required:
lens/replays/seat-map-annotation-afteruse-receipt.certify-scope.replay.jsonreaches 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.jsonreaches the same chain, selects choice 6 with the matching posture card, triggers the false-default event, resolves its option, and records durablerecovery_onlystate.
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.