Files
ThothII/docs/reports/2026-09-14-session-layout-memory-fix.md
User b1723c34c4
Publish documentation / publish (push) Successful in 32s
docs: record server rollout of session and memory fixes
2026-09-14 17:25:23 +02:00

7.4 KiB

Correzione input sessione embedded e Memory vuota

Stato

Rilascio operativo eseguito il 14 settembre 2026 alle 17:18 CEST, dopo l'autorizzazione esplicita del proprietario al riavvio. Core e frontend sono healthy; le nuove ammissioni sono riaperte (active: false, admissions: 0). Non risultavano processi Pi RPC attivi prima del fermo. L'inventario resta identico: una sessione open e una closed, entrambe non archiviate.

Il checkout operativo /srv/thothii-v2/source/ThothII è stato aggiornato in fast-forward al commit Gitea d6cdffea629daf92cae8392eb1ebb3bb6f275f55.

Cause e correzioni

  • La nuova .thot-host usa 100dvh; Omics limita invece #root allo spazio sotto il topbar e ne nasconde l'overflow. La prova browser riproduce controlli che terminano a 821 px con il contenitore che termina a 782 px. La shell embedded ora ha max-height: 100%, così rispetta il contenitore; il fallback alla viewport e il contratto --thoth-app-height restano utilizzabili.
  • Nell'installazione reale PostgreSQL contiene zero Memory Card e la collection psd-clinical-memory zero punti, senza vettore sparse BM25. Il workflow interrogava comunque embedding/Qdrant e trasformava BM25 collection configuration mismatch in memory_unavailable, status 503. Il recupero ora restituisce [] dopo aver verificato in PostgreSQL che l'archivio è vuoto. Gli errori dell'archivio autorevole continuano a propagarsi. memory rules calcola il vettore soltanto se serve e lo condivide fra le due famiglie.

Nessuna migrazione, modifica di card, indice, DWH o autenticazione è necessaria.

Verifiche eseguite

  • Riproduzione live: tht memory search restituiva 503.
  • Confronto delle immagini attuale/candidata, con PostgreSQL e Qdrant reali e montaggi read-only: attuale exit 1/status 503; candidata exit 0/[]. La configurazione diagnostica non contiene credenziali DWH e non interroga il DWH.
  • 54 test Memory superati, 1 skipped, 2 deselected secondo la configurazione pytest; inclusi test PostgreSQL/Qdrant reali e regressione CLI archivio vuoto.
  • 90 test frontend superati: shell host, composer, creazione e gestione sessioni.
  • 5 scenari Playwright superati: sessione attiva embedded a 390/1280 px con input multilinea e apertura del dialogo di arresto; composer full dopo navigazione amministrativa; geometria host con header/rail.
  • TypeScript, build frontend, Ruff sui file Python modificati, git diff --check e scansione layout superati. Entrambe le build Docker completate; smoke della configurazione frontend superato.
  • Screenshot verificati in frontend/test-results/visual-review/.

Immagini distribuite e controlli server

Le immagini candidate già collaudate sono quelle ora in esecuzione. Container core 1e71b0abd5aa e frontend 45387534e8ad avviati rispettivamente alle 15:18:43 e 15:18:49 UTC. Catalogo, Qdrant, embedding e Omics web non sono stati ricreati. Nginx Omics è stato verificato e ricaricato per risolvere gli indirizzi aggiornati.

Immagine distribuita ID
thothii-v2-core:49333a2d-session-memory-fix sha256:ff4c435abd67c57e1e91e6e560dae73e67350ca499a5aedca3ffa517b9f59ee0
thothii-v2-frontend:49333a2d-session-memory-fix sha256:35933317769f3e12953f3b144d51f8fc2e7e9f7c4830eba80cc626f757f5bf0d

Controlli dopo il riavvio:

  • memory search e memory solved-search nel core distribuito: exit 0, [].
  • workflow-doctor: ready: true, un workspace; inventario sessioni invariato.
  • HTTP /health: status: ok; tutti i servizi richiesti healthy.
  • Omics serve config embedded/en e asset con HTTP 200: index-BpY9Lzwz.js, index-BhJrKSGn.css; verificata nel CSS la regola di altezza corretta.
  • /datamart-builder/api/me senza login continua a rispondere 403.
  • nginx -t superato; reload completato; TTL manifest Django trascorso.
  • tht status: exit 0; tht doctor --json: ok: true, 13/13 controlli passati.
  • Nessun errore di avvio rilevato nei log core.

