Ticket — /t/{code}
Who opens it: an attendee at a gate, or twenty minutes before they leave home.
What they came to do: be admitted. Nothing else.
True when they leave: a scanner read their code, or a person read it aloud and typed it.
Decisions already made
- The code and both images (QR and Code128) are pre-generated and served from a private disk behind a signed URL; a missing image is a 404, never a render on request (L07). A gate with bad signal cannot wait for an image to be made.
- The QR carries
EW1:{code}:{sig8}so a scanner can reject a forged or foreign code offline (CHECKIN §2). - A replaced ticket still opens and names what replaced it, rather than 404ing on somebody standing at a gate.
- A shared companion ticket names everybody it admits, because the IV Day failure was chaperones scanned as one person.
- Print CSS puts one ticket per sheet with the codes black on white: the paper fallback is the same artefact.
Open questions
- Wallet tickets (week 10) will make this page the second-best way to hold a ticket. Does it become a fallback?
- The page does not say "you are checked in" after a scan — should it, or is that a scanner's job to show the gate?
- Nothing on it works offline. A PWA cache for the ticket itself is not planned; the printed sheet is the answer today.