Happy path
Staff opens pickup station.
Station loads product inventory, eligibility rules, and current fulfilled count.
Staff scans attendee.
Server checks eligibility and returns eligible, already fulfilled, or denied with a neutral reason.
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-test | Where | Purpose |
|---|---|---|
product-pickup-station | station shell | pickup station |
product-pickup-socket-status | station shell | socket state |
product-pickup-scan-cta | scan surface | scan attendee |
product-pickup-eligibility-card | scan surface | eligibility result |
product-pickup-fulfill-cta | scan surface | fulfill pickup |
product-pickup-inventory-table | organizer surface | inventory table |
product-pickup-report-cta | organizer surface | pickup report |
product-pickup-gap-panel | gap panel | native/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