Version. 0.1 Date. 2026-04-25 Status. Discovery record. Captures the trajectory of decisions reached in the Phase 13 / 13A scoping and close-out session regarding the person layer, identity model, domain declaration, designations, and account recovery. Raw material for a future phase scoping note and CR. Provenance. Claude.ai session, 2026-04-25. Operator: Marvin Percival.
After Phase 13 (four UI surfaces) and Phase 13A (real TOTP) were complete, the question arose: how does a new Operator, Contributor, or Domain Expert get credentials? The answer was: they can't — not through the product surface. Phase 13 built a single-Operator product. The substrate has no concept of a "person" that exists outside of engagement-scoped contributor rows.
This led to a structural inquiry about identity, onboarding, designations, domains, and recovery.
Prior position. Phase 13 deferred identity to a future phase. The substrate has only engagement-scoped contributor rows — no cross-engagement identity, no "person."
Settled position. The person layer is the foundation. A person must exist before they can hold memberships, receive invitations, or carry designations. Build order:
The person layer is the next phase.
Considered and rejected: invitation-only. If the first touchpoint always requires an invitation from someone already in the system, then DUNIN7 is the only authority that can bring people in. The Operator explicitly rejected this — "DUNIN7 cannot be the only authority that can invite someone."
Settled position. Anyone can come to Loomworks and create an account. Self-service signup is the first interaction. A person arrives, registers, and exists — before they have any engagements, before anyone invites them anywhere.
What signup collects:
What the person is encouraged to do: register at least two passkeys on separate devices. The product surface should say this clearly.
Prior position (implicit in Phase 13). After sign-in, the person lands on the dashboard.
Settled position. After first-time signup, the person lands on a welcome page — not the dashboard. This is an arrival, not a workspace. The welcome page is ceremonial (vertical lockup, same register as the landing page) and tells the person:
The welcome page is the product's first conversation with a person who has chosen to be here.
Prior position. The substrate has commit_authority (boolean) as the only role signal on contributor rows.
Settled position. Designations are:
The three current designations:
Key insight from the Operator: "Operators, Contributors and Domain Experts may all be the same person. Therefore the person should be able to carry more than one (3+?) designation."
Considered and rejected:
Settled position: (c) Person-declared, AI-assisted, Operator-confirmed.
The flow:
Key principles:
Considered and rejected:
Settled position: (a) — the account is unrecoverable if all credentials are lost.
The system has no backdoor. The person is responsible for their credentials. Multiple passkeys on separate devices, TOTP in an authenticator app, recovery codes in a password manager or printed — all standard tools that already exist (LastPass, 1Password, etc.). No need for Loomworks to build a secure lockbox.
The product surface makes the stakes clear at signup:
If all are lost, the person's engagements, memberships, and recognitions are orphaned. An Operator on each engagement can remove the orphaned membership and invite the person back under a new identity — but the history and recognition belong to the old identity.
Three paths for how a person arrives in an engagement, built in order as each is needed:
Path 1 — Self-service signup + invitation (build first). A person creates their own account (self-service). An Operator on an engagement invites them by email/mobile/handle. The person accepts and is added to the engagement with the designations the Operator specified. If the person already has a Loomworks account, the new membership is added to their existing identity.
Path 2 — Org SSO. An organization connects its IdP. People from that org sign in with SSO and are provisioned into the engagements their org participates in. This is what "Organizational sign-in" on the landing page becomes when it stops being a toast.
Path 3 — Domain-based join (future). If an engagement is tagged with a domain, anyone with a matching declared domain can request to join. Lower priority — Loomworks engagements are considered and deliberate, not open-door.
Invite authority is distributed. An Operator on an engagement can invite people into that engagement. They don't need DUNIN7's approval. The system provides the mechanism; the Operator exercises the judgment.
Migration. The four existing contributor rows (Administrative, PartsPilot, FieldPilot, Agricultural Engagement) need to be repointed:
person record is created for Marvin Percival.commit_authority: true maps to the Operator designation.These are scoping decisions for the next session.
The person-layer and membership-layer separation is the universal pattern across Slack, Linear, Notion, GitHub, and every multi-tenant SaaS platform examined. The consistent structure: a person exists once (one identity, one set of credentials), memberships are scoped to workspaces/organizations, roles/designations live on the membership. Loomworks maps naturally: engagement = workspace, membership = per-engagement relationship, designations = per-membership role set.
All examined platforms support self-service account creation as the front door. Invitation is how people arrive in specific workspaces, not how they enter the system.
DUNIN7 — Done In Seven LLC — Miami, Florida Loomworks person layer — Discovery record — v0.1 — 2026-04-25