Files
ThothII/docs/reports/2026-09-14-server-embedded-omics-release.md
T
User 2f53512e4d
Publish documentation / publish (push) Successful in 32s
docs: record server release and hand off remaining acceptance checks
2026-09-27 00:41:37 +02:00

7.9 KiB

Rilascio server ThothII embedded in Omics — 2026-09-14

Esito

Il rilascio tecnico è stato eseguito il 2026-09-14 e i controlli automatici e server-side descritti sotto sono superati. L'accettazione funzionale non è ancora chiusa: lingua, tema, fullscreen, logout, ruoli e continuità SSE devono essere provati da browser con account Omics autorizzati.

Finestra autorizzata dall'operatore e conclusa alle 16:17 CEST. Le ammissioni ThothII sono state riaperte dopo il collaudo (active: false, admissions: 0).

Revisioni e immagini distribuite

  • ThothII, checkout operativo /srv/thothii-v2/source/ThothII: 49333a2d35664b7237c3ddc2a9f10a605dcc84ce, branch main, pulito e allineato a origin/main.
  • Omics Portal, checkout /home/chirone/omics_portal: fca10901a73666ca257d8f4cc4b77066295c400a, branch master, pulito e due commit avanti a origin/master. Include la consegna funzionale 95154e179144e2453b37ef2a63a65d6f377e4cf8.
  • CLI nativo /usr/local/bin/tht: commit 49333a2d35664b7237c3ddc2a9f10a605dcc84ce, build 2026-09-14T15:08:47+02:00, linux/amd64.
  • Core: thothii-v2-core:49333a2d, image ID sha256:d62bf17dd1345e6a459edabe4b559333b396ef30c523dedf1b842506c147efbd.
  • Frontend: thothii-v2-frontend:49333a2d, image ID sha256:dd57745143fc282562ec6d4c2cd8fc493eb2078494eeb17099d49bea8eae218b.
  • Omics web: omics_portal-web, image ID sha256:11e99905c41b38cd68d0e726f25a4174b8eb65db27fb1d887238a7bd255074da.
  • Nginx: image invariata sha256:b3c656d55d7ad751196f21b7fd2e8d4da9cb430e32f646adcf92441b72f82b14.

Configurazioni modificate

  • deploy/psd-server-v2/thothii-installation.yaml: Installation Model Catalog schema v2; shell embedded, locale predefinito en, adapter omics-portal; provider DeepSeek unificato e default interaction zai/glm-5.3. Percorsi, profilo server, workspace, DWH e provider reali del server sono stati preservati.
  • /srv/thothii-v2/operator/compose.portal-upstream.yaml: AUTH_MODE=upstream, alias thothii-core e thothii-frontend sulla rete Omics; eliminato il mount della copia manuale di config.js. Nessun auth.yaml e nessuna runtime auth projection.
  • /srv/thothii-v2/operator/operator.env: tag applicativo aggiornato a 49333a2d; nessun valore segreto copiato dal Mac o riportato in questo report.
  • deploy/psd-server-v2/generated/: proiezioni rigenerate dal descriptor. Il frontend riceve in sola lettura generated/frontend/config.js, che espone soltanto backendBaseUrl: /api e il contratto shell embedded.
  • Omics: integrati template embedded, lingua Django, topbar/fullscreen, adapter JavaScript, traduzioni e test della consegna GitHub.
  • nginx/nginx.conf: non modificato. La configurazione già presente conteneva l'auth_request Django, derivazione server-side degli header X-Thoth-*, rimozione di cookie/Authorization/header client, origin esatta e SSE senza buffering.

Configurazione risolta verificata:

  • core e frontend usano le immagini 49333a2d;
  • AUTH_MODE=upstream;
  • core senza porta host pubblicata;
  • frontend pubblicato soltanto su 127.0.0.1:18020;
  • alias Omics risolti rispettivamente a thothii-core e thothii-frontend;
  • config.js generated montato read-only;
  • THOTH_PUBLIC_EXPOSURE=false e storage sessioni locale, preservando la topologia server già approvata.

Backup e rollback

Backup protetto: /srv/thothii-v2/backups/20260914-pre-embedded-release, directory 0700, tutti i file 0600 e owner root:root.

Contiene:

  • immagini applicative precedenti core/frontend/Omics;
  • binario CLI precedente;
  • descriptor, override, config manuale e proiezioni precedenti;
  • bind data, workspace-registry, pi-state, operator e secrets;
  • snapshot raw dei volumi catalogo, Qdrant ed embedding;
  • dump logico PostgreSQL del catalogo ThothII;
  • dump logico PostgreSQL del database usato da Omics;
  • snapshot dei volumi statici e media Omics;
  • SHA256SUMS.

