GUI: dashboard Attention Queue presents a curated severity mix instead of pure severity-sort (grouped Now/Today/Later headers); Today's Movements seed data curated so a fresh reset shows a credible day (2+ departures, 2+ returns), with a new seed-integrity test; About Demo restructured into a compact grid with progressive disclosure for technical sections; Duplicate Merge shows match/conflict counts, hides matching fields by default, and previews the final merged record before confirmation. Repo hygiene: removed a stray empty `backend;C` directory and an untracked 31MB zip export; `.gitignore` now excludes future archive exports. n8n: fixed invalid JSON (a missing `},` between two node objects) in the committed `fleet-ops-vehicle-return.json` -- the file could not be parsed. Live-validated workflow 3 (RAGcore Procedure Sync): found and fixed a real defect (three body parameters had a stray trailing `}}`) and a missing Error Workflow wiring, both via the safe `n8n import:workflow` CLI path; exported the corrected, still- inactive workflow as the new source of truth and updated MANIFEST.md/check_drift.py. Publishing it (starts real daily unattended runs) remains a separate decision. RAGcore: root-caused and fixed (live, approved) the "zero retrieval candidates" bug -- a filesystem permission bug (`embedding_profiles.json` unreadable by the app's own runtime user) that broke every retrieval call before it reached Qdrant. Every other suspect (grants, scope resolution, Qdrant filters, embeddings) was verified healthy first. Found a second, deeper gap: the reranker adapter calls an Ollama HTTP route that does not exist on the deployed Ollama version, so `/v1/answers` still returns `not_answerable`. `KNOWLEDGE_PROVIDER` stays `demo` until that is resolved on the RAGcore side. Evidence-based MCP Hub integration status (real tool-call audit history, not just a boolean flag) replaces the old `configured`/`not_configured` guess. Full findings in `docs/final-integrations/current-state-audit.md`. Backend: 172 tests passing, ruff clean, mypy clean (50 files). Frontend: tsc clean, production build clean. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
n8n workflows
Canonical, live-validated workflow definitions live under n8n/workflows/. Each file is a
cleaned export (secret values replaced by named-credential references, never literal
tokens) of the workflow actually running on https://n8n.itworx.tech. See
n8n/workflows/MANIFEST.md for the authoritative list: canonical name, purpose, trigger,
required credentials, live workflow ID, active status and a checksum of each file.
The two pre-integration starter files that used to live directly under n8n/
(mobilityops-return-processing.json, mobilityops-scheduled-quality-scan.json) have been
retired — they predate the live n8n validation pass and embedded the service token as a
literal header value instead of a Header Auth credential. Do not resurrect them; the
n8n/workflows/ versions are the superseding source of truth and are what
deploy/unraid/setup-existing-n8n.sh / setup-scheduled-scan.sh import.
Deploying a workflow from these files into a fresh or existing n8n instance still requires a
one-time manual step: create the named Header Auth credentials in the n8n UI (see each
workflow's credentials block and the manifest) before publishing. This is deliberate —
credential values are never committed to the repository.