Runbooks OrbitRunbook — Réinitialiser la base

Runbook — Réinitialiser la base de production

Réinitialisation unique de la base de production après la fusion des migrations du chantier.

Le 2 octobre 2026, les 18 migrations du rebuild ont été fusionnées en une seule (packages/db/prisma/migrations/20261002000000_init). Orbit n'avait aucun utilisateur : la base repart de zéro au lieu de porter l'historique du chantier. Au passage, les vestiges de l'ancienne plateforme sont partis (CaptureMode.PLATFORM_TICKET, CaptureRequestStatus.TICKET_ISSUED, CaptureRequest.ticketRef, ContentRender.bulletinRequestId).

Une base qui a déjà appliqué les anciennes migrations refuse la nouvelle (prisma migrate deploy voit des migrations inconnues et des tables qui existent déjà). Il faut donc la vider une fois. C'est une action manuelle, explicite, faite par le fondateur ; aucun déploiement ne la fait seul.

Avant

  • La PR qui porte 20261002000000_init est mergée sur main.
  • Tu es sur la base d'Orbit (Neon, projet Orbit). Vérifie dans l'éditeur SQL que les tables sont celles d'Orbit (StudioMember, Workspace, BrainSpace…) et qu'aucune table d'un autre produit n'y figure. En cas de doute, tu t'arrêtes.
  • Une sauvegarde existe : dans Neon, crée une branche de la base actuelle (backup-avant-init) avant de toucher à quoi que ce soit.

Étapes

  1. Dans l'éditeur SQL Neon, sur la base de production d'Orbit :

    DROP SCHEMA public CASCADE;
    CREATE SCHEMA public;
    
  2. GitHub → Actions → Deploy production database → Run workflow sur main. Le workflow applique 20261002000000_init puis vérifie qu'il n'y a aucune dérive (pnpm db:drift).

  3. En local, avec DATABASE_URL pointant sur cette base et FOUNDER_EMAIL sur ton adresse : pnpm db:seed. Ton membre fondateur existe à nouveau.

  4. Connecte-toi sur https://orbit.easyconnector.app/auth avec le code à six chiffres. Les anciennes sessions sont invalides (leurs lignes ont disparu) : c'est attendu.

Après

  • Les clés API orb_… et les connexions MCP OAuth d'avant n'existent plus : recrée-les depuis la console développeurs et reconnecte les clients MCP.
  • Les fichiers Vercel Blob des anciennes générations restent dans le store mais plus rien ne les référence. Tu peux les supprimer depuis le tableau de bord Vercel (store Blob d'Orbit) une fois la nouvelle base vérifiée.
  • Supprime la branche Neon backup-avant-init quand tout fonctionne.

Après cette réinitialisation

La règle redevient la règle : chaque changement Prisma est une nouvelle migration committée, jamais une réécriture, jamais db push, jamais de reset d'une base partagée. Cette fusion était une exception, possible uniquement parce qu'Orbit n'avait aucun utilisateur.

Tant que packages/db/PHASE vaut pre-users, une nouvelle fusion reste possible, sur ton GO écrit uniquement ; dès qu'il vaut production, elle est interdite. Voir Runbook base-de-donnees.