From b1723c34c467980d007094af078d966d460cde2b Mon Sep 17 00:00:00 2001 From: User Date: Mon, 14 Sep 2026 17:25:23 +0200 Subject: [PATCH] docs: record server rollout of session and memory fixes --- PROJECT_STATE.md | 14 ++- .../2026-09-14-session-layout-memory-fix.md | 100 +++++++++++++----- 2 files changed, 80 insertions(+), 34 deletions(-) diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index d35ca67f..6a42714a 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -12,17 +12,21 @@ Authentik, internal catalog/embedding services, and the PSD workspace repository `docs/operations/server-upgrade-gitea-workspace-v2.md`. Treat its operator gates and rollback requirements as mandatory; do not replace the running server stack in place. -## Session composer and empty Memory fix prepared — 2026-09-14 +## Session composer and empty Memory fix deployed — 2026-09-14 The embedded shell now caps its height at the portal mount height, keeping steering and Stop & save visible. Empty authoritative Memory archives return zero results without requiring embedding/BM25; SQL-rule embedding is lazy and shared. The live empty PSD archive reproduces 503 with the current image and succeeds with the candidate. 54 Memory tests, 90 frontend tests, five browser scenarios and both image -builds passed. Candidate core/frontend tags are `49333a2d-session-memory-fix`; -production recreation awaits the release-window confirmation required by the server -handoff. See `docs/reports/2026-09-14-session-layout-memory-fix.md` for evidence, -prepared rollback and resolved deployment commands. +builds passed. The owner authorized the restart and core/frontend were recreated on +2026-09-14 at 17:18 CEST with tags `49333a2d-session-memory-fix`, from code committed +as `d6cdffea`. Both are healthy; production Memory search returns `[]`, Omics serves +the corrected CSS, native doctor passes 13/13 checks, and admissions are reopened. +Session inventory is preserved. Backups and rollback images are retained. Native +CLI diagnostics must run as installation owner UID 10001 with access to Compose; +see `docs/reports/2026-09-14-session-layout-memory-fix.md` for exact commands and +the remaining interactive browser acceptance. ## Full/embedded shell and bilingual interface diff --git a/docs/reports/2026-09-14-session-layout-memory-fix.md b/docs/reports/2026-09-14-session-layout-memory-fix.md index 1260fa43..aaedaf02 100644 --- a/docs/reports/2026-09-14-session-layout-memory-fix.md +++ b/docs/reports/2026-09-14-session-layout-memory-fix.md @@ -2,9 +2,14 @@ ## Stato -Correzioni implementate e immagini candidate costruite; **rilascio operativo non -ancora eseguito**. Il runbook `docs/operations/server-codex-handoff.md` richiede -conferma della finestra prima della ricreazione dei servizi operativi. +**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 @@ -25,7 +30,7 @@ Nessuna migrazione, modifica di card, indice, DWH o autenticazione è necessaria ## Verifiche eseguite -- Riproduzione live: `tht memory search` restituisceva 503. +- 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. @@ -40,28 +45,41 @@ Nessuna migrazione, modifica di card, indice, DWH o autenticazione è necessaria smoke della configurazione frontend superato. - Screenshot verificati in `frontend/test-results/visual-review/`. -## Consegna candidata +## Immagini distribuite e controlli server -Base operativa verificata e pulita: `49333a2d35664b7237c3ddc2a9f10a605dcc84ce`. -La patch `/tmp/thoth-session-memory-fix.patch` supera `git apply --check` -contro `/srv/thothii-v2/source/ThothII`. +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 candidata | ID | +| Immagine distribuita | ID | | --- | --- | | `thothii-v2-core:49333a2d-session-memory-fix` | `sha256:ff4c435abd67c57e1e91e6e560dae73e67350ca499a5aedca3ffa517b9f59ee0` | | `thothii-v2-frontend:49333a2d-session-memory-fix` | `sha256:35933317769f3e12953f3b144d51f8fc2e7e9f7c4830eba80cc626f757f5bf0d` | -Copie protette di operator.env, descriptor e override sono già in -`/srv/thothii-v2/backups/20260914-session-memory-fix` (directory 0700). -Le immagini correnti sono conservate anche con tag -`before-session-memory-fix-20260914`. Non è stato fatto un nuovo backup dei dati: -questa preparazione non ha modificato dati e non sostituisce un backup coerente -nella finestra operativa, se richiesto dal runbook di rilascio. +Controlli dopo il riavvio: -## Comandi risolti per la finestra da confermare +- `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. -Verificare nuovamente lo stato delle sessioni e gestire quelle attive prima del -riavvio. Il seguente launcher conserva progetto, env file e ordine degli override: +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() { @@ -76,24 +94,38 @@ thoth_fix_compose() { } 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 -sudo git -C /srv/thothii-v2/source/ThothII apply /tmp/thoth-session-memory-fix.patch +thoth_fix_compose stop --timeout 45 core ``` -Dopo gestione delle sessioni e backup nella finestra, aggiornare esclusivamente -`THTII_RELEASE_IMAGE_TAG` in `/srv/thothii-v2/operator/operator.env` al valore -`49333a2d-session-memory-fix`, preservando gli altri valori e i permessi. -Quindi: +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 -sudo tht --installation /srv/thothii-v2/source/ThothII/deploy/psd-server-v2/thothii-installation.yaml status -sudo tht --installation /srv/thothii-v2/source/ThothII/deploy/psd-server-v2/thothii-installation.yaml doctor --json + ``` -Attendere il TTL di 30 secondi del manifest Django, verificare asset/config e -Memory; provare input/arresto nel portale prima della riapertura: +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 @@ -101,6 +133,16 @@ thoth_fix_compose exec -T core node /app/backend/dist/operator-command.js mainte Rollback applicativo: ripristinare l'operator.env protetto, ricreare solo core/frontend con lo stesso launcher, verificare e ricaricare nginx. Per riallineare -anche i sorgenti usare `git apply --reverse --check` e poi `git apply --reverse` -sulla sola patch preparata, senza reset di altre modifiche. Non occorre ripristinare +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.