fix(auth): answer the setup state for the record the payload describes

The account payload resolved the setup state for the actor while its module
map, its cycle flag and every count the checklist reads beside it answer for
the active record. A guardian looking at a child's dashboard therefore got the
child's rows ordered by their own answers, and the child's reading count
tested against their own flow state. The two halves of that component have to
agree about whose record they describe, so the field is record-scoped now,
like the module map next to it.

Under a grant narrowed to one section the answers come back empty, for the
reason the module map is masked: they name the domains the record tracks, and
a grant that opens readings does not open that. The shape of the flow still
comes through.

The three write routes stay actor-only and say why: a delegable declaration is
a reviewed entry in the sharing surface guard, and a read that is wider than
its write is the honest shape while that entry is still to come.
This commit is contained in:
Marc-André Bombeck committed 2026-09-10 12:06:02 +02:00
1 parent b10a3ef22e
commit f90307fd22
7 files changed
+162 -31

No files matched your search

@@ -314,8 +314,10 @@ export function GettingStartedChecklist() {
dismissedIds,
// v1.39 (C1) — the setup answers order these rows: medication first
// for somebody who said they take one daily, the data-source row first
// for somebody who named a wearable. Null until the account payload
// resolves, and for any record that never entered the flow.
// for somebody who named a wearable. The payload resolves them for the
// ACTIVE record, which is the same record the counts above describe.
// Null until the payload resolves, and for a record that never entered
// the flow.
onboarding: user?.onboarding ?? null,
}),
[