Tutti i checksum sono risultati validi. Gli archivi tar sono stati elencati integralmente senza errori e i due dump sono stati validati con pg_restore --list. Le vecchie immagini restano disponibili; Omics precedente è inoltre etichettata omics_portal-web:pre-fca1090-aff75817.

Non sono state eseguite migrazioni ThothII: tra 82e2c91f e 49333a2d non esistono nuove migrazioni catalogo, Memory o sessioni. L'entrypoint Omics ha eseguito migrate con risultato No migrations to apply. Il rollback normale è quindi applicativo e non richiede ripristino dati; dump e snapshot raw sono conservati per un recupero separato solo in presenza di corruzione accertata.

Verifiche superate

Prima del rilascio

  • frontend ThothII: 768/768 test;
  • backend auth/config/session/model: 205/205 test mirati;
  • estensione Pi, lingua e ripresa: 7/7;
  • harness lingua sessione e repository PostgreSQL: 24/24;
  • CLI Go: tutte le package superate;
  • Omics embedded shell isolata: 15/15;
  • build delle tre immagini candidate completata;
  • generazione delle proiezioni validata prima in staging isolato;
  • build documentale strict completata dopo la scrittura di questo report.

Sul server distribuito

  • tht status: exit 0;
  • tht doctor --json: ok: true, 13/13 controlli superati, inclusi descriptor, proiezioni, permessi, Docker/Compose, autenticazione, health, HTTP, registry, workflow e Pi;
  • core, frontend, catalog-db, Qdrant, embedding e Omics web in stato healthy;
  • nginx -t superato prima e dopo la ricreazione;
  • catalogo Superset Omics valido: 32 dashboard;
  • migrate --check post-rilascio: exit 0;
  • nessun traceback, fatal, panic, HTTP 500 o errore nginx nei log recenti;
  • pagina senza sessione: 302 verso /accounts/login/;
  • /datamart-builder/api/me senza sessione: 403;
  • richiesta pubblica con header principal/admin falsificati: ancora 403;
  • config.js: 200, Cache-Control: no-store, contenuto embedded corretto;
  • manifest Vite risolto da Django: 368 entry; entrypoint corrente index-ktEFlKPi.js e stylesheet index-BtNkA4QL.css;
  • asset JavaScript attraverso /datamart-builder/assets/: 200 e cache public, immutable;
  • il core non ascolta sulla porta host 8787; dalla rete interna senza principal risponde 401;
  • nginx risolve i nuovi indirizzi degli alias, senza dipendere dai precedenti IP Docker.

Il probe HTTPS verso l'hostname pubblico, eseguito dal server stesso, è andato in timeout prima della connessione (HTTP 000): è un limite di raggiungibilità hairpin/rete e non viene contato come verifica superata. I probe equivalenti attraverso nginx locale con Host e forwarded protocol reali sono invece passati.

È rimasto intenzionalmente intatto il container orphan storico omics_portal-web-run-a0bc36025e52, creato circa tre mesi prima del rilascio ed exited da due settimane; non è stato rimosso perché estraneo alla consegna.

Prove manuali ancora necessarie

Usare account di prova autorizzati e dati non operativi:

  1. utente Omics autorizzato apre Datamart Builder senza secondo login e vede un solo header, quello Omics;
  2. /datamart-builder/api/me restituisce issuer portal, subject Django stabile, ruoli corretti e session/csrfToken null;
  3. confronto utente normale/amministratore e rifiuto utente senza capability;
  4. IT/EN prima dell'apertura e cambio tramite form Omics, senza tradurre SQL o contenuti authored;
  5. light/dark con popup, menu e griglia aperti;
  6. ingresso/uscita fullscreen, compresa uscita con Esc e rifiuto browser;
  7. logout Omics, seconda scheda e nuova verifica /me;
  8. nuova sessione, flusso SSE, riconnessione dopo scadenza, reload senza avvio automatico e ripresa con interaction_language invariata;
  9. richiesta cross-origin autenticata su operazione fittizia e comportamento distinto di un singolo 403 operativo;
  10. accesso HTTPS reale da una postazione client, perché il server non raggiunge l'hostname pubblico in hairpin.

L'installazione non va dichiarata funzionalmente accettata finché questa matrice manuale non è stata eseguita e registrata.