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

149 lines
7.4 KiB
Markdown

# 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:
```bash
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:
```bash
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:
```bash
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:
```bash
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.