diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index a3edab4e..debd31b5 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -132,21 +132,22 @@ ThothII gira in Docker sul server co-locato, **embedded nel portale omics_portal 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 +- **Final verification/deploy (`2026-07-15T02:18:54+02:00`, HEAD `56d73d2`):** backend + **204/204** and frontend **285/285** passed; both TypeScript gates and production builds exited + 0, and `git diff --check` was clean. The final lifecycle fixes make restarted-hub cursor replay + generation-aware and mutate frontend delete/resume state only for sessions actually deleted. + Compose rebuilt and force-recreated `core` and `frontend`; built and running image ids match: + core `sha256:edd8f19ef269ee6f45ecaf464ba4053460d94378f9cdc967d2dbcb386f599147` + (`healthy`), frontend + `sha256:dd7ef721b661b57b8c5422c47088e1a9a2e9821af021541cab372c9892fbd638` + (`running`). The entry changed from `index-DcZviApa.js` to `index-CuIt1NQg.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. +- **Final live local-Qwen smoke:** session + `2026-07-15-001922-final-no-thinking-activity-smoke-2026-07` observed **0** + `activity_delta` events while receiving **5** strictly allowlisted tool lifecycle events and the + first reviewer gate (`bash` running/completed and `reviewer_select` running). No forbidden tool + field crossed SSE. Cleanup closed with 200, deleted only that session with 204, restored the + exact settings object, and left no Pi runtime or smoke session. ## What ThothII is @@ -202,7 +203,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 (latest TS gates green 2026-07-15: backend 202 / frontend 280; harness 798 / gate JS 126 last recorded 2026-07-14) +## How to test (latest TS gates green 2026-07-15: backend 204 / frontend 285; 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 64d285ce..00066474 100644 --- a/brain/codebase/workflow-ui-contracts.md +++ b/brain/codebase/workflow-ui-contracts.md @@ -31,3 +31,9 @@ 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. +- A native EventSource can retain a `Last-Event-ID` from an older backend process. If that cursor + is newer than every id produced by the current `SseHub` generation, treat it as stale and replay + the fresh generation from id 0 instead of suppressing all new low-id events. +- Batch delete mutates client selection, active-session, panel, and Resume intent only for ids whose + DELETE actually succeeded. A failed active delete preserves its live binding, and deleting an + unrelated session must not invalidate a concurrent Resume targeting another id.