Three inputs, nothing else: where the app will live, its name, and a
plain-language brief (≤ 4000 characters) handed to FuzeAgent. Submitting calls
POST /api/v1/app-registry/build-sessions and moves to progress (frame c).
Give the app a name.
The brief is 127 characters over the 4000 limit. Trim it before starting.
Request. CreateBuildSessionRequest = { context, organizationId?, name, brief }.
context=organization sends the active org's org_… id; context=personal
sends no organizationId (the server resolves the personal org and rejects one if sent).
No id is ever sent — the session id is server-minted. name 1–120, brief 1–4000,
both trimmed client-side.
Response. 201 BuildSession → navigate to /applications/build/:id (frame c).
Every non-2xx — 503 builder_unavailable, 403, 502, 409 no_personal_org,
429 — is rendered by frame (d), with the form's values kept.
Test hooks: [data-frame='02-build-form'] · [data-panel='build-form'] ·
[data-input='target'] · [data-target='personal'] · [data-target='organization'] ·
[data-input='name'] · [data-input='brief'] · [data-counter='brief'] ·
[data-action='start-build'] · [data-state='invalid'] · [data-state='submitting'].