← All stories

BRANCH · ef-091-specialized-ticketing-reports

Specialized ticketing reports

EF-091Persona: OrganizerStage: CloseoutRoots in: admin-shell-access

Organizer exports specialized ticketing sub-reports for transfers, waitlist promotions, purchase reconciliation, and ticket-block allocations through the shared async report job lifecycle. Tier-3 tightening: specialized ticketing report administration now references ui-async-job-admin-page for the job lifecycle foundation.

Happy path

  1. Open Specialized Ticketing Reports.

    Tabs split transfer, waitlist, purchase, and ticket-block reports under one umbrella.

  2. Select a sub-report and generate.

    The async job tracker owns lifecycle states and artifact recovery.

  3. Download the selected ticketing export.

    Rows preserve sub-report-specific state, allocation, and reconciliation fields.

Failure modes

Transfer states collapsed

Trigger: pending, accepted, declined, revoked, and expired transfers are merged.

Resolution: transfer report keeps each state visible and filterable.

Waitlist promotion trail missing

Trigger: promoted guest has no source waitlist timestamp or promotion action.

Resolution: waitlist export includes queued, promoted, accepted, and skipped rows.

Purchase reconciliation incomplete

Trigger: purchase report omits fees, refunds, or settlement state.

Resolution: reconciliation summary flags missing finance fields before export.

Ticket-block allocations overcounted

Trigger: sponsor allocation report counts revoked or transferred tickets as available.

Resolution: allocation totals reconcile assigned, used, transferred, revoked, and remaining.

Deployed-runtime gap

Trigger: deployed run on 2026-04-29 observed transfer report job create returned 400 D1 bootstrap error; the probe locks this in until the gap is closed.

Resolution: status 400 remains expected until deployed D1 bootstrap is fixed.

Stable test attributes

Visibility teeth. Each attribute must be effectively visible when active.

specialized-ticketing-reports-pagePageSpecialized ticketing reports surface
specialized-ticketing-tabsFormTransfer/waitlist/purchase/ticket-block tabs
specialized-ticketing-transfer-tablePreviewTransfer state rows
specialized-ticketing-waitlist-tablePreviewWaitlist promotion rows
specialized-ticketing-purchase-summaryPreviewPurchase reconciliation summary
specialized-ticketing-block-allocationPreviewTicket-block allocation counts
specialized-ticketing-generate-ctaToolbarCreate report job
specialized-ticketing-job-trackerPageAsync report lifecycle
specialized-ticketing-download-ctaJob rowDownload artifact
specialized-ticketing-regenerate-ctaJob rowRegenerate expired/swept artifact
specialized-ticketing-error-panelJob rowFailure reason and request id
specialized-ticketing-stuck-bannerJob rowQueued too long warning
specialized-ticketing-permission-gateCatalogPermission-filtered report entry
specialized-ticketing-gap-panelPageRuntime gap notice

Agent test plan

- specialized-ticketing-renders
- generate-transfer-report
- ticketing-subreports-reconcile
- deployed-runtime-gap