docs: record workflow regression deployment
This commit is contained in:
+27
-2
@@ -1,6 +1,6 @@
|
||||
# ThothII — Project State
|
||||
|
||||
> Starting-point snapshot for new sessions. Last updated: 2026-07-13 (direct adapters + Pi project trust fixed live).
|
||||
> Starting-point snapshot for new sessions. Last updated: 2026-07-14 (workflow/UI regressions fixed live).
|
||||
> Point a fresh session here ("read PROJECT_STATE.md") before substantial work.
|
||||
|
||||
## Deployment — Docker locale (Profile A, co-located) — LIVE 2026-07-12
|
||||
@@ -35,6 +35,31 @@ ThothII gira in Docker sul server co-locato, **embedded nel portale omics_portal
|
||||
resumed directly at F1, ran `tht session show`, and completed `tht search pack`
|
||||
(12 tables, 0 evidence, 2 solved) without repository exploration or adapter errors.
|
||||
|
||||
### Workflow/UI regression fixes — LIVE 2026-07-14
|
||||
|
||||
- **F1 Model Activity restored.** Session create/resume now preserves configured/persisted
|
||||
thinking instead of forcing `off`. Pi's nested `thinking_delta` is bridged to a dedicated
|
||||
named SSE `activity_delta`; EventSource subscribes to that name and the panel keeps it separate
|
||||
from final assistant text. Reasoning remains in-memory and is not persisted to session artifacts.
|
||||
- **F3 rewrite confirmation remains bypassed.** `rewrite_question` records approval and advances
|
||||
automatically without a reviewer widget. The repeated prompt came from old running containers:
|
||||
images had been rebuilt but services had not been recreated.
|
||||
- **Join review is read-only and complete-set safe.** Join-only proposals render informational
|
||||
cards with only `Continue` and `Other — specify`. Continue requires the exact complete id set;
|
||||
all joins are persisted together by `decision add-join-set`, using an atomic ledger replacement
|
||||
under a per-session cross-process writer lock. Other persists none of the rejected proposal.
|
||||
- **CTE presentation fixed.** F6 CTE cards now structure purpose, rationale, tables, filters, keys,
|
||||
and output columns with responsive wrapping/alignment. The Horizontal/Vertical switch is hidden
|
||||
for a single SQL block (the per-CTE view), because it only affects multi-block layouts.
|
||||
- **Latest render failure diagnosed and hardened.** Session
|
||||
`2026-07-14-115847-estrai-i-pazienti-che-hanno-fatto-un-abl` sent an object in
|
||||
`open_questions`, which React cannot render as a child. The v2 gate now enforces
|
||||
`open_questions?: string[]`; the frontend also safely normalizes legacy malformed payloads.
|
||||
- **Verification/deploy:** Python harness 798 passed / 5 L2 deselected; gate JS 126; backend 143;
|
||||
frontend 250; TypeScript/build gates green. Compose rebuilt and force-recreated both services.
|
||||
Running image ids: core `sha256:d0d23528a3e586f4ff17bccd701ac91351b7d20bc99b4792b6bfbb36898f7e33`;
|
||||
frontend `sha256:4dda207d4de8dca15ca6ff58bb93f16050c9e7dc2841c4fbbf252d0d5251ae47`.
|
||||
|
||||
## What ThothII is
|
||||
|
||||
A **human-in-the-loop datamart builder**: it turns a natural-language question into
|
||||
@@ -89,7 +114,7 @@ All three layers' deps installed (`npm install` in each, `python -m venv + pip i
|
||||
- frontend: `cd frontend && npm run dev` (Vite; `VITE_BACKEND_URL` → backend)
|
||||
- harness install: `cd harness && python -m venv .venv && pip install -e ".[dev]"` → `tht` on PATH
|
||||
|
||||
## How to test (all green as of 2026-07-07: harness pytest 330 / gate JS 107 / backend 71 / frontend 182)
|
||||
## How to test (green 2026-07-14: harness pytest 798 / gate JS 126 / backend 143 / frontend 250)
|
||||
- harness: `cd harness && .venv/bin/pytest -q` (5 L2/real-DB tests are deselected by default)
|
||||
- backend: `cd backend && npx vitest run` · typecheck `npx tsc --noEmit -p .`
|
||||
- frontend: `cd frontend && npx vitest run` · typecheck `npx tsc -b` · e2e `npm run e2e` (Playwright)
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
# ThothII workflow UI contracts
|
||||
|
||||
- Pi reasoning arrives as nested `message_update.assistantMessageEvent.type = thinking_delta`.
|
||||
The backend maps it to the named SSE event `activity_delta`; the frontend EventSource must
|
||||
explicitly subscribe to that name. Model activity is separate from final `text_delta` output.
|
||||
- Session create/resume must preserve the configured or persisted thinking level. Forcing
|
||||
`thinking: off` disables the upstream signal and makes the activity panel legitimately empty.
|
||||
- A join-only `reviewer_decide` proposal is one complete, atomic join set. The read-only
|
||||
`join-review` widget persists every proposed join on Continue; `Other — specify` persists none
|
||||
and requires the model to propose the complete corrected set again. Ledger read, sequence
|
||||
assignment, and atomic replacement share a per-session cross-process writer lock.
|
||||
- A v2 phase summary accepts `open_questions?: string[]`. Validate this at the gate boundary and
|
||||
normalize legacy malformed entries defensively in the viewer so one object cannot crash React.
|
||||
- `SqlViewer`'s horizontal/vertical layout control is meaningful only with multiple SQL blocks;
|
||||
hide it for the single CTE result shown by `CteResultViewer`.
|
||||
- Deployment lifecycle details live in [[datamart-builder-deployment-gotchas]]: a rebuilt image
|
||||
does not update a running Compose service until the containers are recreated.
|
||||
@@ -1,3 +1,4 @@
|
||||
# Brain
|
||||
|
||||
- [[codebase/datamart-builder-deployment-gotchas]]
|
||||
- [[codebase/workflow-ui-contracts]]
|
||||
|
||||
@@ -285,12 +285,12 @@ Run: `cd harness && npm test`
|
||||
|
||||
Expected: all pass.
|
||||
|
||||
- [ ] **Step 2: Update project state and durable architectural note**
|
||||
- [x] **Step 2: Update project state and durable architectural note**
|
||||
|
||||
Record the implemented contracts, verification counts, deployment state, and the distinction
|
||||
between building an image and recreating a service.
|
||||
|
||||
- [ ] **Step 3: Build and recreate Compose services**
|
||||
- [x] **Step 3: Build and recreate Compose services**
|
||||
|
||||
Run: `docker compose build`
|
||||
|
||||
@@ -298,15 +298,16 @@ Run: `docker compose up -d --force-recreate`
|
||||
|
||||
Expected: both services are recreated from the new images.
|
||||
|
||||
- [ ] **Step 4: Verify deployed containers**
|
||||
- [x] **Step 4: Verify deployed containers**
|
||||
|
||||
Run: `docker compose ps`
|
||||
|
||||
Run: `docker inspect thothii-core thothii-frontend --format '{{.Name}} {{.Image}} {{.State.Health.Status}}'`
|
||||
Run: `docker inspect thothii-core-1 thothii-frontend-1 --format '{{.Name}} {{.Image}} {{.State.Status}}'`
|
||||
|
||||
Expected: both report the new image ids and `healthy`.
|
||||
Expected: both report the new image ids and `running`; the core healthcheck reports `healthy`
|
||||
(the frontend image has no healthcheck).
|
||||
|
||||
- [ ] **Step 5: Review diff and commit intentionally**
|
||||
- [x] **Step 5: Review diff and commit intentionally**
|
||||
|
||||
Run: `git diff --check && git status --short && git diff --stat`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user