Genesis Trust Framework · documento operativo

DevOps e rilasci

Come i servizi di Spazio Genesi ETS — il sistema di attestazione delle opere digitali e la piattaforma RADART — vengono sviluppati, verificati e rilasciati 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.

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.

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
RADART (4 worker)risorse proprie per modulogemelli -staging, service binding rimappati
radart-webCloudflare Pagespreview per-branch native, env "Preview" → api-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
5Staging RADART (4 worker + preview Pages)⏳ da eseguire
6CI RADART⏳ da eseguire
7Interfaccia web di staging✅ 2026-07-11
8Pubblicazione della documentazione + registrazione nel GTF🔶 doc pubblicata 2026-07-11, registrazione finale in corso

La tabella viene aggiornata alla chiusura di ogni fase (data + esito). Alla chiusura della fase 8 il processo viene registrato nel registro GTF come decisione, processo e controllo (ADR-P24 PRC-cicd-release CTL-cicd-pipeline) con evidenza verificabile: i run di CI sono pubblici sui repo GitHub — chiunque può controllare che il processo dichiarato sia quello praticato.