MeridiansMeridians

Onboarding — build a Constellation from intent [Flow]

Source path: knowledge-base/diagrams/flows/onboarding.md

# Onboarding — build a Constellation from intent `[Flow]`

A 6-step stepper (`ONBOARDING_STEPS` in `lib/core/onboarding.ts`) turns interests into a live, maintained Constellation. The document is a *proposal* the user shapes; a background runner materialises the real records; a completed onboarding is an immutable genesis record.

```mermaid
flowchart TB
    S1["**1 · Topics**<br/>pick interest cards"]
    S2["**2 · Synthesis**<br/>AI names it + drafts a schema"]
    S3["**3 · Graph**<br/>review Domains (public/private)<br/>+ relations"]
    S4["**4 · Capture**<br/>per Domain: interview · research ·<br/>paste → corpus"]
    S5["**5 · Build**<br/>create Constellation + extract<br/>each Domain"]
    S6["**6 · Maintain**<br/>per-Domain AI portfolio:<br/>accept / decline"]
    S1 --> S2 --> S3 --> S4 --> S5 --> S6

    S5 & S6 -->|"queue tasks"| Runner
    subgraph Runner["OnboardingTaskRunner · background"]
        direction LR
        T1["domain-build →<br/>Domain record"]
        T2["maintenance →<br/>ResearchCycle portfolio"]
        T3["reminder →<br/>DomainReminder"]
    end
    Runner --> Rec(["Live records:<br/>Constellation + Domains + Cycles + Reminders"])
    S6 -->|all reviewed → Finish| Done(["status = complete<br/>(read-only)"])
```

- **The graph leans public.** The architecture prompt maps a world-facing interest → a **Public** Domain (kept current by web Research) and a personal one → a **Private** Domain (kept current by interview + Reminder).
- **Maintenance is a portfolio:** `suggestDomainMaintenance` proposes **3–6 diverse loops** for a Public Domain (each a different slice) and **one** check-in Reminder for a Private Domain. Accepted maintenance reuses the same `plannedLoopToCycle` / `plannedReminderToDomainReminder` converters as everywhere else ([maintenance-run](maintenance-run.md)).
- **AI proposes at every step; the durable document only changes on accept** (`suggest*` in `lib/engine/ai/onboarding.ts`). Step components live in `features/onboarding/steps/`, threaded through `useArchitecture` / `useCaptureFlow` / `useMaintainSuggestions`.

> **Headless MCP twin — the same 6 steps, 1:1.** `create-onboarding` → `set-onboarding-interests` → (`suggest-onboarding-topic-sources` to enrich a custom topic) → `suggest-onboarding-identity` → `suggest-onboarding-architecture` → `patch-onboarding-domain` → (`suggest-onboarding-sources` · `suggest-onboarding-questions` + `answer-onboarding-questions`) → `ground-onboarding-domain` → `accept-onboarding-corpus` → `build-onboarding-constellation` → `suggest-onboarding-maintenance` + `apply-onboarding-maintenance`, inspected between steps via `read-onboarding`. Handlers in `lib/server/ops/handlers/onboarding.ts`. **Custom topics start bare** — enriching a coined label into catalog sites/terms is the deliberate extra `suggest-onboarding-topic-sources` step.
Open on GitHub

Raw Markdown source