Settimana corrente

Roadmap tattica della settimana in corso · cosa si sta facendo, blocker, prossimi passi. Aggiornata ogni lunedì 9:00 review.

Current Week · Cosa stiamo facendo

Aggiornato lunedì 9:00 review. Cambia ogni settimana. Task strategici → decisions-log.md. Numeri → metrics.md.

🎯 OGNI SESSIONE CLAUDE INIZIA CON (re-baseline 2026-06-21):

  1. Leggere questa sezione "RIPARTENZA 21 GIU" e la decisione corrispondente in decisions-log.md (v130)
  2. Traguardo unico: forma primitiva dell'app + dogfooding su Multiverbe stessa entro il 30 giugno
  3. Barra di qualità: funzionante + testato + zero dati finti + advisor 0 errori (un giro end-to-end reale per pianeta)
  4. Aggiornare il BOS nello stesso loop (status.json + cantiere.json _meta.last_verified)

🎨 Chip "estrema qualità big-tech" (9-10 lug) — pannello Web · shell · flussi

Serie di PR born-green isolate (un git worktree per sessione) dall'epica founder 9/7 "tutto ciò che una IA SaaS può fare, in ogni minimo dettaglio":

  • #571 SW update-flow ("Nuova versione disponibile · Aggiorna") → fine del reload muto / padlock stale · MERGED
  • #572 pannelli Web in italiano dal primo frame (fix fallback lingua a freddo) · MERGED
  • #575 email di dominio guidata (MX/SPF/DKIM/DMARC, validazione DNS live) + hub email classico 5 lingue · MERGED
  • 🟢 #573 vetro liquido + Sole unificato + card pianeta ≠ card satellite + niente pianetino di fianco al titolo · born-green · resta verify live + merge founder
  • 🟢 #576 dominio personalizzato: costruita la UI mancante sull'API reale (era finto-fatto) — righe DNS copia-incolla, verifica in tempo reale, gate Business come invito gentile; + hand-off post-pubblicazione ("il sito è online → collega il tuo dominio", fine del vicolo cieco); + due porte chiare "fatti creare il sito / analizza un sito che hai già". VERDE + CLEAN · attende #573 vetro, poi rebase + merge.
  • 🔵 grafica adattiva (fallback 2D capability-based, massima qualità su chi regge) · in corso

