← All stories

BRANCH · ef-083-raffle

Raffle

EF-083Persona: Organizer + attendeeRoots in: efx-station-shellMatrix: Partial

Checked-in attendees enter a raffle once, the server performs a deterministic seeded draw across prize tiers, and winners are notified with SMS where EF-071 exists. The current gap is winner SMS and the full attendee flow.

Happy path

  1. Attendee enters raffle.

    Entry is accepted only for checked-in attendees and keyed by attendee plus raffle.

  2. Organizer closes entries.

    The live station hides winner results until the close command is committed.

  3. Organizer draws winners.

    A server-side seed produces deterministic prize-tier winners and runner-up order.

Failure modes

Socket reconnect resilience

Reconnect restores entry count and draw state.

Out-of-order messages

Late entry deltas cannot appear after closed draw.

Concurrent entry load

Thousands of checked-in attendees can enter without dropped acks.

Late join shows prior state

Visualizer joins and sees current entry count and draw state.

Organizer pause/cancel

Pause blocks new entries; cancel does not leak winners.

Results visible only after close

Winner display is gated until close.

Idempotent raffle entry

One attendee produces one entry.

Cross-station isolation

Raffle A entries cannot enter Raffle B draw.

Deterministic draw

Same seed and entry set produce same winners.

Runner-up if unreachable

Unreachable winner advances the next runner-up once.

SMS gap

Winner SMS dependency on EF-071 is visible.

Stable test attributes

Visibility teeth. Each attribute must be effectively visible when active and must match the agent probes.

data-testWherePurpose
raffle-stationstation shellraffle station
raffle-socket-statusstation shellsocket state
raffle-entry-ctaattendee surfaceenter raffle
raffle-entry-countstation shellentry count
raffle-close-ctaorganizer surfaceclose entries
raffle-draw-ctaorganizer surfacedraw winners
raffle-winner-panelvisualizerwinner display
raffle-sms-gap-panelgap panelSMS winner gap

Agent test plan

- raffle-opens
- raffle-enters
- socket-reconnect
- out-of-order-entry
- load-stable
- late-join
- organizer-pause
- winners-after-close
- idempotent-entry
- cross-station-isolation
- deterministic-draw
- runner-up
- sms-gap