Merge wave C — the flow cannot strand, mislead or silently switch off

The getting-started checklist's data queries follow the same setup rule as
its visibility, so a settled account stops being told to do what it has
done; a failed completion leaves the confirm screen usable; an empty
multi-select is no longer recorded as an answer; the confirm screen names
the modules a run would take out of the navigation; the settings links it
offers work before the first completion; and demo mode can fill the
baseline it is shown.
This commit is contained in:
Marc-André Bombeck committed 2026-09-11 10:24:48 +02:00
commit 3642bbe4de
24 files changed
+1018 -122

No files matched your search

+13
View File
@@ -174,6 +174,19 @@ const DEMO_MUTATION_ALLOWLIST: ReadonlyArray<{ path: string; method: string }> =
// Neither creates health data.
{ path: "/api/onboarding/disclaimer", method: "POST" },
{ path: "/api/onboarding/tour", method: "POST" },
// v1.39 (Wave C, C6) — the three writes the confirm screen makes. Without
// them a demo visitor who typed a height got a 403 and a generic toast,
// and the "someone I look after" arm could only take "Finish without the
// profile" — only the empty-form/Skip path completed, so the demo did not
// in fact walk the same flow (design spec §Principles 5). None of the
// three creates health data: the caller's own profile fields, the
// encrypted self-context behind the optional anamnesis card, and the
// managed record the guardian arm of the flow exists to create. The
// per-profile routes (`/api/managed-profiles/{id}`, its guardians) are
// different paths and stay closed.
{ path: "/api/auth/profile", method: "PUT" },
{ path: "/api/coach/about-me", method: "PUT" },
{ path: "/api/managed-profiles", method: "POST" },
];
// Legacy route redirects (German → English)