Voyage · EventFarm Parity Stories

User journeys, end-to-end.

Each story describes one feature of Voyage as a real organizer, attendee, or event-day staff member would experience it — including what success looks like, what failure looks like, and how the page itself supports or fails the user. Trunk stories establish the surfaces; branch stories root in trunks and exercise specific capabilities. Every story is human-audit-ready and machine-consumable by the agent harness that turns it into a Playwright fuzzing run.

Trunk stories

Surfaces of the application. Branches inherit auth + navigation from these.

TRUNK · admin-shell-access
Admin Shell access & navigation
An organizer logs in, lands in the workspace shell, and finds the part of Voyage they came for. Failure modes here are surface-level: authentication, permission, server availability, navigation discoverability.
Organizer Foundation
TRUNK · event-setup
Event Setup hub
Where the organizer configures one event end-to-end: access types, designs, audience, schedule, branding, public page. ~30 branches root here. Roots in admin-shell-access.
Organizer Setup
TRUNK · day-of-operations (planned)
Day-of Operations
Kiosk + check-in console + live attendee handling. The shift in mindset: less editing, more reactive — guests are at the door.
Event-day staff Day-of
TRUNK · public-event-page (planned)
Public Event Page
The booking-pages app surface. Public guests, no auth shell — landing on the page, registering, succeeding, or being rejected if the event is invite-only and they aren't on the list.
Public guest Public

Component stories

Design-system primitives. Tested once with all interaction edge cases. Branches that use a component inherit its contract via usesComponents and don't re-test the fiddly UX bits.

COMPONENT · ui-modal
Modal dialog
Focus trap, esc-closes, backdrop, scroll lock, layered z-index, mobile sheet behavior. The richest interaction primitive in the admin.
Component Inherited by ~50 branches
COMPONENT · ui-text-input
Text input
Validation rendering, autofill detection (no-validation-on-autofill), paste truncation, character counter, focus-ring-visible contract, label always above the field.
Component
COMPONENT · ui-checkbox (planned)
Checkbox
Keyboard activation, label-click, indeterminate state, focus ring contrast.
Component
COMPONENT · ui-autocomplete
Autocomplete select
Debounce-and-clamp, race-stale-response discard, cursor stability by id not index, no-auto-highlight, three-state Esc, no-results-not-alert. 8 failure modes — the most failure-prone tier-1 primitive.
Component
COMPONENT · ui-form
Form
Submit lifecycle, idempotency-key wiring, busy-state lockout, error rendering (inline + summary), focus-first-error, Enter-vs-Cmd-Enter keyboard semantics.
Component
COMPONENT · ui-toast (planned)
Toast
Auto-dismiss timing, manual dismiss, action buttons, screen-reader announcement, queue when multiple fire at once.
Component

Branch stories — pilot

One per representative EF capability. Each roots in a trunk and focuses on the specific feature's success + failure surface. Component-tier mechanics (modal focus trap, autocomplete debounce, etc.) inherit from the component stories above.

EF-008
Create or copy event
Organizer creates a fresh event or clones a past one. The seemingly-simple one — but the failure modes around copy-from-deleted-source and cross-tenant access have real teeth.
Organizer Planning
EF-018 (planned)
Invite to RSVP
Private free invitation. The reject-when-not-on-the-list moment is the leaf branch we're most interested in writing carefully.
Organizer Setup
EF-031 (planned)
Registration button modal
The public guest's first interaction. Form-validation failures, browser-back behavior, autofill quirks.
Public guest Public
EF-066 (planned)
QR reader check-in
Scanner stops working, network drops mid-rush, two staff scan the same guest simultaneously. The day-of failure modes that matter.
Event-day staff Day-of
EF-086 (planned)
Generated reports
Async-job UX: the report is queued, then ready, then expired. Where does the organizer find it? What if it failed mid-run?
Organizer Closeout

Coming next

After these 5 pilot branches + 4 trunks land and you audit the depth, the remaining 95 EF capabilities get codex-bulk-generated against this template, with a manual review pass per batch to deepen failure modes that go shallow. EF-060 (SPF/DKIM masking), EF-024 (promo codes), the EFx live-event modules, native check-in app surface, integrations — each becomes a branch story, each rooted in the appropriate trunk.