149 lines
7.4 KiB
Markdown
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.
|