diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index 74b7478e..a3edab4e 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -1,6 +1,6 @@ # ThothII — Project State -> Starting-point snapshot for new sessions. Last updated: 2026-07-14 (Qwen connectivity and Resume recovery live). +> Starting-point snapshot for new sessions. Last updated: 2026-07-15 (complete activity timeline and CTE spacing live). > Point a fresh session here ("read PROJECT_STATE.md") before substantial work. ## Deployment — Docker locale (Profile A, co-located) — LIVE 2026-07-12 @@ -116,6 +116,38 @@ ThothII gira in Docker sul server co-locato, **embedded nel portale omics_portal exited 0 with `controller.abort()` in cleanup, preserving the gate, session cleanup, and exact settings-restoration evidence. +### Complete activity timeline + CTE spacing — LIVE 2026-07-15 + +- **Model activity is complete from F1.** The left panel now records the submitted prompt before + session creation completes, then projects thinking, assistant output, sanitized tool lifecycle, + reviewer gates, status, and turn lifecycle in chronological order. It remains in-memory only; + closing and reopening the panel does not discard it, while Resume intentionally starts a fresh + live timeline. +- **Tool activity is a narrow public contract.** Only call id, tool name, and + `running`/`completed`/`failed` status cross Pi → backend → SSE. Updates, arguments, results, + commands, output, credentials, and raw errors stay server-side. Resume and SSE replay were also + hardened for process restarts, concurrent lifecycle requests, stale callbacks, cursor reset, and + multi-client reconnects. +- **CTE plan layout uses real Tailwind 3 spacing.** Shared cards use concrete 16 px default / 12 px + compact padding utilities; F6 CTE headers and content use responsive 16/20 px edge padding. + Semantic ordered steps, single-boundary divided filter/table lists, long-value wrapping, and a + plain top-divider rationale preserve the artifact content while improving scanability. +- **Verification/deploy (`2026-07-15T01:45:05+02:00`):** backend **202/202** and frontend + **280/280** passed; both TypeScript gates and production builds exited 0; the Impeccable layout + detector returned `[]`; `git diff --check` was clean. Compose rebuilt and force-recreated `core` + and `frontend`; core is healthy and frontend is running. Built and running image ids match: core + `sha256:1b98643d36f50488a6eebdc1203517406fce4fcc20f4b0bacfb7c8bf01bf1b91`, frontend + `sha256:5d35f59c6c45746fa4fa1deba9f63f31d28244fa6635a37a18cac911cc5d7585`. + The frontend entry changed from `index-CX4AkqeB.js` to `index-DcZviApa.js`, so only + `omics_portal-web-1` was restarted to refresh its indefinite manifest cache. +- **Live local-Qwen activity smoke:** session + `2026-07-14-234408-activity-smoke-2026-07-14t23-44-07-508z` reached sanitized tool activity and + the first reviewer gate with no forbidden activity fields. A second no-thinking probe + (`2026-07-14-234546-no-thinking-activity-smoke-2026-07-14t23`) observed **0** + `activity_delta` events while still receiving **3** sanitized tool events and the gate. Both + probes closed with 200, deleted only their own session with 204, restored the exact saved + settings object, and left no Pi runtime or smoke session. + ## What ThothII is A **human-in-the-loop datamart builder**: it turns a natural-language question into @@ -170,7 +202,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 (green 2026-07-14: harness pytest 798 / gate JS 126 / backend 168 / frontend 256) +## How to test (latest TS gates green 2026-07-15: backend 202 / frontend 280; harness 798 / gate JS 126 last recorded 2026-07-14) - 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) diff --git a/brain/codebase/workflow-ui-contracts.md b/brain/codebase/workflow-ui-contracts.md index 6b3ef000..64d285ce 100644 --- a/brain/codebase/workflow-ui-contracts.md +++ b/brain/codebase/workflow-ui-contracts.md @@ -23,3 +23,11 @@ closes the old EventSource and opens the same session URL again. Failed Resume must not reconnect. - SSE endpoints are intentionally keep-alive. Browser cleanup and one-off probes must explicitly close the EventSource or cancel/abort the response reader after their terminal event. +- The Model activity panel is an in-memory chronological projection of the prompt, thinking, + assistant output, sanitized tool lifecycle, reviewer gates, status messages, and turn lifecycle. + It starts with the local F1 prompt and is deliberately not persisted as chat history. +- Pi tool events may cross the backend/client boundary only as call id, tool name, and + `running`/`completed`/`failed` status. Tool updates, arguments, partial/final results, commands, + raw output, and raw errors remain server-side. +- The frontend uses Tailwind CSS 3.4. Shared primitives must use concrete Tailwind 3-compatible + spacing utilities; Tailwind 4 custom-spacing syntax can compile to no effective padding here.