Before race day
Participants sign the liability waiver online. The system records not just who signed but the exact text each person read, with the time of signing, IP address, a hash proving the text was not altered, and a PDF copy. Every ticket signs through its own link. When you need to check, you know exactly what each person agreed to, and when.
Participants under 18 on race day are signed for by a guardian. If you later edit the waiver template, signed copies stay unchanged.
Bib numbers come from each ticket type's own range: sequential, random, or assigned at the desk. You can open a wheel so participants spin and lock in their own number. Special numbers reserved for sponsors are never assigned automatically.
Participants registered through other channels, such as corporate teams or sponsors, are imported from a file and keep their existing bib numbers. They don't count against tickets on sale.