Backup protetto in /srv/thothii-v2/backups/20260914-session-memory-fix (directory 0700): operator.env, descriptor e override precedenti, archivio di data, workspace-registry e Pi creato a core fermo, dump logico PostgreSQL e snapshot nativo Qdrant. Elenco tar e pg_restore --list validati; tutti gli SHA256 verificati. Le immagini precedenti restano anche con tag before-session-memory-fix-20260914. Nessuna migrazione o modifica al DWH. Il rollback normale resta applicativo.

Comandi di rilascio e diagnostica

Il seguente launcher conserva progetto, env file e ordine degli override. Le ammissioni sono state bloccate e il core fermato prima del backup:

thoth_fix_compose() {
  sudo docker compose --project-name thothii-7f901b48fe35 \
    --project-directory /srv/thothii-v2/source/ThothII \
    --env-file /srv/thothii-v2/operator/operator.env \
    -f /srv/thothii-v2/source/ThothII/compose.yaml \
    -f /srv/thothii-v2/source/ThothII/deploy/compose.server.yaml \
    -f /srv/thothii-v2/source/ThothII/deploy/compose.git-ssh.yaml \
    -f /srv/thothii-v2/operator/compose.portal-upstream.yaml \
    -f /srv/thothii-v2/source/ThothII/deploy/psd-server-v2/generated/compose.models.yaml "$@"
}
thoth_fix_compose exec -T core node /app/backend/dist/operator-command.js maintenance-activate
thoth_fix_compose exec -T core node /app/backend/dist/operator-command.js maintenance-status
thoth_fix_compose stop --timeout 45 core

Dopo il backup è stato aggiornato esclusivamente THTII_RELEASE_IMAGE_TAG in /srv/thothii-v2/operator/operator.env a 49333a2d-session-memory-fix, preservando altri valori, proprietario e permessi. Avvio e reload eseguiti:

thoth_fix_compose up -d --no-deps --no-build core frontend
sudo docker exec omics_portal-nginx-1 nginx -t
sudo docker exec omics_portal-nginx-1 nginx -s reload

Il CLI legge i segreti soltanto con l'UID proprietario (10001). L'invocazione come root viene rifiutata dal controllo di proprietà; nessun file segreto è stato modificato. Per la diagnostica è stata usata una configurazione Docker temporanea vuota, evitando la directory /root/.docker inaccessibile a quell'UID:

sudo install -d -m 0700 -o 10001 -g 1006 /tmp/thoth-owner-docker
thoth_fix_cli() {
  sudo env DOCKER_CONFIG=/tmp/thoth-owner-docker \
    setpriv --reuid=10001 --regid=1006 --groups=1006,1014,988 \
    /usr/local/bin/tht --installation \
    /srv/thothii-v2/source/ThothII/deploy/psd-server-v2/thothii-installation.yaml "$@"
}
thoth_fix_cli status
thoth_fix_cli doctor --json

Riapertura dopo i controlli runtime:

thoth_fix_compose exec -T core node /app/backend/dist/operator-command.js maintenance-deactivate

Rollback applicativo: ripristinare l'operator.env protetto, ricreare solo core/frontend con lo stesso launcher, verificare e ricaricare nginx. Per riallineare anche i sorgenti preparare il revert del solo commit d6cdffea, preservando le modifiche successive. Non occorre ripristinare PostgreSQL o indici per un rollback di queste due correzioni.

Accettazione interattiva

Le prove browser automatiche su input e arresto sono passate prima del rilascio; la distribuzione degli asset corretti è verificata attraverso il proxy reale. Resta da confermare il comportamento nella sessione autenticata del proprietario, ricaricando la pagina Omics. Il collaudo non ha creato sessioni workflow reali né invocato un modello generativo; non sostituisce l'accettazione interattiva completa Omics/IdP documentata nella matrice di autenticazione.