Vai al contenuto

Migrazioni D1

migrations/manifest.json è il contratto canonico ordinato. Ogni entry dichiara file, classificazione revisionata, versione introduttiva e checksum SHA-256. La CI fallisce su file o entry mancanti, ordine/nome/versione non canonici, checksum drift, modifica di una migrazione già pubblicata o baseline non determinabile. Una correzione usa sempre un nuovo file.

Classificazioni

  • expand: forward-only, additiva e compatibile con il codice production precedente. Fa parte della release ordinaria exact-commit.
  • extraordinary: drop/rename, incompatibilità, backfill, contract migration, recovery specifico o finestra operativa. Blocca il release workflow prima di ogni mutazione e richiede una Issue che possieda l'intero piano.

La classificazione è dichiarata dalla PR, non inferita da euristiche SQL.

Riconciliazione

Il release plan legge d1_migrations sul database nominale immutabile dell'ambiente. L'elenco applicato deve essere un prefisso esatto del manifest: migrazioni estranee, duplicate, mancanti nel mezzo o fuori ordine falliscono closed. Il delta produce uno dei soli modi none, expand o extraordinary-blocked.

none non esegue chiamate D1 mutanti. expand applica dal medesimo checkout di API e MCP e rilegge sempre il ledger. Anche quando Wrangler fallisce o il provider restituisce un esito ambiguo, la decisione successiva deriva dalla rilettura: convergenza completa può essere classificata, altrimenti il workflow si ferma senza retry.

Production richiede prima evidenza development verde sullo stesso exact SHA e manifest. Un rollback Worker non annulla lo schema; recovery o migrazione correttiva sono forward-only e richiedono autorizzazione straordinaria.

Per il database locale resta disponibile npm run db:migrate:local. Non esiste un comando remoto normale scollegato dalla release.