From 3808bbe1326643bff25c7024475f78e1a9937c36 Mon Sep 17 00:00:00 2001 From: NuklearRabbit <145918611+NuklearRabbit@users.noreply.github.com> Date: Wed, 5 Aug 2026 16:39:41 +0200 Subject: [PATCH] docs: record push, Unraid deploy, and live verification evidence Closes out the demo-scenario fix: pushed the two pending commits, deployed 6f77a30 to Unraid, and verified all four live checks (integration status, failed-workflow listing, retry via API and UI, audit trail, Automation page). Co-Authored-By: Claude Sonnet 5 --- PROJECT_STATE.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/PROJECT_STATE.md b/PROJECT_STATE.md index 4c7ed3e..4ace1e9 100644 --- a/PROJECT_STATE.md +++ b/PROJECT_STATE.md @@ -1894,3 +1894,43 @@ for a failure that exists on purpose — the demo told an untrue story about its - **Not done, and not claimed**: no deployment and no browser verification — the environment this ran in has no network to `192.168.10.150` and no Docker, so the live Unraid instance still runs the previous revision. Playwright e2e was not re-run. + +## Pushed and deployed the demo-scenario fix (2026-08-05) + +Closed out the previous session's outstanding item: pushed the two unpushed commits and +deployed them live. + +- **Local gates, re-run in this environment** (Docker + network available): + `docker compose build api` clean; `pytest -q` — **181 passed**; `ruff check .` — + clean; `mypy app` — clean (**50 files**); `cd frontend && npm run build` — clean + (`tsc -b && vite build`). +- **Pushed** `feat/fleet-ops-final-integrations` to `origin`; landing verified with a + fresh `git fetch` + `git log origin/...` (not just the push exit code) — `origin` now + at `6f77a30`. +- **Deployed to Unraid** following the branch's own established convention (`git + archive` of `HEAD` as `source-6f77a30.tar.gz`, `scp`'d to `.deploy/`, extracted over + `/mnt/user/appdata/mobilityops` excluding `.env` and `.deploy`, `.deploy/source-revision` + updated to the full hash `6f77a30dce7c7c7e728cf23f28ec2018300ffcfe`). `docker compose + -p mobilityops -f compose.yaml -f compose.unraid.yaml up --build -d db api web` — + `api`/`web` rebuilt and recreated, `db` untouched, migrations ran automatically with no + errors. Ran `seed --reset` (deterministic counts unchanged from prior sessions). +- **Verified live**, logged in as `operations_manager`: + - `/api/v1/integrations/status`: `n8n.state == "operational"`, `succeeded 19`, + `failed 1`, `unexpected_failed 0`, `demo_scenario_failed 1` — matched exactly. + - `/api/v1/workflows?status=failed`: one row, `BK-H-0020`, + `last_error_code: demoScenarioTimeout`, `is_demo_scenario: true`. + - `POST /api/v1/workflows/{event_id}/retry`: event went to `pending`, then (within + seconds) `succeeded`; aggregate status became `20 succeeded / 0 failed`. Repeated a + second time by re-running `seed --reset` and clicking the actual "Demoscenario + opnieuw proberen" button in the browser (not just the API) — same result, so the + retry is verified as a real dispatcher round trip through both entry points. + - `/api/v1/audit?action=workflow_retry`: recorded the retry with + `metadata.demo_scenario: true`. + - Automation page in the browser, `nl-BE` locale: row showed the "Voorbereid + Demoscenario" badge and the "Demoscenario opnieuw proberen" button; the n8n card + showed the green "Operationeel" badge throughout (never degraded/red). +- **Everything in the runbook was completed and verified.** Nothing was left + unverified. +- **Next action**: none required by this task. Longer-term open items remain as + recorded above — RAGcore reranker gap, n8n workflow 3 publication decision, no PR yet + opened from `feat/fleet-ops-final-integrations` to `master`.