143 lines
8.3 KiB
Markdown
143 lines
8.3 KiB
Markdown
# Rilascio coordinato ThothII / Omics — 26 settembre 2026
|
||
|
||
**Distribuito; accettazione automatica superata. Collaudo browser positivo per accesso, interfaccia e avvio/interruzione/ripresa sessione; prove estese residue sotto.**
|
||
Finestra esplicitamente confermata dall’utente in chat («confermo»), avvio alle
|
||
19:28 Europe/Rome. Riferimento: [piano approvato](2026-09-26-server-release-plan.md).
|
||
Maintenance disattivata alle **19:35:27** dopo tutti i controlli automatici.
|
||
|
||
## Versioni e stato finale
|
||
|
||
| Componente | Risultato |
|
||
| --- | --- |
|
||
| ThothII sorgente | Main `497ab84031e285464fdbb73e6e0ce9252687e3ab`, checkout pulito in `/srv/thothii-v2/releases/497ab84031e285464fdbb73e6e0ce9252687e3ab` |
|
||
| Core | `thothii-v2-core:497ab840-preflight`, ID `sha256:182f4e0d63404cb7ed6a0e272441e9c55ed27e2bb16fdbf4d7162f892ac76dc7`, healthy |
|
||
| Frontend | `thothii-v2-frontend:497ab840-preflight`, ID `sha256:5f5a4f81139432d0ac41025c3006edaf1258b623ce388242700b1b20fcce6421`, healthy |
|
||
| Omics checkout | Fast-forward a `928f7e9fff2aba895416776fecf5668ee957d237`; nessuna modifica tracciata, file locali preservati |
|
||
| Omics web | Stesso container e immagine `sha256:27aa100690b110bf596322b1b0a31acc178ca9d1c709bc10382cbeecbfb5aeca`, riavviato e healthy; risposta HTTP Django verificata |
|
||
| Omics nginx | Ricreato col fix asset e immagine precedente fissata `sha256:b3c656d55d7ad751196f21b7fd2e8d4da9cb430e32f646adcf92441b72f82b14`; `nginx -t` positivo |
|
||
| Supporti | Catalogo PostgreSQL, Qdrant e Ollama healthy; immagini e volumi invariati |
|
||
| CLI host | `/usr/local/bin/tht` aggiornato; SHA256 `0d39a93fb0a3b2147541a746c75832db20302f3a604bf6510da69d3731bcd783` |
|
||
| Maintenance / Pi | Maintenance inattiva, zero processi Pi RPC al controllo finale delle 19:36 |
|
||
|
||
Descrittore mantenuto nel percorso originale:
|
||
`/srv/thothii-v2/source/ThothII/deploy/psd-server-v2/thothii-installation.yaml`.
|
||
Project Compose sempre `thothii-7f901b48fe35`; shell embedded/en/omics-portal,
|
||
auth upstream e storage locale invariati. Cambiati solo projectDirectory e
|
||
percorso dell’overlay git-ssh nel descrittore, tag immagini in env/overlay.
|
||
Proiezioni rigenerate col nuovo CLI e UID 10001. Descriptor/env 10001:10001 0600;
|
||
overlay 1013:1014 0640; CLI root:root 0755.
|
||
|
||
Il vecchio checkout ThothII dirty resta al suo posto per rollback. Nessun reset,
|
||
force push, eliminazione di volumi, cambio identità, credenziali, DWH o Authentik.
|
||
Nessun push Omics eseguito. Nessuna nuova migrazione applicata; i controlli Django
|
||
prima e dopo il riavvio non rilevano migrazioni o modifiche dei modelli pendenti.
|
||
L’entrypoint web ha rieseguito i normali comandi di startup, statici e traduzioni.
|
||
|
||
## Backup ed esecuzione
|
||
|
||
Backup protetto root 0700:
|
||
`/srv/thothii-v2/backups/20260926-coordinated-release`.
|
||
Completato e **VERIFIED alle 19:31:57**, circa **2,89 GiB**, **23 checksum**,
|
||
archivi tar leggibili e indici dei dump verificati. Non è una prova di restore.
|
||
|
||
Include configurazioni/CLI/generated, sorgenti e Git con file locali,
|
||
immagini precedenti, bind data/registry/Evidence/Pi/segreti, volumi
|
||
catalogo/Qdrant/Ollama/static/media, dump catalogo e dump PostgreSQL condiviso.
|
||
Il DB condiviso è rimasto operativo: il suo dump è una snapshot transazionale,
|
||
non un backup raw del database fermo. Il volume raw del catalogo ThothII è stato
|
||
archiviato a servizio fermo. Nessun restore dati eseguito.
|
||
|
||
Cronologia Europe/Rome:
|
||
|
||
- 19:28: controllo del piano approvato positivo; riserva 20,9 GiB, liberi 27,8 GiB.
|
||
- 19:29:21: configurazione di rollback salvata e verificata prima delle mutazioni.
|
||
- 19:29:42: maintenance e chiusura nginx Omics; due controlli Pi negativi.
|
||
- 19:30:03: applicazioni ferme; dump, fermo supporti e archiviazione dati.
|
||
- 19:31:57: backup verificato.
|
||
- 19:32:10: deploy avviato; core 19:32:17, frontend 19:32:23,
|
||
web Omics 19:32:29, nginx 19:32:36.
|
||
- 19:35:27: accettazione automatica completata e maintenance disattivata.
|
||
|
||
Il periodo tra chiusura e riavvio nginx è stato circa tre minuti; le nuove
|
||
ammissioni sessione sono rimaste bloccate fino al completamento dei controlli.
|
||
|
||
## Correzione del controllo durante il rilascio
|
||
|
||
L’accettazione iniziale si è fermata su un falso negativo nello script:
|
||
`config.js` invia due header `Cache-Control`, `no-cache` e `no-store`; il controllo
|
||
leggeva solo il primo. Configurazione e risposta HTTP erano corrette.
|
||
|
||
Riproduzione isolata rossa, correzione di una riga con `get_all`, **16 test verdi**,
|
||
compreso il rifiuto quando `no-store` manca davvero. Nessuna modifica applicativa
|
||
necessaria. Maintenance mantenuta attiva fino alla ripetizione completa
|
||
dell’accettazione. Non sono stati ripetuti backup, fast-forward o ricreazione.
|
||
|
||
Directory script/evidenze:
|
||
`/srv/thothii-v2/operator/releases/20260926-coordinated/reviewed/`.
|
||
|
||
- Script inizialmente approvato conservato in `release.approved.py`, SHA256
|
||
`eb2c677c8adbee0c9febf919001f654c8535e71f064d9fb7c7883afd02383a41`.
|
||
- Script corretto `release.py`, SHA256
|
||
`20314e68a6a42701456d454d2a0881652cfdbe5e00e9a912a22df9e78129aa00`.
|
||
- Test di regressione: `test_release_reviewed.py`, `reviewed-tests-cache-fix.log`.
|
||
- Stato finale filtrato: `deployed-evidence.json`; avanzamento nel
|
||
`journal.jsonl` del backup. Manifest degli artefatti aggiornato, originale conservato.
|
||
|
||
## Accettazione automatica
|
||
|
||
| Verifica | Esito |
|
||
| --- | --- |
|
||
| Digest reali dei container, readiness, doctor | Positivi |
|
||
| Alias Docker | Univoci e risolti ai container attuali; manifest raggiungibile da Omics |
|
||
| API senza cookie e con principal falsificati | 403 su HTTP e HTTPS locale verificato |
|
||
| Bypass asset e traversal codificati | Negati; `/datamart-builder/assets/api/me` restituisce 404 |
|
||
| Config | 200, embedded e no-store su entrambi i percorsi |
|
||
| Asset | Tutti i file elencati dal manifest disponibili su HTTP/HTTPS |
|
||
| Esposizione core | Nessuna porta pubblicata sull’host |
|
||
| Modelli, Pi e credenziali | Hash invariati rispetto alla baseline |
|
||
| Documenti persistiti | 2 manifest sessione, 51 file sessione/artifact e 221 file workspace/Evidence confrontati col backup: nessuna differenza |
|
||
| Migrazioni e catalogo Omics | Nessuna migrazione pendente; catalogo Superset valido |
|
||
| Log startup | Zero occorrenze nelle categorie fatal/config/auth/permessi controllate; nessun contenuto sensibile riportato |
|
||
|
||
Le prove HTTPS usano la CA interna e risoluzione locale del nome pubblico;
|
||
non sostituiscono il collaudo dalla postazione esterna. Il controllo degli hash
|
||
riguarda i file elencati, non certifica da solo l’intera semantica degli archivi.
|
||
|
||
## Rollback disponibile
|
||
|
||
Usare lo script corretto, dopo controllo di eventuali sessioni Pi attive:
|
||
|
||
```bash
|
||
sudo -n python3 /srv/thothii-v2/operator/releases/20260926-coordinated/reviewed/release.py rollback --window-confirmed
|
||
```
|
||
|
||
Il rollback previsto dalla finestra approvata ripristina CLI/config/proiezioni e
|
||
immagini ThothII precedenti, mantiene il fix proxy Omics, riavvia e verifica le
|
||
applicazioni. Conserva dati e volumi; nessun restore del DB condiviso, reset Git
|
||
o ritorno al nginx vulnerabile. Se l’utente ha avviato sessioni, prima salvarle e
|
||
fermarle. Il rollback non è stato necessario né eseguito durante questo rilascio.
|
||
|
||
## Collaudo browser — aggiornamento 27 settembre 2026
|
||
|
||
Conferme dell’utente:
|
||
|
||
- Omics → Datamart Builder si carica senza problemi, in risposta alla prova di
|
||
apertura senza secondo login.
|
||
- Il 27 settembre: «tutto bene, compreso l’avvio e l’interruzione di una sessione».
|
||
Nel contesto dei controlli richiesti, registrato esito positivo per IT/EN,
|
||
tema, fullscreen/Esc e per avvio/interruzione di una sessione.
|
||
- Successivamente, sempre il 27 settembre: «ho anche ripreso una sessione interrotta.
|
||
tutto ok». Confermata anche la ripresa riuscita; il ciclo funzionale
|
||
avvio → interruzione → ripresa è collaudato dall’utente.
|
||
|
||
Il collaudo funzionale richiesto ha esito positivo. Su richiesta dell’utente,
|
||
le verifiche estese sono trasferite a un’attività successiva nel
|
||
[handoff del 27 settembre](2026-09-27-server-acceptance-handoff.md): lingua
|
||
persistita, identità/ruoli, logout, origine delle scritture, amministrazione,
|
||
reload e HTTPS esterno. Il documento contiene passi, responsabili, risultati
|
||
attesi e registro delle prove; nessuno di questi casi è dichiarato già superato.
|
||
|
||
La [matrice di accettazione](../testing/authentication-manual-acceptance.md)
|
||
resta il riferimento. Nessuna ulteriore modifica ai servizi è stata eseguita
|
||
per registrare il collaudo o preparare l’handoff del 27 settembre.
|