title: "Osservatorio App · prompt children Mother session 2026-05-15" date: 2026-05-15 mother_session: "mother-osservatorio-app-2026-05-15" status: live hard_gate: 2026-06-10 days_remaining: 26

Osservatorio App · Prompt CHILD per founder · 2026-05-15

Mother orchestrator decisioni:

  • Foundation aggregata in Mother direct work (gran parte già propagata da PR #40 Mossa 3)
  • 2 worktree fisici creati con scope esclusivo (B + C)
  • PR #41 Reach merged ✅ · PR #44 founder decisions OPEN ⏳ · branch feat/compliance-klaro-iubenda-wire-2026-05-15 Blocco 2 🅑 done

Master state ground truth (origin/master HEAD 7298a55)

Già in master (Osservatorio brand-half completo):

  • Palette sky-dominant --neon-* = #0EA5E9 + green-r/g/b accent + cyan-r/g/b terziario
  • Font Bricolage Grotesque (display) + Geist (UI) + Geist Mono (data)
  • Surface scale #09090B → #1F1F26 + light mode parity
  • Ambient orb drift animation + nebula reveal + liquid-glass class
  • iOS26 tab bar + glass-navbar floating + segmented control
  • ConstellationMap promosso a Overview
  • LoginPage Syne font rimosso (fallback locale)
  • Assistente AI default "Il Centro"

Anti-collision matrix (NON toccare)

Stream Esclusioni assolute
B (components-auth) src/contexts/AuthContext.tsx (PR #44 modifica · +6 founder gate) · src/lib/founder.ts (PR #44 NEW) · src/components/layout/DesktopSidebar.tsx (PR #44) · src/components/layout/SectionTabBar.tsx (PR #44) · src/components/settings/SettingsPage.tsx (branch klaro modifica) · src/lib/klaro-config.ts (branch klaro) · src/styles/tokens.css + tailwind.config.js (PR #44 ridefinisce delta)
C (nucleo-3d) Nessuna esclusione · scope nuovo (src/components/3d/* + src/lib/r3f/* + demo route /_3d-preview)
Mother direct (Stream A) src/styles/tokens.css e tailwind.config.js solo additive (no overwrite) · attende merge PR #44 per ultimi delta

CHILD B · Components + Auth (worktree D:/Desktop/mv-components-auth)

Sei CHILD B del flusso Osservatorio v1.1 app. Lavori in
D:/Desktop/mv-components-auth (worktree dedicato, branch design/components-auth
based on origin/master HEAD 7298a55).

═══ CONTEXT (importante leggere) ═══
- Repo: Vite + React 19 + Tailwind v3 + Supabase Auth (NON Next.js, NON shadcn).
- Design system: skill multiverbe-design-system (Osservatorio v1.1 sky-dominant).
- Master HA GIÀ: palette sky #0EA5E9 dom + green #4ADE80 accent + cyan #22D3EE
  terziario, font Bricolage+Geist+Geist Mono, surface #09090B, liquid-glass
  class, ambient-orb, glass-navbar, ios26-tab-bar (vedi src/styles/tokens.css
  + src/index.css). NON ridefinire. USA.
- Goal: il founder oggi vuole loggare per la prima volta e farsi un'idea
  visiva "incredibile" (non "funziona"). Auth + onboarding + dashboard primo
  screen sono il momento di verità.

═══ SCOPE ESCLUSIVO ═══
✅ src/components/auth/* (LoginPage.tsx esiste · aggiungere SignupPage.tsx +
   MagicLinkPage.tsx + ForgotPasswordPage.tsx con flow Supabase auth)
✅ src/components/ui/* (LiquidGlass.tsx utility component · Button primary/
   secondary/ghost · Input glass · OAuthButton Google/Apple)
✅ Demo route hidden `/_components-preview` gated VITE_FOUNDER_EMAILS
   (riusa lib/founder.ts che PR #44 aggiunge — se non ancora merged, fai
   una stub locale lib/founder-stub.ts da rimuovere quando PR #44 lands)
✅ Animazioni framer-motion ENTER auth pages (già in dependencies)

❌ NON TOCCARE (collision risk):
   - src/contexts/AuthContext.tsx (PR #44 +6 founder gate)
   - src/lib/founder.ts (PR #44 NEW)
   - src/lib/klaro-config.ts (branch klaro pending merge)
   - src/components/settings/SettingsPage.tsx (branch klaro modifica)
   - src/components/layout/DesktopSidebar.tsx + SectionTabBar.tsx (PR #44)
   - src/styles/tokens.css (palette già canon master)
   - tailwind.config.js (palette già canon master)

═══ BAR DELIVERABLE ═══
1. LoginPage redesign: sky #0EA5E9 CTA dominante + ambient orb scene
   morbidamente animato (2-3 orbs sky/green/cyan blur 80px alpha 5%) +
   Bricolage Grotesque hero "Bentornato in Multiverbe" + Geist body +
   logo Multiverbe centerd alto · liquid-glass card center · OAuth +
   email/password + "Magic link via email" link · light mode parity
   con `html.light` token swap
2. SignupPage + MagicLinkPage NUOVI: stesso layout coerente · multi-step
   no (1 schermata only) · Supabase signUp + signInWithOtp
3. ForgotPasswordPage NUOVO: Supabase resetPasswordForEmail
4. LiquidGlass utility React component (props: variant=hero|support,
   className, children) wrappa logica .liquid-glass · usata da B + futuro
5. Button primary `bg-accent-sky text-black hover:bg-[#38BDF8]` (è già
   `--color-brand-hover`) + secondary glass + ghost
6. Input primitive `glass-input` con label flottante stile Apple
7. OAuthButton Google con icona Phosphor + glass border subtle
8. Demo route `/_components-preview`: lista tutti i componenti (Storybook
   leggero · sezioni: Buttons, Inputs, Cards, Auth pages render). Gated.
9. Animation: pagina entra con stagger framer-motion (delay 50ms each child)
10. Accessibility: focus-visible 2px sky ring (già in index.css) · ARIA labels
    su tutti i form fields · keyboard nav

═══ COMANDI INIZIO ═══
- cd D:/Desktop/mv-components-auth/frontend/multiverbe-app
- npm install (lockfile package-lock.json esiste, hard install non serve se
  node_modules sync OK — verifica con `npm ls react` first)
- npm run dev (Vite, default port 5173)
- Verifica route `/login` funziona prima di toccare
- Carica skill: multiverbe-design-system (Osservatorio v1.1) · feedback_ux_simplicity_first
- BAR: italiano umano · UX simplicity-first · "incredibile" non "funziona"

═══ AUTONOMY ═══
✅ Read/Edit/Write in scope esclusivo · install deps (es. clsx, tailwind-merge se non già)
✅ Commit on design/components-auth · push a origin per Mother PR/review
❌ Chiedere prima: deps fuori scope (es. nuovo state manager) · cambio palette ·
   schema DB · API endpoints · merge a master (è Mother gate)

═══ HANDOVER A MOTHER ═══
Al termine:
- Push branch + apri PR target master (NON merge)
- Update D:/Desktop/Multiverbe-Business/source/_meta/live/inbox.json con
  message from CHILD-B to mother session con PR URL + summary
- BAR pass/fail rispetto a "incredibile": auto-assess 1-10 e nota

CHILD C · NucleoSphere 3D (worktree D:/Desktop/mv-nucleo-3d)

Sei CHILD C del flusso Osservatorio v1.1 app. Lavori in
D:/Desktop/mv-nucleo-3d (worktree dedicato, branch design/nucleo-3d based
on origin/master HEAD 7298a55).

═══ CONTEXT (importante leggere) ═══
- Repo: Vite + React 19 + Tailwind v3 (NON Next.js).
- @react-three/fiber e three NON sono in package.json yet → INSTALLA TU.
- Skill da caricare: multiverbe-r3f-patterns (Canvas config, performance,
  WebGPU/WebGL2 fallback, prefers-reduced-motion).
- Goal: NucleoSphere (centro Sistema Solare = AI orchestratrice "Il Centro")
  visibile nella dashboard primo screen quando il founder logga. È IL volto
  del prodotto, founder priority (status.json: "NucleoSphere 3D R3F · volto
  del prodotto · skill multiverbe-r3f-patterns").

═══ SCOPE ESCLUSIVO ═══
✅ Install deps: three, @react-three/fiber, @react-three/drei,
   @react-three/postprocessing (versioni latest stable per React 19)
✅ src/components/3d/NucleoSphere.tsx (componente principale, props minime)
✅ src/components/3d/NucleoSphereCanvas.tsx (wrapper Canvas + Suspense +
   fallback)
✅ src/components/3d/NucleoSphereFallback.tsx (SVG 2D mobile / reduced-motion)
✅ src/lib/r3f/canvas-config.ts (powerPreference high-performance, antialias
   false, stencil false, depth false, dpr cap 1.5 — vedi skill r3f-patterns)
✅ src/lib/r3f/use-reduced-motion.ts (hook prefers-reduced-motion)
✅ Demo route hidden `/_3d-preview` gated (stub if PR #44 not merged)
✅ Eventualmente in OverviewPage.tsx, in HeroPanel, SUBSTITUIRE il ConstellationMap
   o aggiungerlo come centro · MA propose-first al Mother prima di toccare
   OverviewPage

❌ NON TOCCARE:
   - src/styles/tokens.css (Stream A direct)
   - src/components/layout/* (PR #44)
   - src/contexts/AuthContext.tsx + src/lib/founder.ts (PR #44)

═══ BAR DELIVERABLE ═══
1. NucleoSphere visual: sfera centrale ~50-80 drawcalls budget, palette sky
   #0EA5E9 + green #4ADE80 emissivi + cyan #22D3EE sparkles satellite (NO
   violet, MAI). Pulsazione respiro 3s ease-in-out (analogo skill
   multiverbe-design-system "breathing"). Glow morbido tramite Bloom
   post-processing intensity 0.6 luminanceThreshold 0.3.
2. Canvas config STRICT (skill r3f-patterns):
   - powerPreference: "high-performance"
   - antialias: false (Bloom gestisce)
   - stencil: false, depth: false
   - dpr [1, 1.5]
   - frameloop: "demand" se animazioni discrete OR "always" se respiro
3. Fallback SVG 2D in NucleoSphereFallback.tsx: stessa silhouette ma 2D,
   palette identica, pulse animation CSS (no GPU). Mobile <768px usa
   fallback. Reduced-motion preference forza fallback.
4. Performance: 60fps target desktop, 30fps mobile fallback. Add
   `<PerformanceMonitor>` da drei per logging dev mode.
5. Suspense wrapper · loading state minimal (sky pulse dot)
6. Demo route `/_3d-preview`: rende NucleoSphere full-screen con
   FPS counter (Stats da drei dev-only) + toggle fallback vs 3D
7. Componente totally portable: importable da chiunque, no global state,
   no Zustand assumption

═══ COMANDI INIZIO ═══
- cd D:/Desktop/mv-nucleo-3d/frontend/multiverbe-app
- npm install (lockfile package-lock.json esiste)
- npm install three @react-three/fiber @react-three/drei @react-three/postprocessing
- npm install -D @types/three
- npm run dev
- Verifica `npm ls react-three-fiber` e `npm ls three` post-install
- Carica skill: multiverbe-r3f-patterns · multiverbe-design-system (palette/feel)
- BAR: italiano · "incredibile" è "wow respiro vivo del Centro che parla
   senza dire nulla"

═══ AUTONOMY ═══
✅ Read/Edit/Write in scope esclusivo · install R3F deps
✅ Commit on design/nucleo-3d · push a origin per Mother PR/review
❌ Chiedere prima: integration in OverviewPage / Dashboard primo screen
   (è founder UX decision · propose-first con screenshot · BAR "incredibile"
   = founder pick) · pattern post-processing pesante (+budget bloomscost)

═══ HANDOVER A MOTHER ═══
Al termine:
- Push branch + apri PR target master (NON merge)
- Screenshot full-screen NucleoSphere + fallback SVG accanto (drag in PR body)
- Update D:/Desktop/Multiverbe-Business/source/_meta/live/inbox.json con
  message from CHILD-C to mother session con PR URL + screenshot + FPS metric
- BAR pass/fail: "respira" 1-10

Mother direct (Stream A) lista task

  • [ ] Audit cyan→sky leftover: grep cyan-500, text-cyan, bg-cyan, border-cyan, #22D3EE come dominant (not gradient-only), from-cyan, to-cyan in src/components/* → rimpiazzare con accent-sky / var(--color-brand) dove il senso è "primario CTA"
  • [ ] Audit violet leftover: grep violet, #8B5CF6 come accent (deve essere solo --color-violet palette extended, NON usato come brand) → confermare zero references
  • [ ] Light mode parity: verifica html.light swap su top 10 components più visibili (LoginPage, DesktopSidebar, OverviewPage, AssistenteAIPage)
  • [ ] Ambient blooms scene LoginPage: aggiungere 3-4 ambient orbs (sky, green, cyan terziario) layer dietro liquid-glass card, animation drift 60s
  • [ ] Demo route /_theme-preview hidden gated VITE_FOUNDER_EMAILS: paletta + typography scale + spacing scale + radius + shadows visualizzati (Storybook leggero theme-only)

Merge sequence (Mother gate)

  1. PR #44 founder decisions merge (founder action) ⏳
  2. Stream A direct → commit + push su master direct (Mother solo) ⚠️ founder approve
  3. Stream B PR → review Mother → founder merge approve
  4. Stream C PR → review Mother → founder merge approve

Out-of-scope (defer)

  • Mobile responsive deep audit (founder può scegliere Blocco 3 separato)
  • Stripe seed live (separato Blocco 2 della sessione gemella)
  • E2E test Playwright dei flows auth (post-MVP polish)
  • Onboarding 8-10min → 3min target (action_item W5 separato)