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.