← All stories

BRANCH · ef-081-product-pickup

Product Pickup

EF-081Persona: Pickup staffRoots in: efx-station-shellMatrix: Partial

Staff scan an attendee, confirm eligibility, decrement inventory once, and write an audit row per pickup for sponsor and buyer reporting. Voyage has scan endpoint substrate; native scan proof, inventory UI polish, and reporting remain gaps.

Happy path

  1. Staff opens pickup station.

    Station loads product inventory, eligibility rules, and current fulfilled count.

  2. Staff scans attendee.

    Server checks eligibility and returns eligible, already fulfilled, or denied with a neutral reason.

  3. Pickup is fulfilled.

    Inventory decrements once and an audit row records product, attendee, station, and staff actor.

Failure modes

Socket reconnect resilience

Reconnect restores inventory and current scan result.

Out-of-order scan messages

Stale scan results cannot overwrite a newer attendee card.

Concurrent pickup load

Inventory does not go negative under parallel scans.

Late join shows prior state

New station sees fulfilled count and remaining inventory.

Organizer pause/cancel

Paused pickup blocks fulfillment and leaves audit intact.

Results visible only after close

Final sponsor/buyer report is gated until close.

Idempotent pickup scan

Same attendee does not double-fulfill.

Cross-station isolation

Product A inventory does not affect product B station.

Eligibility denied

Denied attendee does not decrement inventory.

Audit row per pickup

Every successful fulfillment writes one audit row.

Stable test attributes

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

data-testWherePurpose
product-pickup-stationstation shellpickup station
product-pickup-socket-statusstation shellsocket state
product-pickup-scan-ctascan surfacescan attendee
product-pickup-eligibility-cardscan surfaceeligibility result
product-pickup-fulfill-ctascan surfacefulfill pickup
product-pickup-inventory-tableorganizer surfaceinventory table
product-pickup-report-ctaorganizer surfacepickup report
product-pickup-gap-panelgap panelnative/reporting gap

Agent test plan

- product-pickup-opens
- product-pickup-fulfills
- socket-reconnect
- out-of-order-scan
- load-stable
- late-join
- organizer-pause
- report-after-close
- idempotent-pickup
- cross-station-isolation
- eligibility-denied
- audit-row