# Schedule or book

**Flow key:** `schedule-and-book`

## Outcome

A participant finds a truly available slot, supplies required data, and creates exactly one correctly time-zoned booking with coherent invitations, reminders, and cancellation.

## Actors

- Organizer/provider
- Participant
- Calendar/availability service
- Notification/integration provider

## Preconditions and entry points

- Synthetic calendars contain available, busy, held, and boundary slots.
- Time zone, duration, capacity, buffer, cancellation, and reminder policies are known.

## Required test data

Use synthetic, isolated, resettable data. Never use real credentials, payment instruments, private customer records, or production notifications.

| Data | Canonical valid seed | Critical variations |
|---|---|---|
| Participant | `carbon.booking+001@example.test` | guest, signed in, duplicate attendee, restricted user |
| Service/event | 30-minute CARBON review | variable duration, capacity >1, paid, recurring |
| Time | future slot in `America/Los_Angeles` | DST gap/fold, midnight, month/year boundary, participant zone |
| Availability | one open slot | held, double-booked, just taken, provider unavailable |
| Details | name and note `Ready :)` | empty required, Unicode/RTL, long, markup canary |

## Canonical steps

Treat this as the ordinary successful path inferred from common product behavior. Adapt it to observed labels, business rules, APIs, and implementation evidence; do not invent a requirement.

| Step | User or system action | Expected evidence |
|---:|---|---|
| 1 | Open scheduling entry point and select service/participants. | Duration, location, zone, capacity, price, and policy are clear. |
| 2 | View and choose an available slot. | Availability reflects authoritative calendars, buffers, holds, and current time. |
| 3 | Enter participant and required details. | Validation preserves timezone and content intent. |
| 4 | Review local and organizer times. | Date, zone, recurrence, location, reminders, and cancellation terms are unambiguous. |
| 5 | Confirm once. | One booking reserves capacity and creates intended calendar/integration events. |
| 6 | Open invitation, reschedule, and cancel. | All calendars, links, reminders, capacity, refunds, and notifications converge. |

## Alternate paths

- One-on-one
- Group/capacity booking
- Recurring event
- Paid appointment
- Reschedule or cancel

## Failure and recovery paths

- Slot taken during confirmation
- Calendar provider unavailable
- DST conversion wrong
- Duplicate submit/invitation
- Reminder fires after cancellation

## Completion oracle

- The stated outcome is true in visible UI and authoritative persisted state.
- Exactly one intended business result and no unintended side effect occurred.
- Identity, tenant, authorization, money/data, lifecycle, notifications, integrations, analytics, and audit agree where applicable.
- Refresh, retry, back/forward, and a second authorized read do not reveal a contradictory result.
- Any partial, delayed, canceled, failed, or unknown outcome is labeled truthfully and has a safe recovery path.

## Evidence to capture

- Entry context, actor, tenant, role, feature flags, locale, time zone, and initial identifiers/state.
- Step-level screenshots or DOM state plus request/response, correlation, job, event, and stable business IDs where available.
- Before/after authoritative records, versions, totals, permissions, lifecycle states, and downstream side effects.
- Notifications, audit events, integration deliveries, retries, deduplication, latency, and recovery evidence.
- Untested branches, unsafe-to-run cases, product decisions, and evidence tier.

## Product decisions to resolve

- Exact eligibility, required data, authorization, and validation rules.
- Which steps are synchronous, asynchronous, optional, skippable, reversible, or irreversible.
- Idempotency, concurrency, timeout, retry, cancellation, and compensation semantics.
- Retention, privacy, notification, audit, performance, accessibility, and localization commitments.

## Related CARBON items

- [calendar event meeting recurrence](../../items/data/calendar-event-meeting-recurrence.md)
- [schedule](../../items/automation/schedule.md)
- [notification and reminder](../../items/content/notification-and-reminder.md)
- [concurrency and idempotency](../../items/quality/concurrency-and-idempotency.md)

[Back to Productivity and collaboration flows](index.md)
