# New User Onboarding

## Goal

Move a new learner from arrival on `labs.tidb.io` to a usable lab environment
with the minimum possible setup friction.

## Happy Path

1. The user lands on the frontend and discovers a relevant lab, exam, or
   learning path.
2. The user authenticates or otherwise satisfies the access rules for the lab.
3. The frontend submits `POST /api/v2/lab-instances` when the user starts the
   lab.
4. The backend creates the lab instance and schedules the async provisioning
   job graph.
5. The frontend polls progress while the backend provisions infrastructure and
   supporting services.
6. When provisioning completes, the user receives one or more access resources:
   Web SSH, HTTPS reverse-proxy links, and database connection details.

## Primary User Questions

- Can I start the lab right now?
- How long will setup take?
- Where do I click once the environment is ready?
- What should I do if provisioning fails or the environment expires?

## Product Requirements

- Show clear progress during async provisioning.
- Return stable access entrypoints once the environment is ready.
- Keep failure states understandable enough that support can recover them.
- Avoid exposing infrastructure complexity to the learner unless recovery
  requires it.

## Non-Goals

- Teaching the underlying cloud setup steps manually
- Requiring users to assemble SSH or proxy credentials by hand
