hasTicketQuantity(row: { quantity: number; }): boolean
True when an attendee/booking row is a real ticket (quantity ≥ 1) rather than
the no-quantity sentinel (quantity 0). The shared "is this a real ticket, not a
ghost" test for the readers, rosters, and exports that must skip sentinel rows —
one home for the rule instead of a bare quantity > 0 plus an explanatory
comment at each call site.