# Workshop seats and waitlist worksheet Companion guide: https://www.overskill.com/learn/plan-workshop-seats-and-waitlist All Maple Room reservations, people counts and transactions below are fictional. The answer key follows an explicit policy. It is not a product test, a record of real registration or proof that a template implements this policy. ## 1. Set your workshop policy Workshop / date / timezone: Participant seat limit / how it was chosen: Who is included in that count (participants, instructors, others): Whole groups or split groups: Waiting order / tie-break: What happens when the oldest party cannot fit: Hold duration / expiry boundary: What happens to an expired party's queue position: Who may cancel or alter a reservation: How retries are recognized: Owner of unresolved discrepancies: Sample workshop: Maple Room, October 16, 2026. Transactions: October 9, 2026, America/Chicago. Participant capacity 12, instructor outside that count. This allocation limit is not a statement of a venue's permitted occupancy. ## 2. Freeze the sample rules - Valid party sizes are whole numbers from 1 through 12. Groups never split. - Waiting order is original received time, then immutable queue sequence assigned when saved. Promote only the oldest waiting group. If it cannot fit, stop. - Promotion reserves the whole group as Held. Waiting uses zero seats. - A hold lasts 30 minutes. Acceptance must be earlier than its expiry time. At or after expiry, it cannot be accepted. - Expiry releases held seats once. The expired group leaves the active queue; a new request to rejoin gets a new position at the end. - Cancelling a Waiting request removes it from the active queue and releases zero seats. Cancellation of a Held or Confirmed reservation releases its seats once. Repeating either action changes nothing. Preserve the cancellation and history. - Resolve expired holds before the next allocation. Confirming a valid hold transfers its seats from Held to Confirmed without consuming them twice. - Available = 12 − confirmed seats − held seats. All three counts are nonnegative and sum to 12. Cancelled and Expired reservations consume zero seats. Your rule changes / expected effect: Reviewer / date: ## 3. Record the starting position | Reservation | Party size | State | | --- | ---: | --- | | A | 4 | Confirmed | | B | 3 | Confirmed | | C | 3 | Confirmed | | Waiting request | Party size | Received | Queue sequence | | --- | ---: | --- | ---: | | W-01 | 3 | 08:50 | 1 | | W-02 | 2 | 08:51 | 2 | | W-03 | 1 | 08:52 | 3 | At 09:00: confirmed 10, held 0, available 2. W-01 needs 3, so nobody receives a hold. W-02 would fit, but the policy does not permit skipping W-01. | Your reservation ID | Party size | State | Received / queue sequence | Hold expires at | State-change evidence | | --- | --- | --- | --- | --- | --- | | | | | | | | ## 4. Reconcile each transaction The table order resolves actions sharing a timestamp. Each row is the resulting state after that action. Hold creation is a reservation state change, not evidence of sending an offer or its delivery. | Operation | Time | Action | Confirmed | Held | Available | Active waiting queue after action | | --- | --- | --- | ---: | ---: | ---: | --- | | T-00 | 09:00 | Initial review | 10 | 0 | 2 | W-01, W-02, W-03 | | T-01 | 09:05 | Cancel B | 7 | 0 | 5 | W-01, W-02, W-03 | | T-02 | 09:05 | Hold 3 for W-01, expires 09:35 | 7 | 3 | 2 | W-02, W-03 | | T-03 | 09:05 | Hold 2 for W-02, expires 09:35 | 7 | 5 | 0 | W-03 | | T-04 | 09:20 | W-01 accepts | 10 | 2 | 0 | W-03 | | T-05 | 09:35 | W-02 expires | 10 | 0 | 2 | W-03 | | T-06 | 09:35 | Hold 1 for W-03, expires 10:05 | 10 | 1 | 1 | Empty | | T-07 | 09:50 | W-03 accepts | 11 | 0 | 1 | Empty | | T-08 | 09:55 | Add W-04 (1 seat, sequence 4) and W-05 (1 seat, sequence 5) | 11 | 0 | 1 | W-04, W-05 | | T-09 | 09:55 | Hold 1 for W-04, expires 10:25 | 11 | 1 | 0 | W-05 | | T-10 | 10:00 | W-04 accepts | 12 | 0 | 0 | W-05 | | Retry T-01 | 10:01 | Receive B's cancellation again | 12 | 0 | 0 | W-05 | W-04 and W-05 have the same received time (09:55); their queue sequence breaks the tie. W-02's expired request is not in the active queue. If it rejoins, it receives a new position and cannot reuse sequence 2 to jump ahead. Final confirmed parties: A 4 + C 3 + W-01 3 + W-03 1 + W-04 1 = 12. B is Cancelled; W-02 is Expired; W-05 is Waiting and consumes no seat. | Your operation ID | Time / timezone | Reservation / action | Confirmed | Held | Available | Queue | Evidence / discrepancy | | --- | --- | --- | --- | --- | --- | --- | --- | | | | | | | | | | For each row, check: capacity = confirmed + held + available. Count people, not reservation rows. Each party must have exactly one current state. ## 5. Test boundaries separately Each reset case starts from the stated state; do not add them to the main ledger. | Test | Starting point | Expected result | Observed / evidence | | --- | --- | --- | --- | | Empty | No reservations or waiting groups | 0 confirmed, 0 held, 12 available | Unverified | | Whole capacity | Empty; request 12 seats | One 12-seat hold, 0 available | Unverified | | Invalid size | Empty; separately request 13, 0, −1 or 1.5 | Reject each; counts unchanged | Unverified | | Oldest cannot fit | Main ledger at 09:00 | No promotion; 2 available | Unverified | | Waiting withdrawal | Main ledger at 09:00; cancel W-01 | Seat counts remain 10/0/2; W-02 becomes first. Promote it: 10 confirmed, 2 held, 0 available; W-03 waits. Retry W-01 cancellation: unchanged | Unverified | | Acceptance boundary | W-02's 09:35 hold expiry, separate runs at 09:34:59 / 09:35:00 / 09:35:01 | Before: acceptance succeeds; at/after: acceptance refused and expired hold released once | Unverified | | Full timestamp | Reset after T-01; promote W-01 at 09:05:30 | Expiry is 09:35:30; acceptance at 09:35:29 succeeds, at 09:35:30 fails in a separate run | Unverified | | Repeat expiry | Immediately after T-05; repeat T-05 | 10 confirmed, 0 held, 2 available | Unverified | | Last-seat conflict | After T-08; two sessions attempt promotion | Exactly one W-04 hold; W-05 waiting; 11 confirmed, 1 held, 0 available | Unverified | | Full | After T-10; attempt W-05 promotion | Refuse; 12 confirmed, 0 held, 0 available | Unverified | | Repeat cancellation | After T-10; retry T-01 | Unchanged; no second release for B | Unverified | | Save and return | Any completed ledger step | Same seats, states, expiry and history | Unverified | | Record access | Separate permitted and unauthorized viewers | Only authorized reads/changes according to your policy | Unverified | Test app / version: Reviewer / observed at: Failed or unverified check / owner / next action: Use the guide's build brief with this worksheet. No message, payment, venue approval or public launch is part of the exercise. Verify the built app separately before using real participant details or opening registration.