Genesis Trust Framework · documento operativo

DevOps e rilasci

Come il sistema di attestazione delle opere digitali di Spazio Genesi ETS viene sviluppato, verificato e rilasciato senza mettere a rischio l'unico ambiente che gli utenti usano.

⚠️ Stato: in implementazione progressiva. Questo documento descrive il processo adottato come progetto; la tabella Stato di attuazione dice, fase per fase, cosa è già in funzione e cosa no. Coerentemente col principio del registro (evidenze, non dichiarazioni), niente qui viene presentato come attivo prima che lo sia.

IT·EN

Principi

  1. Un solo ambiente di produzione, mai un bundle non osservato. Ogni modifica attraversa una replica (staging) o una preview a traffico zero della produzione stessa, prima che un utente la veda.
  2. Il gate è umano e tracciato. Nessun rilascio in produzione senza approvazione esplicita del gestore, registrata su GitHub (environment production con required reviewer).
  3. Rollback in secondi, senza rebuild. Cloudflare Workers conserva le versioni precedenti: wrangler rollback riporta indietro immediatamente.
  4. Lo staging non contiene mai dati reali. I database di staging nascono dagli schemi versionati nel repo più dati sintetici: copiare dati di produzione sarebbe un trattamento GDPR senza scopo.
  5. I segreti di produzione non lasciano il loro perimetro. Lo staging ha segreti propri, generati apposta. In particolare il segreto che firma le attestazioni — non ruotabile per progetto — esiste solo in produzione e nel caveau di escrow.
  6. Il config non può divergere. Produzione e staging vivono nello stesso file di configurazione (wrangler.toml, blocco [env.staging]): ogni modifica tocca entrambi nello stesso commit, il drift è strutturalmente impossibile.

Lo stesso processo — staging replicato, CI, gate umano, rollback in secondi — è adottato anche per gli altri servizi dell'ente.

Le parti: produzione e replica

Mappa dettagliata

ComponenteProduzioneStaging
imgauth (motore)Worker imgauth · imgauth.spaziogenesi.orgimgauth-staging · solo workers.dev
Database / archivioimgauth-health · imgauth-pdf-archive (EU)gemelli -staging, senza dati reali
Firma PDF (authart)Azure, marca temporale TSAnon replicata in v1: PDF non firmato
Anti-bot / notificheTurnstile reale · Telegramchiavi di test · silenzioso
authweb (interfaccia)GitHub Pages · attestazione.spaziogenesi.orgcopia generata dal medesimo sorgente, puntata allo staging

Flusso di rilascio

Runbook

Rilascio ordinario
  1. PR con la modifica → i check devono essere verdi.
  2. Merge su main → lo staging si aggiorna da solo; controllare lo smoke.
  3. Prova manuale su staging se la modifica è UI/flusso.
  4. Approvare il job production su GitHub → preview a 0% → promozione.
  5. Smoke di produzione: /ping (versione attesa), /api/status tutto verde.
  6. Tag vX.Y.Z se c'è bump di versione; documentazione secondo convenzione.
Hotfix urgente

Identico al rilascio ordinario — la catena È la via veloce (staging automatico + un click di approvazione). Saltare lo staging non è previsto: se la produzione è già rotta, il rollback è più rapido di qualunque fix scritto di fretta.

Rollback
npx wrangler rollback   # scegliere la versione precedente

Poi: smoke di produzione, nota su cosa è andato storto, fix con calma attraverso la catena normale.

Aggiungere lo staging a un modulo nuovo
  1. Creare D1/R2 -staging del modulo (EU dove pertinente).
  2. Blocco [env.staging] nel wrangler.toml: ridichiarare tutti i binding (gli env di wrangler non ereditano dal top-level).
  3. Schemi applicati alla D1 staging, secret nuovi con --env staging.
  4. Smoke, poi CI come da modello (il workflow di imgauth è il riferimento).

Limiti dichiarati

Onestà del processo: cosa la replica non copre, per scelta documentata.

Stato di attuazione

FaseContenutoStato
0Inventario e prerequisiti✅ 2026-07-11
1Codice del motore pronto al multi-ambiente✅ 2026-07-11
2Staging del motore di attestazione✅ 2026-07-11
3CI (check su PR, staging automatico + smoke)✅ 2026-07-11
4Gate di produzione (approvazione, preview 0%, rollback provato)✅ 2026-07-11
7Interfaccia web di staging✅ 2026-07-11
8Pubblicazione della documentazione + registrazione nel GTF✅ 2026-07-11

La tabella viene aggiornata alla chiusura di ogni fase (data + esito). Il processo è registrato nel registro GTF come decisione, processo e controllo (ADR-P24 CTL-cicd-pipeline, status: active dal 2026-07-11) con evidenza verificabile: i run di CI sono pubblici sui repo GitHub — chiunque può controllare che il processo dichiarato sia quello praticato. Le fasi 5 e 6 del piano P24 riguardano un altro progetto e non fanno parte di questo percorso.