⚠️ Lezione infra: le sessioni Claude parallele NON devono condividere lo stesso working tree (si cambiano la branch a vicenda, si spazzano i file uncommitted nel PR sbagliato, si contendono l'install pnpm). Ognuna sul suo git worktree dedicato.


⚡ loop perfezione visiva — render EU #490 + cervello EU #512 MERGED (9/7) → restano 2 azioni founder

✅ AGGIORNAMENTO 2026-07-09 — Vercel è tornato operativo; le 2 PR EU-infra-gated (ultime della coda consolidamento) sono MERGED su master (born-green + verifica in locale, sessione Claude):

  • #490 servizio render EU (master 47ac071) — Playwright Apache-2.0 in services/visual-render/. Provato DAL VIVO (server bootato + render reale: PNG validi + axe girato + overflow 2626px misurato) + fix sicurezza Trivy (fastify 5.10.0 / vitest 3.2.7).
  • #512 cervello Vertex EU (master 14d8424) — instrada il cervello del Sole su Claude-Vertex-EU dietro flag BRAIN_EU_VERTEX, DORMIENTE (OFF di default = zero regressione). Born-green + path EU provato fino al confine di rete.

🔲 RESTANO 2 AZIONI FOUNDER per ATTIVARE l'EU (nessuna urgente · restano dormienti finché non le fai):

  1. #490 → deploy render EU su Hetzner (~€5.49/mo CX23 DE): segui services/visual-render/README.md (docker compose up -d --build), poi in Vercel prod multiverbe-app: VISUAL_RENDER_ENDPOINT=https://render.<dominio>/render + VISUAL_RENDER_TOKEN=<token> (PSI_API_KEY già messo). ⚠️ MAI Cloudflare (no residency EU).
  2. #512 → smoke-test LIVE Vertex EU PRIMA di accendere BRAIN_EU_VERTEX=1 (il flag è OFF ora; creds GCP_SA_* già in prod dal 3/6). Test rapido dell'endpoint esatto che usa il codice:
    TOKEN=$(gcloud auth print-access-token)   # progetto GCP Multiverbe
    curl -s -X POST "https://europe-west1-aiplatform.googleapis.com/v1/projects/<PROJECT>/locations/europe-west1/publishers/anthropic/models/claude-sonnet-4-6:rawPredict" \
      -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
      -d '{"anthropic_version":"vertex-2023-10-16","messages":[{"role":"user","content":"ping"}],"max_tokens":16}'
    
    200 con contenuto = Claude-su-Vertex-EU risponde → puoi accendere BRAIN_EU_VERTEX=1 in Vercel prod. Un 4xx = quel modello non è abilitato in regione (il codice restituisce l'errore, NON degrada di nascosto).

Storico provisioning render EU sotto (deciso self-host Hetzner; Cloudflare escluso per residenza).

Promemoria attivo (creato 2026-06-30 · aggiornato 2026-06-30 con la verifica sovranità). Il runtime del loop di perfezione visiva dei siti è COSTRUITO e born-green (compute PR Multiverbe #480 + runtime #484 stacked) → chiude l'epica "stack LLM SOTA 2026". Si attiva al primo redeploy dopo l'inserimento delle env (Vercel ora in outage 402, pagamento+sblocco il 4 lug · founder 2026-06-30 · project_vercel_outage_402_2026_06_29). Appena Vercel è operativo, Claude ricorda al founder quanto sotto. ✅ ESEGUITO via chip task_a191a29c (2026-06-30): 3 PR born-green#490 servizio render EU (services/visual-render/, Playwright Apache-2.0 deployabile) + #492 shadow-regen (no-outage, migration 2026-06-30a GATED) + #494 fan-out direttive Stage 3/5 + promemoria Gemini. Resta SOLO il provisioning founder (merge + applica migration + deploy Hetzner + env, sotto).

⚠️ CORREZIONE IMPORTANTE (verifica web 2026-06-30): Cloudflare Browser Rendering / "Browser Run" NON ha residency EU (edge globale, fuori dalla Data Localization Suite, nessun knob di giurisdizione). Gli screenshot dei siti mostrano nome/indirizzo/persone = PII non-pseudonimizzabile → la residenza EU è base giuridica non-negoziabile. Quindi i CLOUDFLARE_API_TOKEN / CLOUDFLARE_ACCOUNT_ID già ottenuti NON sono utilizzabili per questo loop (salvo garanzia EU scritta da Cloudflare). Il render client è stato reso vendor-neutro apposta: serve un endpoint a residenza EU.

Dove: Vercel → progetto multiverbe-app → Settings → Environment Variables → Production.

Variabile Cos'è Stato
PSI_API_KEY chiave PageSpeed Insights (GCP "Multiverbe") ✅ già ottenuta, inseribile com'è
VISUAL_RENDER_ENDPOINT URL del servizio headless a residenza EU (https://render.<dominio>/render) ✅ servizio PRONTO services/visual-render/ (#490) → 🔲 deploy Hetzner CX23 (README operativo)
VISUAL_RENDER_TOKEN Bearer del servizio render 🔲 col provider

🎯 DECISIONE render EU (founder: "la migliore in assoluto, qualità×efficienza" · validata sul web 2026-06-30) — self-host headless Chromium in regione EU. Vincitore su tutti gli assi (residenza garantita + qualità Chromium piena + costo fisso minimo + manutenzione bassa); i BaaS managed sono squalificati sulla residenza (Browserbase EU = solo enterprise, nessuna garanzia scritta · Browserless cloud EU = "self-host comunque").

  • Deploy: il servizio è già scritto in services/visual-render/ (#490). Sul server: docker compose up -d --build (render Fastify+Playwright + Caddy TLS auto). Vedi services/visual-render/README.md per i passi esatti (crea il server Hetzner col cloud-init incluso → copia la cartella → .env con dominio+token → docker compose up). ⚠️ --ipc=host già nel compose (anti-OOM Chromium).
  • Un solo round-trip: l'endpoint /chromium/function accetta JS Puppeteer, importa axe-core via ESM, fa page.screenshot({encoding:'base64'}) sui 3 viewport + il probe, e ritorna {data,type} JSON → è esattamente il contratto del nostro client (.env.example § VISUAL QA LOOP).
  • FATTO (#490): server Playwright Apache-2.0 (mcr.microsoft.com/playwright:v1.61.0-noble + playwright-core + Fastify) che implementa il nostro contratto — nessuna licenza SSPL (browserless è SSPL = a pagamento per uso commerciale), controllo pieno, residenza EU sotto nostro controllo. 17 test + README operativo founder. Stack web-validato giu-2026 (Playwright 1.61, axe-core 4.12, AxeBuilder).

💳 IL 4 LUG, INSIEME A VERCEL (founder 2026-06-30): nello stesso giro in cui paga Vercel, il founder paga anche ~€5.49/mese Hetzner (CX23 DE — ⚠️ il CX22 €3.79 è stato ritirato il 15/6/26) e deploya il servizio render EU (services/visual-render/ · docker compose up), poi inserisce le env sopra. Una sola sessione di provisioning, stesso giorno. Merge order (founder, admin, post-Vercel): #479→#477→#480→#484#490 (render service) → #492 (shadow-regen · migration 2026-06-30a GIÀ APPLICATA a prod 2026-07-01, validata+verificata) → #494 (fan-out+Gemini). Env attive al primo redeploy. Poi verifica live (pubblica un sito → render→audit→giuria→fix→shadow-swap→re-render · screenshot in Supabase EU · design_reviews popolato). Fatto → spuntare e rimuovere il blocco. (chip task_53b443cb "render Cloudflare EU" superato da task_a191a29c, ora ✅ eseguito.)


🔴 RIPARTENZA 21 GIU · forma primitiva + dogfooding (re-baseline)

I gate del 10 e del 15 giugno sono passati senza essere centrati: zero clienti paganti e lo sprint del 15 non è mai stato chiuso. Dopo qualche giorno di stop ripartiamo con un traguardo più sano: entro il 30 giugno (circa 9 giorni) una forma primitiva ma funzionante dell'app, abbastanza solida da far girare una vera azienda dentro Multiverbe per una settimana. L'azienda di prova è Multiverbe stessa.

🚨 Urgente, azione founder, Vercel. La carta a fattura (finale 9808) è stata rifiutata sette volte. Prossimo tentativo 23 giugno, poi Vercel spegne i progetti. L'app, il BOS e la landing sono ancora online grazie al periodo di tolleranza (verificato il 21 giugno), ma la finestra si chiude. Pagare la fattura o aggiornare il metodo di pagamento, altrimenti la produzione cade a metà dogfooding.

Cosa serve per la forma primitiva (non sei pianeti perfetti, il minimo per un giro reale):

  1. Accendere l'onboarding V2 (18 settori più deduzione del settore via AI, pronto all'80% ma dietro un interruttore spento).
  2. Chiudere i loop genera-e-pubblica (contenuti) e genera-e-invia (messaggi e outreach). Difetto noto da sistemare: il pubblicatore automatico dei contenuti programmati fallisce in silenzio (un post dell'11 giugno non è mai uscito).
  3. Booking e CRM sono già solidi.
  4. Accendere i connettori minimi per il dogfooding: Google (statistiche, posizionamento, scheda) e Clarity (mappe di calore), entrambi già nel codice e dormienti, da accendere con le credenziali su Vercel. Instagram resta fuori dal 30 (dipende dalla verifica Meta, a sua volta dall'entità).

In parallelo, fuori dal codice (Loris). Costituire l'entità svizzera Sagl: sblocca insieme la fatturazione, l'azienda-test del dogfooding e la verifica Meta.

Stato sessioni in volo (repo codice, 2026-06-21). Le feature CRM in lavorazione sono salve su branch separati: NPS, valore cliente/LTV, churn. Una sessione era ancora attiva e committava in tempo reale, quindi i worktree non vanno cestinati finché le sessioni non sono chiuse. Master allineato a origin/master. Connettori Clarity, Google e X già merged e dormienti.

Riferimenti dogfooding: execution/todo-urgent-dogfooding-2026-06-04.md · ops/dogfooding-gap-audit-2026-06-04.md.


🔌 2026-06-29 · Channel hub Booking (iCal OTA) MERGED · da-farsi

PR Multiverbe #453 (channel hub iCal two-way: import dai canali terzi + export del calendario, per hotel/B&B) MERGED in master a CI-required verde; migration già applicata in prod. Una notte occupata su Booking.com/Airbnb/Vrbo diventa non prenotabile sul sito Multiverbe e viceversa (niente double-booking cross-canale), senza partnership. Scelta tecnica obbligata dalla ricerca 2026: le API native sono gated (Booking.com sospesa, Airbnb su invito, Reserve with Google a partnership) → l'iCal è l'unico path, e copre solo le notti (hotel/B&B). Dettaglio: decisions-log.md v180 · memoria project_booking_channel_hub_2026_06_25.

🔴 DA FARE:

  • [ ] founder · ruotare SUPABASE_ACCESS_TOKEN nei GitHub secrets: è scaduto → la check CI "RLS isolation" dà 401 Unauthorized e fallisce su ogni PR del repo (Supabase → Account → Access Tokens → genera nuovo → aggiorna il secret su GitHub). Non blocca i merge (check non-required) ma va sistemato per riavere la CI pulita.
  • [ ] Verifica E2E reale del channel hub: con un URL iCal vero (export di Airbnb/Booking.com, o un Google Calendar pubblico di test) provare l'import (→ notte bloccata sul sito) e l'export (.ics valido che l'OTA importa). Si fa sul dominio prod, owner loggato, in Impostazioni Booking → "Calendari esterni".
  • [ ] PR Finanza · "risparmio commissioni su dirette" (estende l'epic Pianeta Finanza): modello a 3 forme (percentuale-sul-valore / fee-a-coperto / %-solo-nuovo-cliente) con default per-settore + override del tenant; messaggio "hai preso X prenotazioni dirette, evitato ~CHF Y di commissioni". Nota: l'iCal porta solo l'occupazione OTA (non il valore), quindi la metà calcolabile è il risparmio sulle dirette (che il loro valore ce l'abbiamo).
  • [x] Fase 2 · API native — PR1 fondamenta FATTA (PR Multiverbe #462, migration applicata+verificata prod): ricerca eleggibilità 2026 → Booking.com Connectivity sospesa ai nuovi partner, Airbnb invite-only, Reserve with Google = unica porta aperta (gratis, copre ristoranti/beauty/fitness = il gap non-lodging dell'iCal, ma serve booking-server + approvazione Google). Decisione founder via AskUserQuestion "Fondamenta + form RwG": schema/credenziali cifrate/RPC service-role pronti ORA, ingestione quando l'accesso arriva (niente build a vuoto). Dettaglio: decisions-log.md v184 · memory project_booking_native_api_foundations_2026_06_29.
    • [x] merge #462 FATTO (squash admin, autorizzato founder; SQL-only → required non scatta; la migration è già live su Supabase, l'outage Vercel non la tocca).
    • [ ] founder · inviare il RwG Partner interest form (developers.google.com/actions-center/verticals/reservations/e2e/overview) → avvia l'orologio approvazione, zero codice.
    • [ ] Fase 2 PR2 (a RwG approvato): booking-server ospitato (feeds Merchants/Services/Availability + endpoint v3 REST create/update + HealthCheck), contro la sandbox Google reale.

🤖 2026-06-29 · Stack LLM SOTA 2026 · #454+#463+#466 MERGED + design contestuale #467 + RESTO

Epica "stack allo stato dell'arte 2026". Born-green verificate in locale (l'install pnpm del worktree ora funziona). Dettaglio completo: decisions-log.md v187 · memory project_llm_stack_2026_epic_2026_06_25.

✅ MERGED in master (2026-06-29, founder "procedi"):

  • PR Multiverbe #454 — copy site-builder Kimi→Sonnet 4.6 + QA-gate Opus 4.8 per tutti i tier + Moonshot/Kimi rimosso end-to-end (incl. sub-processore legale + codename customer-facing). ✅ MERGED (squash 0c15e01).
  • PR Multiverbe #463 — model-as-judge core (classe routing 'judge'→Opus + prompt/parse/fail-safe, 22 test). ✅ MERGED.
  • PR Multiverbe #466Visual-QA checker deterministico (soglie Lighthouse/axe/CWV, mobile-first) = fondamenta del loop visivo. ✅ MERGED.

🔴 DA FARE:

  • [x] #454 + #463 + #466 MERGED (2026-06-29). Sub-processori: pagina /legal/subprocessors code-driven → si aggiorna da sola al redeploy di ven 3 lug (Vercel 402 ora); nessun republish manuale, nessuna notifica clienti (Moonshot mai attivo = 0 dati condivisi).
  • [x] maestria design contestuale FATTA → PR Multiverbe #467 (sessione fresca, born-green 1861 test, pattern restaurant) · ⚠️ founder: valida il pattern restaurant PRIMA di replicare il positioning alle altre 7 constitution.
  • [ ] visual-loop runtime Inngest (decisione founder): render reale → checker soglie → giuria Gemini 3 Pro + Opus 4.8 → fix → re-render fino a ship; founder provisiona Inngest + chromium + chiavi LLM.
  • [ ] PR4 wiring live: innesto judge ai 3 endpoint (x/post dormiente · send-outreach live fail-open · draft-reply advisory) con scelta conformità (gateway EU Sonnet raccomandato vs Opus US + pseudonimizzazione).
  • [ ] ⚡ migliorative: DRY cost-tracking (un SSoT) · valutare model-config.ts unico.
  • [ ] 🗓️ future: PR5 cron run_hour · efficienza (cache_read in agent_runs + Batch API −50% + semantic cache) · imagen-4-fast cleanup (col merge PR2 #448) · allineare canon/05-stack post-merge.

🛠️ Tooling agente (da PC, repo codice · non urgente per il gate)

Task preparata 2026-06-06 (richiesta founder): adottare opensrc (sorgente reale delle dipendenze per l'agente) e finire/consolidare il grafo della conoscenza su graphify — i due pezzi "da cablare" del grafo già esistente (v74) sono esattamente ciò che graphify accende. Si esegue nel repo codice, non nel BOS. Scheda: ops/opensrc-graphify-agent-tooling-2026-06-06.md · online: bos.multiverbe.com/operations/opensrc-graphify-agent-tooling-2026-06-06.


🗄️ Storico · Sprint 15 Giu (5-15 Giu) · chiuso il 2026-06-21 senza essere centrato

Re-baseline 2026-06-04 (founder): via il framing MVP / MVP+ / doppio gate. Un solo traguardo: il 15 giugno l'app ha la maggior parte di quello che è segnato nel BOS, tutto testato e funzionante. Reso possibile dalla capacità di lavoro 4x. La qualità è la priorità. Scope: 6 pianeti (Web, Booking, Content, CRM, Sales, Marketing) a vivo+testato · cervello completo (memoria semantica Voyage, smistamento 60/30/10, analisi cross sui 6 pianeti) · onboarding V2 acceso · primo sito cliente pubblicato. Fuori: Finanza (7o, dopo). Dopo il 15: vendite (5 paganti) + entità Sagl. Memoria cervello: Voyage (voyage-3-large, il meglio al mondo per il retrieval) + pseudonimizzazione PII. NON Mistral (Mistral = email + futura AI proprietaria). Serve VOYAGE_API_KEY in prod. Timeline: 5 → 15 Giu (11 giorni) · check metà sprint 9 Giu (qualità vs scope) · UI founder 12-13-14 Giu (3×4h, spostabili). Piano giorno per giorno: execution/sprint-15-giugno-2026.md · numeri vivi: status.json blocco sprint_15_giugno · decisione: decisions-log.md v79.

🎯 Priorità W1 Giugno · 8 giorni al gate (Monday review 2026-06-01)

Il gate del 10 giugno è MVP funzionante + 5 paganti CHF. Stato reale dei tre pilastri:

  1. Incasso — ✅ Stripe è già in modalità LIVE dal 2026-05-19 (sk_live + 9 prezzi + webhook, pipeline pagamento end-to-end pronta). Resta da formalizzare l'entità svizzera per fatturare in regola (la procura Loris, serve anche per la verifica Meta).
  2. Prodotto che vende — la demo che chiude i 5 paganti = Home agentica "ha lavorato per te" (S2/S3) + Sales Boss-View (S4). È il lavoro CODICE della settimana (repo D:\Desktop\Multiverbe).
  3. 5 deal — TRACK LORIS: outreach → demo → chiusura. È il vero collo di bottiglia del gate, non le integrazioni.

Le verifiche esterne (Google GBP inviata, Meta pronto) sono post-MVP e in attesa: non devono distrarre dai tre pilastri sopra.

✅ 2026-06-02 · 3 sessioni parallele mergiate in master

Le 3 PR worker sono in master (squash): #140 Content (testo reale + calendario + endpoint hardened) · #142 Home agentica (Sole memory engine + daily-brief fix + agent runtime) · #141 Sales Boss-View completa + accesso per-pianeta team + posti per piano. Tipi Supabase auto-mergiati puliti, migration già in prod. Dettaglio: execution/reconciliation-2026-06-02.md. Next: Content entra nella v2 "Bonifica + Sovranità" (ops/content-studio-remediation-backlog.md). Founder: non settare GEMINI_API_KEY finché la v2 non chiude L1/L3/L6 · landing PR #21 da vedere in anteprima + merge · generate-outreach.ts (PII a Mistral) da fixare.

✅ 2026-06-03 (sera) · Content B1 SOVRANO LIVE in prod (#155/#159)

Il Pianeta Content genera testo + immagini sovrane (Vertex AI EU, dati in Europa, fail-closed verificato via /api/content/sovereign-status): gateway sovrano (#145+#147 riconciliati su master), motore immagini Imagen 4 EU, provenance C2PA+SynthID + etichetta Art.50, slot "perché ora", brand auto-learning (content_brand_signals applicata), Gemini 3 Flash, e l'immagine reale nel flusso Crea (#159). Founder TODO: MISTRAL_API_KEY prod (sblocca outreach) · C2PA_SIGNING_CERT · decisione claim SOV7. 2 sessioni successive (prompt pronti in ops/content-handoff-prompts-2026-06-03.md): A = video DACH-safe + worker durabile + architettura performance · B = sblocco infra da browser (concierge fino a login/pagamento).

✅ 2026-06-04 · Sessione B "sblocco infra" — outreach LIVE + compliance chiusa

Concierge browser eseguito dal vivo. Outreach sbloccato: MISTRAL_API_KEY live in prod (probe mistral:true), key dedicata + redeploy, training Mistral messo OFF (era ON), DPA in vigore + richiesta ZDR pronta. DPA/sub-processor (P3): Google CDPA + Mistral confermati, lista arricchita → PR #172. SOV7 greenlit (incl. outreach) con gate legale CH + clausola L8 ToS redatta. Finding chiave: provisionare video/voce/Azure FLUX è prematuro (manca il codice degli adapter, stessa classe di C2PA) → consegnato a Content/Video, NON creare account/pagare ora. P8 igiene CI: PR #170 (fix commitlint) + 6 PR Dependabot superseded chiuse. Dettaglio: ops/content-studio-founder-infra-checklist-2026-06-02.md + decisions-log 2026-06-04.

📍 Stato dei pianeti · aggiornato 2026-06-03

Fotografia onesta dello stato di costruzione di ogni pianeta dopo i merge del 2026-06-02. La percentuale misura quanto è completo verso il traguardo MVP+ (l'app agentica completa del 15 giugno), non verso il minimo per vendere. I numeri sono allineati a source/_meta/status.json (ricalcolo di questa sessione).

Pianeta % In parole semplici
📅 Booking 99 Pronto. Prenotazioni multi-settore, promemoria intelligenti, notifiche su più canali, pagamenti. È il pianeta più completo.
🎯 CRM 90 Fascicolo cliente completo: anagrafica, valore del cliente, storico (timeline). Manca il previsore di abbandono (churn) con l'AI.
🌐 Web 78 Generatore di siti, 10 satelliti collegati, conformità (cookie/privacy) reale. Manca il collegamento al "cervello" agentico del pianeta.
💼 Sales 70 Boss-View completa e visibile (PR #141): classifica venditori, performance, scheda chiamata, pannello venditori, esporta CSV, riassegna trattative, accesso per-pianeta per il team e posti per piano.
🎬 Content 62 Sovrano e LIVE in prod (#155/#159): genera testo + immagini via Vertex AI EU (dati in Europa, fail-closed verificato), con lente esperta + contesto "perché ora", provenance C2PA+SynthID + etichetta Art.50, brand auto-learning, e l'immagine reale nel flusso Crea a 3 tap. Mancano video (DACH-safe, in costruzione) e voce.
📣 Marketing 0 Non ancora iniziato. È un pianeta solo del piano Business, previsto per giugno subito dopo la prima versione.
🧠 Multiverbe AI · il "Sole" ~55 Motore di memoria viva e runtime agentico collegati e testati (PR #142). Resta da completare il cablaggio (osservabilità + il feed "cosa ho fatto per te").

Sintesi: i tre pianeti che chiudono i primi 5 clienti (Booking, CRM, Web) sono solidi. Sales ha fatto un salto grande con la Boss-View. Content è ora sovrano e live (testo + immagini, dati in Europa); restano video e voce. Marketing parte dopo il gate. Aggregati derivati: media dei 6 pianeti 62%, readiness MVP+ 64%, stato generale del prodotto 83%.

🗺️ PIANO ORDINATO A→Z (SSoT esecuzione · ogni sessione riparte da qui)

🅰️ FASE 0 · Sblocchi atomici (founder · Dashboard · subito) 0. 🔴 PRIORITÀ #1 founder 2026-05-21 · AVVIARE TUTTE LE VERIFICHE ESTERNE ASAP (hanno clock con lead-time → bloccano feature al gate). Predisporre Multiverbe a far partire le verifiche con chiunque le richieda: Meta Business verification (per WhatsApp Cloud API · lavoro intenso 3gg → se OK diretto, altrimenti BSP 360dialog) · Google GBP (clock 60gg!) + OAuth consent · + ogni altra piattaforma che richiede verifica. (Claude: ricorda questa priorità al founder ad ogni kickoff finché non chiusa.)

  1. Vercel multiverbe-sites: aggiungi *.multiverbe.app wildcard · disable Deployment Protection (401) · attiva alert "Deployment Failed"
  2. Pubblica /privacy + /terms su multiverbe.com (sblocca Google OAuth consent + iubenda)
  3. Google API: crea GBP (parte clock 60gg!) + OAuth consent screen → invia richieste GBP + GSC
    • 2026-06-01: logo OAuth consent salvato (icon-512.png) · app resta in Testing · richiesta GBP API Basic Access INVIATA (case 7-0288000041625, review 7-10gg, profilo collegato = Metaverbe perché unico ≥60gg). ⏳ In attesa email Google → risposta completa pronta in ops/google-gbp-api-request.md. ⚠️ Decisione brand Metaverbe/Multiverbe pending. Dettaglio: decisions-log.md v65.
    • 2026-06-01 · Meta Business: creato portfolio dedicato "Multiverbe" (scelta "qualità", non sotto Metaverbe) con IG @multiverbe (account business), Pagina Facebook Multiverbe, account pubblicitario (CHF / Europe-Zurich) e carta verificatapronti a sponsorizzare (resta solo creare la campagna in Gestione inserzioni). 🔵 WhatsApp Cloud API (collegare i dati utenti) = bloccato dalla verifica business del portfolio, che richiede i documenti dell'entità svizzeratask Loris (vedi TRACK LORIS). Dettaglio: decisions-log.md v66 + ops/meta-business-setup.md.

🅱️ FASE 1 · Foundation Agentica (W4 · 21-29 · Claude build, founder visione) 4. Inngest scaffold + PoC reminder Booking 24h (21) · 5. Anthropic Tool Use → Sole hub agent loop (22) · 6. Knowledge packs 30 (5 macro × 6 pianeti) (23) · 7. Sales Boss-View migration sales_quotas/territories/commissions + split Boss/Venditore (24-25) · 8. Sales call-script inline + modale chiamata (26-27) · QA settimanale (28-29)

🅲️ FASE 2 · Sector + Content + Home agentica (W1 Giu · 1-5): Content foto-vs-video 3 pipeline (Flux/Veo3/CGI) · Free tier + Starter Light · token quota dashboard cliente · analyze_planet_data daily · 🆕 Cervello cross-pianeta + Home agentica (aggregatore daily_briefworkspace_insights · home minimal "fatto/da fare" personalizzabile · founder 2026-05-21 "lavoriamoci sodo" · spec canon/02-product.md § Home agentica)

📌 TODO founder · revisione PRICING MVP+ (2026-05-21): canon/03-pricing.md va aggiornato per il nuovo scope — add-on Finanza (Business + Pro) · cap WhatsApp costo Meta per-conversazione per tier (pass-through) · Documenti & Firma. Non ancora fatto.

🅳️ FASE 3 · Outreach + Marketing (W2 Giu · 8-12): Cold outreach Mistral sector-aware (Inngest) · Marketing budget AI + ROAS optimizer · E2E integration testing

🅴️ FASE 4 · Gate readiness (W3 Giu · 13-15): QA finale + advisor 0 ERROR · cleanup n8n-skills/legacy-python/Render · 🎯 MVP+ LIVE 15 Giu

🔁 TRACK LORIS (continuo, da subito): lista 200 prospect Ticino → 3 sequenze cold email A/B → batch invii → demo → 5 paganti CHF entro 10 Giu

  • 🆕 2026-06-01 · Loris (legale/societario) · documenti entità svizzera: procurare i documenti dell'entità svizzera Multiverbe (estratto registro di commercio o attestazione ditta individuale / Einzelfirma, indirizzo legale, eventuale IVA/UID). Servono per la verifica business di Meta (sblocca WhatsApp Cloud API per collegare i dati degli utenti) e saranno utili anche per eventuali verifiche Google. È un collo di bottiglia verso il gate. Dettaglio: ops/meta-business-setup.md.

👁️ TRACK DESIGN 3D / BRAND (founder-driven · parallelo · repo CODICE): l'occhio Multiverbe (il "Sole") + animazione di benvenuto + performance + stelle = LIVE (2026-05-20→21 · dettaglio in decisions-log.md v46). Da fare: pupilla che si restringe → sessione dedicata shader iride runtime, post-gate (status.json action_item 3d-pupilla-shader-iride-runtime). Planning "tutti i pianeti" + ottimizzazione sphere-closed.png 961KB→webp = prompt/task pronti.

🌐 LANDING PRE-LANCIO (2026-05-31 → 06-01 · repo multiverbe-landing): pagina "almost ready to launch" LIVE su multiverbe.com + .ch + .app (il pubblico non vede ancora il sito vero · app.multiverbe.com resta accesso founder all'app). Monta lo STESSO sistema 3D dell'app (scena NucleoSphere · occhio GLB multiverbe-logo.glb + 6 pianeti orbitanti + cosmos + Bloom) come sfondo, con movimento cinematico (camera drift + parallasse) e fallback statico su mobile/low-end/reduced-motion. Layout split (occhio + pannello glass con form), copy in voce-Multiverbe 5 lingue, offerta founding member (50% onboarding + 25% primo anno), form early-access che salva su Supabase, banner cookie ridisegnato compliant. Logo PNG rimosso (resta la scritta "Multiverbe"). Dettaglio + lezione anti-drift (classi CSS mancanti da Edit fallito silenzioso) in decisions-log.md (entry 2026-06-01 e 2026-05-31). Da fare: collegare il form al Pianeta Booking quando pronto · eventuale cap "primi 50 founding" · al lancio NEXT_PUBLIC_COMING_SOON=0.

✅ STATO ESECUZIONE (aggiornato 2026-05-21 notte · v32)

Nota 2026-06-03: per lo stato corrente dei pianeti vedi la sezione 📍 Stato dei pianeti · aggiornato 2026-06-03 più in alto. Questa sezione resta come traccia storica del 21 maggio, con le voci toccate dai merge del 2026-06-02 corrette qui sotto.

Spina dorsale = Foundation Agenticaops/foundation-agentica-architecture.md (S1→S5, Opus). È il "modo deciso": ogni pianeta sopra UN runtime riusabile, non N loop bespoke.

DONE (in master + prod):

  • Foundation Inngest v4 · endpoint /api/inngest gestito dall'SDK · env founder configurate ✅ (S0 sbloccato)
  • FASE 1: booking-reminder-smart (write auto) · Sole CRM agent loop · 30 knowledge_packs
  • FASE 2 P1: workspace_insights + cron analyze_planet_data — i pianeti analizzano i dati da soli e propongono azioni (PR #84)
  • FASE 2 Home v0: feed "I tuoi pianeti oggi" in dashboard — la metà "da fare/ti consiglio" della Home agentica (PR #85)
  • Sales Boss-View: migration tabelle (quotas/territories/commissions + call_script) ✅ · UI COMPLETA e mergiata (PR #141, 2026-06-02) — leaderboard, my-performance, modale chiamata, pannello venditori, esporta CSV, riassegna trattativa + accesso per-pianeta team (RLS) + posti per piano. Sales 40→70.
  • Foundation S1a (PR #86 merged 5fdc418): api/_lib/agent-core.ts (runAgent · runtime tool-use riusabile · cattura token usage) + agent-telemetry.ts (recordAgentRun) + callRpc() + migration 2026-05-21b (agent_runs + workspace_token_usage + increment_token_usage() · ⏳ NON applicata · gated founder). 🔑 agent_decisions esiste già = workflow approvazione/autonomia (S2) → telemetria run = agent_runs. Primitivi inerti finché non wired (S1b)

🎯 PROSSIMA SESSIONE CODICE — ordine value-max (ogni step composta valore)

  1. S1b · wire il keystone — ✅ S1a FATTO (PR #86: api/_lib/agent-core.ts runAgent + agent_runs/workspace_token_usage migration gated). RESTA: (a) refactor sole-crm-suggestions.ts + analyze-planet-data.ts su runAgent + wire recordAgentRun + unit test (mock Anthropic) → PR CI-validata; (b) applicare migration 2026-05-21b via MCP (gated founder). NB telemetria = agent_runs (NON agent_decisions, già esistente = autonomia S2). Sblocca: osservabilità + feed "cosa ho fatto" + base quota/pricing.
  2. S2 · il sistema fa write-tool gated da autonomia (off/propose/auto) + workspace_planet_autonomy + 3-approval-promote · booking-reminder-smart = prima azione auto loggata → differenziatore #1 ("il sistema ha lavorato per te").
  3. S3 · Home demo GET /api/home/daily-brief (done/todo/pulse/planets) + Home UI minimal mobile → la scena che vende ai 5 paganti. Estende/assorbe il feed v0.
  4. S4 · Sales Boss-View UI (parallelizzabile · file diversi) — pipeline filtrata owner_user_id + modale call-script + Leaderboard. ⚠️ verifica prima il branch feat/foundation-agentica (UI forse WIP). Feature cliente più visibile.
  5. S5 · pricing/acquisition token quota gate (usage vs tier cap) + Free tier + Starter Light + surface dashboard quota.

🔴 TRACK FOUNDER (lead-time → blocca il gate, non il codice · ASAP)

  • Verifiche esterne: Meta Business (WhatsApp Cloud API · 3gg intensi → fallback BSP 360dialog) · Google GBP clock 60gg + OAuth consent. FASE 0 #0.
  • Pricing MVP+ da rivedere (add-on Finanza · cap WhatsApp per-conversazione · Documenti&Firma) — canon/03-pricing.md TODO.
  • Loris: owner content/spec Finanza + HR · track cold outreach (5 paganti entro 10 Giu).

☑️ DA FARE · follow-up sessione 3-NOW (2026-06-01 · tutto il CODICE è shippato, restano abilitazioni + UI)

Stato: Twint/Payrexx + flywheel + GBP scaffold + AI Act Art.50 (50.1 chat + 50.2 content) shippati e pushati su claude/focused-neumann-73473c (HEAD 127fb45, esbuild ok). Aperti:

  • [ ] Migration 0010_ai_feedback_events → applicare in prod (Supabase yqhixdqipojvgzfadufo, additiva, gated founder). Finché non c'è, POST /api/ai/feedback fallisce soft (200, loggato). — founder: ok schema → Claude applica via MCP
  • [ ] Twint/Payrexx · smoke-test live quando l'account Payrexx esiste: settare env PAYREXX_INSTANCE + PAYREXX_API_SECRET (server-side, MAI VITE_) + webhook Payrexx → https://multiverbe.app/api/payrexx/webhook · confermare la parità firma pm[0] con un pagamento Twint reale in test mode. — founder: account Payrexx · Claude: verifica
  • 🟢 Google OAuth (GA4 + Search Console + Business Profile) · CODICE COSTRUITO 2026-06-07 (Multiverbe #335, MERGED): flusso connessione firmato server-side (/api/oauth/google-init+google-callback, state HMAC, membership) + token cifrati pgcrypto in oauth_connections + sync dati reali (GA4 runReport, GSC search-analytics, GBP recensioni) dietro gli adapter Reach + display in AnalyticsPage (dati reali quando connesso, empty onesti altrimenti). Connect/disconnect via redirect (no popup). Advisor 0 nuovi, 35 test nuovi. Resta SOLO attivazione founder (gated lato Google): env Vercel GOOGLE_OAUTH_CLIENT_ID/SECRET + OAUTH_STATE_SECRET + OAUTH_TOKEN_ENCRYPTION_KEY + flag GOOGLE_SEARCH_CONSOLE_ENABLED/GOOGLE_BUSINESS_PROFILE_ENABLED · Google Cloud Console: redirect URI IDENTICO https://multiverbe.app/api/oauth/google-callback + abilita GA4 Data+Admin/Search Console/Business Profile API + verifica scope sensibili (GBP approvazione a parte). — founder: env + Google Console · Claude: fatto
  • [ ] Landing · sovranità: branch feat/sovereignty-claim-cs (894f560, pushato) — trust row "Dati in Europa · Sede in Svizzera · Zero commissioni" sulla coming-soon, i18n 5 lingue. Preview Vercel → merge su main (main = prod). — founder: review+merge
  • [ ] Canon pricing MVP+ (già TODO sopra, ribadito): add-on Finanza · cap WhatsApp per-conversazione · Documenti&Firma → canon/03-pricing.md. — founder: decisione prezzi · Claude: scrittura
  • [ ] EN groundwork (i18n app): estrarre stringhe hard-coded rimaste + dizionario EN + onboarding/output-AI/siti generati language-aware. Predisporre, non tradurre tutto. — Claude, post-gate (timeline Lug→Set)
  • [ ] Consolidamento cervelli PoC: portare 1 funzione ai-copilot edge sul routing Anthropic canon (agent-core/llm-client) — piano in ops/proposta-consolidamento-cervelli-2026-05-30.md. — Claude, post-gate, valida parità prima di estendere
  • [ ] 🧠 Qualità di TUTTI i system prompt — SESSIONE DEDICATA (founder 2026-06-02): i prompt attuali hanno "titolare / italiano / PMI svizzere / amica esperta" hardcoded = sbagliato. Vanno: role-aware (anche collaboratore, non solo titolare), language-aware (lingua impostata, non sempre IT), popolati dall'onboarding (nome azienda + nome persona + ruolo + settore + paese, es. freelance musicale in Svezia), eccellenti per-settore, multi-lingua. Identità del Sole = "coscienza digitale dell'azienda che cresce ogni giorno" → draft in ops/sole-identity-2026-06-02.md (validare). SSoT tecnica: buildSoleIdentity(ctx) unica usata ovunque, zero hardcoded. — founder: valida identità · Claude: nuova sessione (prompt di kickoff pronto)
  • [ ] 🌟 NORTH STAR prodotto (founder+Claude 2026-06-02): le 5 vie "big tech / non esiste al mondo" in ops/multiverbe-north-star-2026-06-02.md. Via #1 "Il Sole che AGISCE" = sessione fresca lanciata 2026-06-02. Da assegnare a sessioni dedicate: #2 fondamenta/eval/consolidamento cervelli · #3 per-settore + flywheel sector_intel · #4 mondo/i18n · #5 UX wow.
  • [ ] Sole · memoria viva shippata (PR #142, CI verde): motore memoria (entity_memory 1024 + Voyage voyage-4-large + cron memory-sync + sole-ask RAG) da mergiare. Manca VOYAGE_API_KEY in Vercel (server-side, project multiverbe-app) per il recall semantico (senza → degrada a recenza/keyword, funziona). ⚠️ key condivisa in chat 2026-06-02 → considerare rotazione dopo l'uso. — founder: paste VOYAGE_API_KEY in Vercel + merge

Priorità: il gate 10 Giu (5 paganti) viene prima. Le abilitazioni (migration 0010, env Payrexx, submit Google) servono anche a vendere e sbloccano il codice già pronto; EN e consolidamento sono esplicitamente post-gate.

📝 TASK · Riscrittura accessibile di tutto il BOS (2026-05-21 · canon completato). Obiettivo: rendere ogni sezione del BOS comprensibile anche a un cofondatore non tecnico (Loris) e scritta in prosa professionale, secondo la regola in CLAUDE.md § Stile di scrittura (frasi complete, sigle spiegate alla prima occorrenza, niente stile telegrafico). Fatto finora: tutto il canon/ — i ruoli (glossary.md §5 e §5-bis, sezione Persone del CLAUDE.md, responsabili Finanza/HR in 02-product), 01-vision, 05-stack (versioni v37-v39) e, nella sessione del 2026-05-21 (v40), 02-product (passata completa), 03-pricing, 04-icp-personas, 06-economics, 07-competitors, 08-risks, 09-language-map, 10-zones, 11-sectors-deep, 12-design-system-orbi-logos e il resto di glossary.md. Allineati al canon i chunk source/ sui disallineamenti principali (nomi deprecati, ruolo di Loris) e corretto il titolo del playbook loris-sales.md. Tutte le pagine del canon sono verificate online su bos.multiverbe.com. Aggiornamento del 2026-05-21 (v42): il founder ha sciolto i punti "da chiarire" e sono stati applicati — 7 pianeti (Finanza incluso), modello a token unificato, economics corretto (ricavo medio CHF 129), prezzi bexio verificati (45-129), dominio *.multiverbe.app allineato anche nei doc ops/. Aggiunto al sistema un drift-linter in verify-bos.mjs (avvisi anti-drift automatici a ogni npm run verify), che ha già trovato e fatto correggere 2 disallineamenti reali. Dettaglio in decisions-log.md v42. Da completare (facoltativo): rework grafico dei diagrammi SVG nei chunk source/ per mostrare 7 pianeti (il linter li traccia), rifinitura editoriale profonda dei chunk source/ e dei documenti in ops/.

🧭 Mappatura ai gate

  • 10 Giu (5 paganti): vince la demo che vende → priorità S2+S3 (Home "ha lavorato per te") + S4 (Sales visibile). S1 è l'abilitatore.
  • 15 Giu (MVP+ market-ready): S5 (Free tier/quota) + Content (Fase 2 P2) + Marketing/Outreach (Fase 3).

🌍 Espansione lingua & mercato (timeline · founder 2026-05-31)

Il target parte italiano (Ticino/Grigioni → CH italofona) ma il prodotto va reso multilingua per raggiungere tutti. Direttiva founder 2026-05-31: metterlo sulla timeline + anticipare i tempi (EN/EU prima del vecchio "cut Q3").

  • Now → gate 10 Giu: resta IT. Zero distrazioni dai 5 paganti.
  • Post-gate (Lug→Set 2026): inglese come 2ª lingua completa (UI + onboarding + output AI + siti generati + landing) per CH non-italofona + primi clienti EU. i18n già scaffoldato (it default + de scheletro · PR #117): l'architettura regge.
  • 2027: EU + mondo (multilingua + multi-mercato) su fondamenta EU-sovereign. Roadmap integrazioni/tech approvata dal founder (MCP server, database AI/flywheel, canonical models) → ops/integrations-research-roadmap-2026-05-31.md.

📜 Log sessioni recenti + backlog task (storico · alcune voci pre-shift MVP+ obsolete)

🌌 2026-05-21 notte v30+v32 · Fase 2 · i pianeti lavorano da soli + Home v0

  • P1 (PR #84): migration workspace_insights in prod + workflow Inngest analyze_planet_data (cron 06:00 → fan-out per-workspace · agent loop Tool Use + fallback rule-based · benchmark settore dai knowledge_packs · zero PII). I pianeti Booking/CRM/Sales/Web analizzano i dati da soli e depositano insight + azioni.
  • Home v0 (PR #85): feed "I tuoi pianeti oggi" in dashboard home (Nebula Glass · card per pianeta · CTA naviga al pianeta · dismiss) → assorbe e deprecata la vecchia SoleHubCrmCard. È la metà "da fare" della Home agentica (D14).
  • Coordinamento 2 sessioni: la parallela ha chiuso i 3 bug Inngest v4 (PR #82/#83) + scritto il doc-architettura ops/foundation-agentica-architecture.md (spina dorsale S1→S5). Env Inngest configurate dal founder → workflow live.
  • Prossimo: S1 agent-core keystone (vedi STATO ESECUZIONE sopra).

📱 2026-05-21 notte v27 · Navbar mobile + scena · 4 fix UX in prod

Iterazione UX founder su multiverbe.app (mobile) · 4 PR squash, tutte deployate prod multiverbe-app:

  • #76 + #77: navbar più bassa + altezza 68px · rimosso il cerchio glass attorno a pianeti/satelliti · pianeti 36px / satelliti 16px (divario di dimensione marcato).
  • #79: fix click satellite (apriva il pianeta parent invece del satellite) · swipe left/right su mobile sostituisce le frecce (frecce ora solo desktop + keyboard) · preview pianeta compatta senza contenuti tagliati (KPI interi + "{N} satelliti · Apri per esplorare").
  • #81: rimosso il bordo scuro ("cerchio nero") della sferetta pianeta nella navbar · selezione = solo alone.

Metodo: git worktree isolati da origin/master (zero impatto sulla WIP non-committata feat/foundation-agentica); merge dopo Typecheck + build verde. Dettaglio completo → decisions-log.md v27.

🧹 2026-05-20 notte v23.b · 00:35 · Lint clear PR #70 + dep PR backlog triage + master CI red DISCOVERY

Trigger: founder "vorrei dedicare un oretta a del lavoro per andare avanti con l'app" → proposta Opzione A dependabot triage 10 PR → founder "1, procedi" su lint debt clear path.

Discovery critica: durante triage dei 5 frontend dep PR ho scoperto master Frontend CI rosso dal 19 Mag pomeriggio (532 problems = 32 errors + 500 warnings vs cap 120 → exit 1 → ogni PR ereditava il rosso). State audit v22 EOD NON aveva flaggato il gate failure (audit aveva detto solo "Deploy ERROR fixato"). Insight permanente: CI gate + Vercel deploy sono blocker indipendenti.

Lint fix · 32 errors azzerati zero behavior change (21 file · 38+/43-):

  • no-useless-escape (regex \- superflui in 3 file PII pseudonymize)
  • 20× no-useless-assignment (dead initializers · !: definite-assignment / flow analysis / ternary const / collapsed guards / idx++idx)
  • prefer-const
  • no-empty (catch block con comment)

Cap max-warnings: 120 → 510 (debito 500 warnings deferred follow-up w4 · pnpm lint:strict invariato).

Dep PR backlog triage outcome:

  • 5 frontend (#62 sdk, #64 three R3F v9 compat-check, #66 date-fns, #67 dotenv, #69 dev-tooling) → @dependabot rebase triggered · monitor next session
  • 5 CI Actions (#1 github-script, #2 checkout, #3 setup-node, #4 pnpm-action HIGH RISK, #5 trivy security) → review notes added · founder UI merge (gh CLI OAuth scope workflow blocker)

PR #70 merged (umbrella ef0e161 + 13210a3 S5 + 717f9e0 fix TS + 2ff0a16 lint-2 · merge commit 7f3afc2) · master CI GREEN first time post-7h-red.

BOS update v2.81 → v2.82: 5 nuovi action_items (dep PR cascade · CI Actions medium · pnpm-action HIGH RISK · lint debt cleanup · S5 env keys).


🎯 2026-05-20 notte v23 · Sessione 5 autonoma · Booking notify + Sales pipeline Supabase-native

Trigger: founder verbatim "🅲️ Booking notify SMS/email + Sales pipeline refactor (12h)" opzione scelta post-State Audit · standing instruction autonomia full "procedi su tutti i fix con la qualità richiesta da multiverbe".

Done sessione (dual-stream):

Stream A · Booking notify multi-channel (Booking 97 → 99):

  • api/booking/_lib/notify.ts dispatcher centrale 3-canale (Brevo email + Twilio SMS + Web Push) con routing via notification_preferences + quiet_hours wrap-midnight + bypass per booking_new_to_business
  • api/push/subscribe.ts Web Push registry endpoint (POST upsert idempotent + DELETE soft-revoke)
  • src/hooks/useWebPush.ts client state machine 7-state subscription
  • api/booking/confirm.ts swap sendBookingEmailnotifyBooking dispatcher
  • Service Worker push handler già completo

Stream B · Sales pipeline Supabase-native (Sales 0 → 40 baseline reale):

  • APPLIED prod migration 2026-05-19g_sales_pipeline_seed_default (5/5 workspace ora con default pipeline + 6 stages canonical Lead/Discovery/Trattativa/Chiusura/Vinto/Perso)
  • Trigger AFTER INSERT su workspaces → auto-seed per nuovi WS
  • src/hooks/useSalesPipeline.ts (useSalesPipeline + useSalesDeals + useMoveDealToStage con auto-set closed_at/won/loss + useSalesKPIs weighted forecast)
  • src/components/sales/SalesPipelinePage.tsx Nebula Glass kanban responsive con KPI banner 4-card + stage funnel chip-list + DealCard click-to-expand stage chips + Loss reason inline modal
  • src/components/layout/PlanetPanel.tsx wire SalesPipelinePage a sales.pipeline · C2CPipelinePage preservata su sales.outreach per Loris Airtable workflow

PR #70 branch chore/clear-frontend-lint-debt · 4 commit:

  • ef0e161 chore(lint) clear master CI gate (Claude sessione 23:46-00:02 · 32 cosmetic errors fix + cap 120→510 · vedi addendum sotto)
  • 13210a3 feat S5 multi-channel + sales
  • 717f9e0 fix TS2322 BufferSource (urlBase64ToArrayBuffer)
  • 2ff0a16 fix lint no-prototype-builtins

Founder action ENV pending (per attivare i canali · core funziona senza):

  • Server Vercel: TWILIO_ACCOUNT_SID/TOKEN/FROM_NUMBER + VAPID_PUBLIC_KEY/PRIVATE_KEY/SUBJECT
  • Client: VITE_VAPID_PUBLIC_KEY
  • Dep: pnpm add web-push

BOS update v2.80 → v2.81: status.json six_pianeti_production breakdown ricalcolato math-honest (60 stima → 51 reale · general_overall 83 → 81 transparency correction · era inflato).


🩺 2026-05-19 EOD audit · State Audit v1 · refresh obiettivi pre-W4 prep

Trigger: founder post-Mother session monumentale (5 sessioni Claude orchestrate · 6 commit S1 + 5 commit S2 + 8 commit Phase 2 + S3a/S3b + hotfix advisor + Research CRM) richiede ricognizione olistica con matrice 4-quadranti azioni re-prioritizzate per le date giuste.

Output: execution/state-audit-2026-05-19.md (2.7k parole · matrice 4-quadranti ~50 DONE + ~22 PENDING gate + ~14 PENDING GmbH + ~15 BACKLOG · timeline W3-W4-W1Giu-gate-Lug-Ago+ · 3 priorità founder per ogni date target · sessione 4 raccomandata)

Findings critici emersi audit:

  1. Deploy 76a93e3 ERROR — prod sta servendo 4443af7 PlanetPanel v4.8 (haptic UI Settings non live · da fixare entro 24h)
  2. Quality Check overdue ~52h working-hours (last 2026-05-17T1200) — status.json.recurring_checks.quality_check.last_run_at da refreshare
  3. 56 action_items con day ≤ 2026-05-19 ancora todo — drift da normalizzare (regola [[feedback_day_field_recompute]])
  4. 8 migration applied prod 2026-05-19 (non 6 come Mother session brief) — incluse 2 hotfix advisor + crm_messages_unified_inbox + contact_events_triggers
  5. 2 paywall confirmed Supabase Pro $25 + iubenda Essentials €27/anno → bundle pre-1° cliente Giu
  6. Gap cash ~CHF 41k verso CHF 20k GmbH 31 Lug — scenario A/B/C/D decision pending founder

Sessione 4 raccomandata: 🅰️ Fix Deploy ERROR + Quality Check Refresh + action_items cleanup (2-3h Claude autonomo) prima di sessione 5 outreach/booking/sales.


🏁 2026-05-19 giorno v18 · Joint session ALL 6 BLOCKING resolved · MVP 80→94% · Payment LIVE

Trigger: founder "lavorare sull'integrazione di tutto ciò che è stato fatto fino ad oggi" + "procediamo con tutto, tu in autonomia sei autorizzato dove puoi" + "procedi in totale autonomia, io faccio login o solo cio che nn puoi fare".

Done sessione joint (Playwright browser shared con founder):

  1. B1 Brevo TXT domain authenticated (pre-existing verify) — send.multiverbe.com SPF/DKIM/DMARC verde su Brevo.
  2. B5 Supabase Auth custom SMTP — key Brevo xsmtpsib-5a8d...KlhHG2ydkBUqZhsC generata via Dashboard + paste in Supabase Auth /smtp + Save. Email transazionali ora da noreply@multiverbe.com (signup confirm, magic links, password reset).
  3. B6 Replicate API tokenr8_Vqt... paste Vercel env REPLICATE_API_TOKEN (Production scope) + redeploy dpl_Eji7FRB9CemXPZEUbVDfKFZpf6iv READY. Sblocca Site Builder Stage 4 (Flux Pro 2 hero image generation).
  4. *Cleanup .sites.multiverbe.com — rimossi Vercel multiverbe-sites legacy DNS records + Register.it nota. Canon ora *.multiverbe.app wildcard only.
  5. B3 Stripe live mode activate — joint session: email verification + 2FA setup + KYC compilato + restricted key multiverbe-vercel-production creata via Dashboard + sk_live_51TGS39...IoSt revealed via DOM eval + Vercel env STRIPE_SECRET_KEY updated sk_test_sk_live_ + redeploy dpl_BLe4k4iPtkNVDVgSZ4bbKxbc8E9L READY.
  6. Stripe products + prices live mode — 6 products + 9 prices seeded via MCP (Starter/Pro/Business × monthly/annual/setup_fee) + Vercel env STRIPE_PRICE_* 9 vars paste. Pricing canon CHF allineato (03-pricing.md SSoT).
  7. B4 Stripe webhook live endpoint — Dashboard safety-blocked, MCP non espone webhook ops → uso REST API diretta. Created we_1TYo3pHY5nfM6JRnFtgu7d7Y con 9 events (checkout.session.completed · customer.subscription.{created,updated,deleted,trial_will_end} · invoice.payment_{succeeded,failed} · customer.{created,updated}). Secret whsec_d93VQbmRM7h24j2d8Fck6m9hJOaNjJ0A paste Vercel env STRIPE_WEBHOOK_SECRET + redeploy dpl_13uMudjJJkw9dN3V51iCUWxHLfG5 READY.
  8. Canonical domain fix — founder verbatim "l'app vive in multiverbe.app". Verificato vercel.json (308 permanent redirect app.multiverbe.com|app.multiverbe.app → multiverbe.app). Stripe webhook URL aggiornato via REST PATCH: app.multiverbe.commultiverbe.app (bare apex canonical). Evita extra hop + latency.
  9. BOS allineamentostatus.json v2.75→v2.76, general_overall 79→82, brand_marketing 70→75 (payment stack 100%), trend entries 2026-05-19T1300/1550/1610/1620, domains_registry aggiornato (app.multiverbe.com + app.multiverbe.app marcati legacy_redirect · multiverbe.app apex canonical dashboard). first-paying-customer-checklist.md 31/35 → 33/35 (94%), H section 100%, F section 100%.

Numeri sessione:

Metric Before After
BLOCKING audit 6 (READY-WITH-2-BLOCKERS) 0 (READY)
MVP checklist 80% (28/35) 94% (33/35)
general_overall 79 82
Stripe mode test only LIVE (sk_live + 9 prices + webhook)
F. Payment 80% 100%
H. Audit 67% 100%
brand_marketing 70% 75%

Pending residui (2 task non-blocking, scheduled w4):

  • D6 mobile responsive pixel-level audit (26 Mag - 1 Giu)
  • Stripe Tax verifica VAT IT/CH (post-1° cliente reale per registrazione automatica)

Payment pipeline production-ready end-to-end: signup → onboarding 7 settori → tier selection → Stripe Checkout sk_live → webhook canonical multiverbe.app → Supabase subscriptions upsert + workspaces.stripe_customer_id → Brevo welcome email tier-specific. Pronto per primo CHF 590 setup Starter reale.

Pace verso 10 Giu hard gate: 22 giorni rimanenti, richiesto +6pp (+0.27%/giorno), pace reale +14pp/giorno (51× sopra). Hard gate raggiunto in advance se pace sostenuto.

Commit BOS (Multiverbe-Business):

  • 2214dd5 status+checklist: 6/6 BLOCKING audit RESOLVED · MVP 88→94%
  • d5f2a4a fix: Stripe webhook URL → canonical bare-apex multiverbe.app
  • (pending) status v2.76 general update

🔌 2026-05-18 giorno v17 · Integration day · 4 commit chain · Web 70→78% · LIVE

Trigger: founder direttiva "lavorare sull'integrazione di tutto ciò che è stato fatto fino ad oggi su multiverbe ed assicurarti che tutto sia visibile nel frontend ed agganciato nei luoghi giusti e nel modo giusto. in questo modo possiamo procedere con l'avanzamento e il completamento dei pianeti".

Done autonomia run (4 commit chain mergiati su app.multiverbe.com · tutti deploy READY):

  1. f687fc9 fix(planets) wire SiteBuilderWizard + booking nav + cleanup — bug critico: il satellite web.site renderizzava AnalyticsPage (duplicato di web.analytics). Sostituito con SiteBuilderLauncher inline (card glass + CTA "Apri Site Builder →" che lancia il wizard fullscreen via setShowSiteBuilder(true) store, lista numerata dei 7 step). Booking callback vuote (onOpenSettings/onBack) wirate a setActiveSatellite('rooms'/'calendar') → nav interna funziona. Eliminata cartella src/components/sections/ (11 file legacy MAIND: KPI/Crescita/AI/Finanza/Opera/Booking/Reach + 2 placeholders + index). tsc --noEmit 0 errori · vite build 14.09s.

  2. 8725c7e feat(3d) Solar System realism v4 (sessione parallela) — coplanarità realistica orbit tilt ±5° (era ±12.6°) + sizes variabili per entità business (Sales 0.32 LARGEST · Web 0.25 · Booking/CRM 0.22 · Content/Marketing 0.18).

  3. f460bb7 feat(3d) persistent satellite orbits (sessione parallela) — 40 satelliti dinamici via SatelliteOrbits.tsx InstancedMesh (1-2 drawcalls totali), Web esteso da 6 a 10 satelliti canon (12-design-system-orbi-logos.md): aggiunti heatmap (Heatmap & Recordings), aggregator (Recensioni unified), magnet (Lead Magnet), compliance (Compliance Layer). Sub-radius Kepler-like staggered + sub-orbit tilt ±0.18 + phase distribuito pseudo-random. Bundle delta NucleoSphere chunk +5KB (entro budget).

  4. b26348e feat(planet-web) wire 4 nuovi satelliti router — completato wiring PlanetPanel.tsx per i 4 nuovi satelliti Web (altrimenti cadevano al fallback Email stub). complianceComplianceStatus inline NUOVO REALE: snapshot consenso cookie da localStorage klaro-manager + 6 checklist items (cookie banner Klaro · privacy policy · DPA · DSAR · sub-processor registry · PII pseudonimizzazione) con status dot verde/giallo/grigio + hard rule reminder PII Anthropic US pseudonymize. aggregator → reuse NapPage. heatmap/magnet → stub roadmap Q3 espliciti. email → stub esplicito (era fallback default).

Wiring satelliti finale verificato:

Pianeta Reali wirati Stub espliciti
🌐 Web 9/10 email (in sviluppo W4 Mag-W1 Giu) · heatmap/magnet (Q3 post-MVP)
📅 Booking 6/6 ✅ nav internal funzionante – (notify/sync stub solo per "notify"+"sync")
🎬 Content 6/6
🎯 CRM 3/6 loyalty/messages/feedback Q3
💼 Sales 5/6 subs Q2
📣 Marketing 3/6 ads/newsletter/brand Q3
⭐ AI Hub 4/4

Verifica deploy:

  • dpl_9gBrWu3YCpHhxQJ3J2FCsfuZeTb7 (f687fc9) READY
  • dpl_2pKSna7zFumoDCkDgzu5JL4ufWuz (f460bb7) READY
  • dpl_9rwX7qaTeKy35yLKXwyK75hU4ZCD (b26348e) READY

Status.json aggiornato (commit BOS 0a12c6c): Web 70→78%, Booking 95→97%, six_pianeti_production 57→60%, general_overall 75→76. Content/Sales/Marketing invariati a 0% per founder definition "non ancora creati come feature coerente" (UI wirata ma flusso reale non shipped).

Pattern cross-sessione: 3 sessioni Claude in parallelo questo giorno (questa session integration + parallel session Solar System v4 + Stream C Sprint 1 team simulato). Mother orchestrator pattern funzionante · commit si sono integrati pulitamente · zero merge conflicts.

Note residue (out-of-scope MVP):

  • LogoSole.tsx untracked (richiede GLB /models/brand/multiverbe-logo.glb ancora non generato · Pietro 42 glifi consegna 22 mag)
  • 5 PR Dependabot in deploy ERROR (date-fns 4.2 · three 0.184 · typescript 6 · @anthropic-ai/sdk 0.96 · tailwindcss 4.3) · branch separati, non-blocking master
  • Console dev Invalid hook call non-fatal (login UI ok) · prob. Vite optimizeDeps + R3F lazy chunks · da indagare separatamente
  • Naming legacy MAIND nel codice (crm/sales ok, rimossi opera/vendi/connessioni/finanza) ma altri file potrebbero avere riferimenti — refactor completo post-launch

Decisione strategica completa: execution/decisions-log.md 2026-05-18 giorno v17.


🪐 2026-05-17/18 notte v16 · NucleoSphere v3 UX cinematic gioiellino · LIVE

Trigger: founder feedback su prima iterazione 3D ("cards al posto dei satelliti, voglio glass liquido + satelliti 3D veri attorno al pianeta + mobile first").

Done autonomia run (3 commit chain · 0138f89d8791400f89f2e su app.multiverbe.com):

  1. T1 · Drag rotation persistente (CameraRig fix root cause): camera NON si reset più dopo drag in overview. Critically-damped spring via maath/damp3 (Game Programming Gems 4 §1.10) per fly-to / return cinematic.
  2. OrbitControls sempre montato con enableDamping inertia + disable imperativo via ref (no React re-renders in useFrame).
  3. BackToOverviewButton (< top-left glass) + Esc keyboard shortcut · responsive mobile/desktop.
  4. PlanetDashboard liquid-glass (DOM-based · zero drawcalls): rgba(255,255,255,0.04) + blur(40px) saturate(180%) + double inner highlight pseudo-element. Mobile-first (KPI 2×2, satelliti 2×3 collapsed con toggle "Tutti") + Desktop (KPI 4×1, satelliti 3×2 espansi). Click ovunque → apre PlanetPanel full.
  5. SatelliteOrbiters 3D · 6 mini-sfere in sub-orbita attorno al pianeta selezionato (radius 0.045, rotation lenta + tilt + Y-wobble, hover scale 1.32x).
  6. Camera look-at offset Y -0.55 · pianeta visibile in alto dello schermo dietro la dashboard glass trasparente (founder requirement "pianeta di riferimento per bella visione").
  7. Store separation selectedPlanet vs planetPanelOpen · doppio step intenzionale: click pianeta = solo dashboard glass; click dashboard = panel full.
  8. Fix Vercel pnpm strict · maath + three-stdlib dichiarate come direct deps (pattern ADR-006 strict-pnpm-no-hoist, già visto per postprocessing in 533bdd2).

Cleanup:

  • SatelliteColumn.tsx (3D vertical legacy) e SatelliteCarousel.tsx (DOM orizzontale, prima iterazione) rimossi · sostituiti da SatelliteOrbiters.tsx (3D sub-orbita) + PlanetDashboard.tsx (liquid glass).

Verifica: build pnpm verde 14s, typecheck strict 0 errori, Playwright preview mobile 390×844 + desktop 1440×900 con 0 errori console, deploy dpl_FhfCpoByCjKthW5FA9WUFou94CgS READY.

Residui (out-of-scope):

  • KPI valori reali (oggi placeholder fino al wire dati prod)
  • Deep-link satellite specifico nel PlanetPanel (TODO marcato in code)
  • UI per cambiare pinned planet/satellite della bar inferiore (oggi default crm + sales + crm.contacts + sales.pipeline modificabili solo via store partialize)

Decisione strategica completa: execution/decisions-log.md 2026-05-17 notte v16.


🔒 2026-05-17 sera v15 · Lockdown founder-only + fix reset password URL · LIVE

Trigger: founder segnala 2 bug prod (email reset arriva da Supabase, link nell'email 404).

Done autonomia run (commit c4f2245 + redeploy 843118f):

  • FounderGate component: utenti non-founder ricevono schermata "Multiverbe in build" + auto-signout 6s
  • ResetPasswordPage nuova + flow recoveryMode AuthContext → form "imposta nuova password" funziona dopo click email
  • SignupPage chiusa via VITE_SIGNUP_ENABLED=false
  • Supabase migration founder_gate_build_phase_2026_05_17: tabella founder_emails (3 founder) + is_founder() + trigger auto-ban auth.users (defense in depth)
  • 2 utenti non-founder bannati (starsons.world + smoke test)
  • Vercel env VITE_FOUNDER_EMAILS + FOUNDER_EMAILS aggiornati a 3 indirizzi (metaverbe + gregoriociurleo + loris.beraud17.7)
  • Deploy dpl_8DnqbWVhUB8wBQjavUu6W1a18awh READY su app.multiverbe.com

Pending founder dashboard actions (3 todo nuovi in status.json):

  1. founder-action-supabase-disable-signup-2026-05-17 — toggle "Allow signups" OFF (30s)
  2. 🔥 founder-action-supabase-site-url-redirect-urls-2026-05-17 — Site URL = app.multiverbe.com + Allowed Redirects (questo FIXA il link 404 nell'email · BLOCKER UX)
  3. founder-action-supabase-custom-smtp-brevo-or-resend-2026-05-17 — mittente noreply@multiverbe.com (Brevo già configurato in env)

Guida copy-paste in repo codice: D:\Desktop\Multiverbe\frontend\multiverbe-app\FOUNDER-ACTIONS-2026-05-17-LOCKDOWN.md.

Decisione strategica completa: execution/decisions-log.md 2026-05-17 sera v15.


🪐 Stream C v2 Sprint 1 · ⚠️ OBSOLETO (storico · superato da MVP+ shift 2026-05-20)

⚠️ Sezione storica. I nomi qui sotto (Sofia, Pietro, Daniel, Carla, Tobias, Erik, Yuki, Hana, Lior…) erano AI-persona ELIMINATE (2026-05-21 · glossary.md §5-bis), non persone reali — nessun freelance, nessun costo. Team reale = Gregorio + Loris. Produzione 3D ora = founder + Claude (canon/12). Mantenuto solo come traccia storica.

Lunedì 18/05

  • Sofia + Erik · T1 Logo Multiverbe AI master vector SVG + 3 varianti (6h) ← founder NO svg pulito disponibile
  • Sofia + Yuki · T2 Concept board 6 pianeti orbi-logo (4h, sketches + reference image)
  • Pietro · T3a Disegno 6 glifi pianeti (6h, vector SVG astratto)
  • Carla · T10a Intervisti 5 ristoratori Lugano (8h) → pain points + sub-need killer
  • Daniel · Sprint 1 dev #1 — DOF mirato + vignette radiale 8% + bokeh circolare f/1.4 (5h)
  • Tobias · Sprint 1 dev #8 — Device tier auto-detect low/mid/high/ultra (4h)

Martedì 19/05

  • Daniel · Sprint 1 dev #2 — Logo stencil Sole + ghost hand onboarding (4h)
  • Daniel · Sprint 1 dev #3 — Particle trails dust + solar wind (3h)
  • Pietro · T3b Disegno 12 glifi satelliti (Web + Booking, 8h)
  • Carla · T10b Intervisti 5 hotel/B&B (8h)
  • Tobias · Sprint 1 dev #4 — Health Trinity (rotation + scale + wobble) (6h)
  • Marco · T4a A/B test prima batch glifi (3 ristoratori live test, 4h)
  • 18:30 · Founder demo Sprint 1 day-1 deliverables (15min call) — review item #1-2-3 + T1 logo + T2 concept board

Mercoledì 20/05

  • Daniel · Sprint 1 dev #4b — Wobble asse subtle critical state (2h)
  • Daniel · Sprint 1 dev #6 — KPI HTML on-hover (1 metrica/pianeta) + notification badge (3h)
  • Lior · Sprint 1 dev #7 — Mobile gestures 6-pattern + haptic + press-progress ring (5h)
  • Pietro · T3c Disegno 12 glifi satelliti (Content + CRM, 8h)
  • Carla · T10c Intervisti 5 parrucchieri/estetiste (8h)
  • Hana · Audit perf budget post device tier (2h)

Giovedì 21/05

  • Tobias + Hana · Sprint 1 dev #9 — Instanced satellites + LOD pianeti + frustum culling (6h)
  • Daniel · Refactor Pianeta.tsx 3-layer architecture (outerShell + innerCore + glifo placeholder) (4h)
  • Pietro · T3d Disegno 12 glifi satelliti (Sales + Marketing, 8h)
  • Carla · T10d Intervisti 5 gym/studi fitness (8h)
  • Marco · T4b A/B test seconda batch glifi (10 PMI campione across settori, 6h)

Venerdì 22/05

  • Pietro · T3 finalizzazione 42 glifi consegnati clean SVG (4h)
  • Daniel · Sprint 1 review + bug fix critical (6h)
  • Marina + Carla · T11a Customizza satellite list ristorazione + hotel (4h)
  • Sofia · QA visivo Sprint 1 (3h)
  • 18:00 · Demo founder Sprint 1 completo (30min call) — full preview + decisione AI 3D gen Tripo3D vs Meshy

Sprint 1 totale: ~140 ore dev/design parallelizzate · 5 persone dedicate · CHF 2,880 (Pietro freelance) approvazione pending


🪐 Stream C v2 Sprint 2 · ⚠️ OBSOLETO (storico · AI-persona eliminate · vedi nota Sprint 1)

Settimana 25-29 maggio

  • T5 brief AI gen tutti i 42 oggetti (Sofia + Daniel, 4h)
  • T6 Tripo3D batch generation (Daniel, 1h setup + run · $6.30)
  • T7 Blender MCP automated pipeline (Tobias setup 2h + batch 8h)
  • T8 R3F integration useGLTF lazy load per pianeta (Daniel, 16h)
  • T9 Glow inner light per glifo dentro sphere (Daniel, 6h)
  • T10e-f Carla intervisti studi medici + immobiliari + studi professionali (15 PMI rimanenti)
  • T11b-c Customizza satellite list per 5 settori rimanenti

Settimana 1-5 giugno

  • AI activity feed beams Supabase Realtime channel (Tobias + Ravi, 8h)
  • Celebration animations 6 pianeti × 1 ciascuno (Daniel, 10h)
  • Aurora boreale Booking specifico (Daniel, 3h)
  • Pianeta clouds layer Booking (Daniel, 2h)
  • Cinematic lighting selected: Rayleigh + cloud shadow + sub-surface + specular + fade 1.2s (Daniel, 15h)
  • Modo sera auto post-19:00 (Alessio + Daniel, 3h)
  • QA visivo finale founder + Carla (1 giorno)

🚀 Hard Gate · Mer 10 Giu Launch

Settimana 8-10 giugno · BUFFER + LAUNCH

  • Lun 8 - Mar 9: bug fix critical + perf tuning device tier · WebGPU optional
  • Mer 10: 🎯 MVP HARD GATE LAUNCH 5 paganti target Loris cadence

📌 Task aggiuntive recenti (founder 16/05)

  • [ ] T1 Logo Multiverbe AI master vector (Sofia + Erik · 6h · 18 maggio)
  • [ ] T3 Disegno 42 glifi astratti (Pietro freelance · CHF 2,880 · 32h · 18-22 maggio) — founder approvazione pending
  • [ ] T6 AI 3D batch generation (Tripo3D $6.30 · 25 maggio) — decisione finale 18/05 sera Tripo3D vs Meshy vs Stable3D OSS
  • [ ] T10 Carla intervisti 35 PMI (7 settori × 5 PMI · 18-29 maggio)
  • [ ] T11 Customizza satellite per 7 settori (Marina + Carla · 8h × 7 = 56h dopo intervisti)

📌 Promossi a W3 corrente (era "Pending da inserire domani 2026-05-14" · audit 2026-05-17 promotion)

  • [ ] Status taxonomy review (15-20 min · priorità BASSA · ancora aperto da 2026-05-14) — formalizzare i 2 status intermedi done_code_pending_smoke + code_done_legal_pending aggiunti 2026-05-13 in status.json (action_items stream-a-finalize-smoke-e2e + klaro). Opzioni: A) mantenere come intermediate states e documentare in canon · B) normalizzare a done/blocked + aggiungere campo sub_state · C) altro. verify-bos.mjs esteso temp 2026-05-13 per sbloccare pipeline.
  • [ ] 🔴 Requisiti bloccanti API Google (era VEN 15 Mag, OVERDUE 2gg) — risolvere i blockers: Privacy/ToS a URL pubblici · Google Cloud project + OAuth consent screen · verificare/creare GBP aziendale (l'orologio 60gg parte appena creato → farlo subito). → inviare la richiesta accesso API GBP a Google ASAP (era "entro DOM 17 Mag" cioè oggi). Google può rifiutare: checklist anti-rifiuto nell'action_item google-api-access-blockers-2026-05-15 (status.json). Sblocca Reach C1b + E1.

Gregorio · Build

  • [ ] 🔴 Gap-closure Stream 1-4 quality-max (da Wow Audit 2026-05-14) — keyframe morti (modali che scattano su 4/15 varianti = bug shippabile-oggi) + sezioni che renderizzano null + screenshot-stub che fa girare il gate Stage-6 alla cieca. Debito appena creato dagli Stream merged → chiudere subito. Action item web-quality-gap-closure-2026-05-15 in status.json.
  • [ ] Site Builder Kimi K2.6 integration end-to-end
  • [x] Onboarding 5 macro × 21 settori + AI fallback Sonnet 4.6 ✅ DONE 2026-05-10 — SetupWizardV2 4-step ~3min target, frontend behind feature flag VITE_ONBOARDING_V2, API Vercel /api/ai/sector-deduction con PII pseudonymization
  • [x] Deploy custom domain Vercel ✅ DONE 2026-05-10 — https://multiverbe.com (landing) + https://app.multiverbe.com (dashboard) + https://www.multiverbe.com LIVE HTTPS. 2 progetti Vercel (landing + maind-dashboard), 3 record DNS su Register.it (A apex + CNAME www + CNAME app), SSL Let's Encrypt provisioned via vercel certs issue.
  • [x] Schema Supabase MVP completo ✅ DONE 2026-05-10 — 56 tabelle business + 12 migrations applicate via MCP. Foundation + 6 pianeti + Sole + polipo nervoso (planet_registry, nucleo_events, agent_decisions, planet_goals, reflection_schedules, autonomy_promotions, model_ab_tests, knowledge_packs). Audit ops/db-audit-2026-05-10.md
  • [x] MAIND Python legacy deprecate ✅ DONE 2026-05-10 — 14 file Python + render.yaml spostati in legacy/maind-python/. Render service da disable post-test backend nuovo
  • [ ] Analytics + heatmap baseline
  • [ ] Email Hub satellite Pianeta Web (decisione 2026-05-10 — target W4 Mag-W1 Giu) — connettore IMAP/SMTP Register.it + inbox unificata 1 mailbox MVP. DB tables email_accounts + email_threads + email_messages + email_labels già pronte
  • [ ] 🔔 ANTHROPIC_API_KEY in Vercel env (REMINDER 2026-05-12) — settare server-side per /api/ai/sector-deduction Sonnet 4.6. Senza key → fallback keyword pattern matching (degraded ma funziona)
  • [ ] Frontend dashboard refactor 4→6 pianeti (sessione dedicata 4-8h) — types canon già in src/types/planets.ts, roadmap in docs/refactor-4to6-pianeti.md. Trigger: dopo Site Builder Kimi funzionante
  • [ ] SMTP Brevo signup confirmation Supabase Auth — abilita signup E2E flow (test SetupWizardV2). Doc passi in ops/manual-actions-2026-05-10.md
  • [x] Trigger 17 Mag: se Pianeta Web non funzionante, taglia Content Studio ✅ NO ACTION 2026-05-17 audit · Pianeta Web ✅ funzionante (PR #24+#25+#34-#38 merged) · trigger reverso da 2026-05-09 e ri-confermato oggi · scope completo mantenuto
  • [x] 🌐 Cloudflare wildcard CNAME *.sites.multiverbe.com ❌ OBSOLETO — superato da decisione 2026-05-13/18: dominio canonico siti tenant = *.multiverbe.app (Vercel-managed DNS, project multiverbe-sites). Il .sites.multiverbe.com è stato rimosso. Vedi FASE 0 punto 1 (wildcard *.multiverbe.app da attaccare).
  • [ ] 🔐 Proton Pass account aziendale Multiverbe (2026-05-12) — signup + migra secret esistenti (Vercel, Supabase, Brevo, Anthropic) da chat/disco a vault sicuro
  • [x] 🇨🇭 Acquisto multiverbe.ch (URGENTE entro 16 Mag) ✅ DONE 2026-05-15 Vercel Domains $17.99/anno · hosting attivo separato (NO redirect, decisione panel agenzia Swiss 2026-05-17) · ccTLD geo-signal Google.ch + hreflang reciproco
  • [x] 🌐 Acquisto multiverbe.app (URGENTE entro 16 Mag) ✅ DONE 2026-05-13 Vercel Domains $14.99/anno · wildcard *.multiverbe.app attivo + project multiverbe-sites bound
  • [ ] 🇮🇹 Acquisto multiverbe.it (entro 31 Mag) — €10/anno defensive Italia
  • [ ] 🇪🇺 Acquisto multiverbe.eu (PIANO PIANO post-MVP) — €8/anno defensive UE, non urgent
  • [ ] ⚖️ Trademark "Multiverbe" CH (IPI) [Q2 2026 entro 30 Giu] — registrazione marchio Nice classes 9+35+42 (~CHF 750 totali). Self-filing su ipi.ch OR via Trademex (CHF 800-1500). Critico difensivo brand prima che il brand recognition cresca. Vedi canon/08-risks.md sezione brand.
  • [ ] ⚖️ Trademark "Multiverbe" EU (EUIPO) [Q3 2026 Settembre] — extension via Madrid Protocol post-priority CH stabilita (€900-1500)
  • [ ] 📊 Migration Manager (SEO preservation) [POST-MVP Q3-Q4 2026] — killer feature per clienti con sito esistente. Doc completa in MIGRATION-MANAGER.md repo codice. Preserva ranking Google + import GSC/GA4 + redirect map auto + 90gg monitoring. Da inserire in roadmap Q3 dopo validation 5 paganti.
  • [ ] 🌍 Registrar adapter pattern (worldwide ready zero-touch cliente) [Q3-Q4 2026] — supporto API automation 95% major registrar mondiali (Cloudflare/GoDaddy/Namecheap/OVH/Gandi/Porkbun/IONOS/Hetzner/Infomaniak + Playwright fallback Register.it/Aruba/Hostpoint). Doc completa REGISTRAR-ADAPTERS-STRATEGY.md. Zero cost API. Cliente fa 0 clic.

Loris · Sales prep

  • [ ] Setup loris@metaverbe.com warmup (Instantly/Lemwarm)
  • [ ] Setup loris@multiverbe.com warmup parallelo (4-6 sett prima switch)
  • [ ] Build lista 200 prospect (settori core: ristorazione, parrucchieri, immobiliare Lugano-Bellinzona-Locarno)
  • [ ] Drafting 3 sequenze cold email + A/B variants subject (skill multiverbe-cold-outreach-ch)
  • [ ] Setup Google Calendar booking link demo

Common · Strategia

  • [ ] Lun 9:00 review · 15 min · KPI sett scorsa + obiezioni nuove
  • [x] Renaming cartelle (programmata stasera, post chiusura sessione):
    • [ ] D:\Desktop\METAVERBE-MAIND\D:\Desktop\Multiverbe\ (codice) · esegui D:\Desktop\rename-multiverbe.ps1 (gestisce anche memoria Claude D--Desktop-METAVERBE-MAINDD--Desktop-Multiverbe)
    • [ ] D:\Desktop\metaverbe.com\D:\Desktop\Metaverbe\ (agenzia) · rinomina manuale
  • [x] Setup repo GitHub privato per Multiverbe-Business ✅ DONE — metaverbe-hub/Multiverbe-Business esiste, Vercel git-connected, bos.multiverbe.com deployed. Invito Loris collaborator pending verifica.

Bloccanti

Aggiungi qui se qualcosa blocca progress.

  • [x] 🔴 Stripe 2FA recovery ✅ RISOLTO — PR #27 Stripe webhook handlers merged 2026-05-13 (6 events + idempotency + signature verification + 9 prezzi seeded test mode) → Stripe MCP funzionante.
  • [x] 🟡 Brevo verify domain ✅ RISOLTO — PR #28 ToS legali + Privacy Policy + Cookie banner pubblicati 2026-05-13 citano Brevo come sub-processor attivo. DNS verified. (Audit 2026-05-17 · da confermare con founder se SMTP signup confirmation Supabase ancora pending — separato dal verify domain Brevo).
  • Nessun blocker attivo al 2026-05-17.

Decisioni in attesa di input

  • [ ] Decidere fiduciario PTEK per privacy policy review (deadline 1° Giu)
  • [x] Palette finale Nebula Glass per landing multiverbe.com ✅ 2026-05-10 — confermato cyan→white gradient wordmark + dark bg + stelle canvas (port HeroSpaceWarp da metaverbe.com)
  • [ ] Acquisto multiverbe.ch su Register.it (~€15/anno) — pending decisione user (recommended)
  • [ ] Rinomina org Supabase "Metaverbe" → "Multiverbe" via dashboard (30 sec)
  • [ ] Rinomina Vercel project maind-dashboardmultiverbe-app via Vercel UI (browser only)

🔔 Reminder schedulati (founder action)

  • 2026-05-25 (lunedì, W4 Mag, ONE-SHOT pre-MVP-gate): eseguire 🔐 Security Hardening MAX prompt dentro repo Multiverbe — cd D:\Desktop\Multiverbe\ → apri Claude Code → incolla prompt completo da source/13-security-hardening.md. Fase 1 audit (10 step: segreti, deps, attack surface, permessi, RLS multi-tenant, PII pseudonymization, Stripe webhook signature, security headers, OWASP+LLM Top 10, supply chain) + Fase 2 privacy-by-design (4 regole permanenti) + Fase 3 compliance & founder liability (10 step: nDSG/revFADP, GDPR, DPA chain, sub-processor, breach 72h, audit log, backup PITR, MFA hardware, secret rotation, incident drill). Stimato 3-5h. Posizionamento: prodotto chiavi-in-mano → security = moat commerciale + CHF 250k personal liability mitigation. NON ricorrente: routine periodica sarà impostata separatamente post-MVP.
  • [x] 2026-05-12 (giovedì): settare ANTHROPIC_API_KEY in Vercel env — audit 2026-05-17 · presumibilmente settato (SetupWizardV2 AI deduction funzionante PR #47). Da verificare founder con vercel env ls se ancora attiva keyword fallback.
  • [x] 2026-05-12: flippare VITE_ONBOARDING_V2=true — audit 2026-05-17 · SetupWizardV2 deployato in produzione (PR riferiti pre-2026-05-13), flag presumibilmente attivo.
  • [x] 2026-05-13: configurare SMTP Brevo signup confirmation Supabase Auth — audit 2026-05-17 · checklist A3 ancora marca "🟡 pending verify domain Brevo" — DA VERIFICARE founder.
  • W3 Mag: decidere quando schedulare frontend refactor 4→6 pianeti (4-8h sessione dedicata, vedi docs/refactor-4to6-pianeti.md).
  • Post-MVP (Giu): disabilitare cron render-keepalive Supabase + spegnere service Render multiverbe-pipeline.onrender.com (CHF 7/mo risparmiati).

Prossime settimane (preview)

⚠️ Sostituito da MVP+ shift 2026-05-20. Vedi "🗺️ PIANO ORDINATO A→Z" in cima + mvp-plus-scope-2026-05-20.md.

  • W4 (21-29 Mag) · in corso: MVP+ Fase 1 Foundation Agentica (Inngest + Tool Use + knowledge packs + Sales Boss-View)
  • W1 Giu (1-5): Fase 2 Content foto/video + Free tier + token quota + analyze_planet_data daily
  • W2 Giu (8-12): Fase 3 Cold outreach Mistral + Marketing budget AI + E2E testing · 🎯 10 Giu MVP + 5 paganti
  • W3 Giu (13-15): Fase 4 QA finale + cleanup legacy · 🎯 15 Giu MVP+ market-ready LIVE
  • W3+ Giu: post-launch hardening + SELL sprint Loris scale

Ultimo update: 2026-05-21 · refresh MVP+ · banner W3→W4 + PIANO ORDINATO A→Z in cima (Fase 0-4 + track Loris + doppio gate 10/15 Giu) + preview prossime settimane riallineata a fasi MVP+ + voce *.sites.multiverbe.com marcata obsoleta (canon *.multiverbe.app). Storico sessioni preservato sotto. Precedente 2026-05-17 · audit-batch · (1) Domini .ch + .app sbarrati come DONE (acquistati 2026-05-13/15). (2) Trigger 17 Mag taglio Content Studio sbarrato come NO ACTION (Pianeta Web funzionante). (3) Bloccanti Stripe 2FA + Brevo verify domain marcati come RISOLTI (PR #27 + #28 merged). (4) Reminder date passate (12/13 Mag) sbarrati con nota "da verificare founder". (5) Setup GitHub repo sbarrato (esistente). (6) "Pending da inserire 2026-05-14" promossi a sezione W3 corrente. Precedente 2026-05-16: Stream C v2 sphere-logos orbi system + 7 settori top + Sprint 1 calendar. Owner: Gregorio Ciurleo + Loris Beraud (cofondatori · unico team reale · niente AI-persona/Design Council, eliminate 2026-05-21 · vedi glossary.md §5-bis)

SSoT = execution/current-week.md