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-15Blocco 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,#22D3EEcome dominant (not gradient-only),from-cyan,to-cyaninsrc/components/*→ rimpiazzare conaccent-sky/var(--color-brand)dove il senso è "primario CTA" - [ ] Audit violet leftover: grep
violet,#8B5CF6come accent (deve essere solo--color-violetpalette extended, NON usato come brand) → confermare zero references - [ ] Light mode parity: verifica
html.lightswap 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-previewhidden gated VITE_FOUNDER_EMAILS: paletta + typography scale + spacing scale + radius + shadows visualizzati (Storybook leggero theme-only)
Merge sequence (Mother gate)
- PR #44 founder decisions merge (founder action) ⏳
- Stream A direct → commit + push su master direct (Mother solo) ⚠️ founder approve
- Stream B PR → review Mother → founder merge approve
- 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)