130 lines
8.1 KiB
Markdown
130 lines
8.1 KiB
Markdown
# Fleet Ops — final acceptance evidence
|
||
|
||
## Accepted implementation
|
||
|
||
- Deployment source marker: current `master`; the application image was built from runtime commit `cb7edb0` and the following commits contain acceptance/evidence only.
|
||
- Live demo: `http://192.168.10.150:1236` — public passwordless synthetic demo.
|
||
- Deployment: Unraid `/mnt/user/appdata/mobilityops`, Compose project `mobilityops`.
|
||
- Database migration: `b913a72e8c14 (head)`.
|
||
- Product name: Fleet Ops; MobilityOps remains the technical repository/deployment ID.
|
||
|
||
## Clean acceptance — 2026-08-10
|
||
|
||
```text
|
||
Backend, isolated PostgreSQL: 241 passed, zero warnings
|
||
Playwright, fresh local build: 152 passed (5.4 min)
|
||
Playwright, live production: 152 passed (4.7 min)
|
||
Ruff: clean
|
||
Mypy: clean across 58 source files
|
||
Frontend lint/build: passed
|
||
npm audit, full and prod: 0 vulnerabilities
|
||
Alembic: b913a72e8c14 (head)
|
||
```
|
||
|
||
The browser suite covers both roles, protected routes, booking/return/maintenance/user/privacy workflows, five data-quality resolution types, correlated audit, retryable orchestration, grounded knowledge in three languages, the complete guided demo, the recruiter highlights, keyboard behaviour and responsive layouts from 360 to 1440 px.
|
||
|
||
The provider matrix explicitly covers both valid title contracts: the deterministic provider uses Markdown frontmatter titles, while production RAGcore returns curated localized presentation titles. Both must include the language-specific source fragment. The focused live matrix passed 3/3, followed by the complete 152/152 green production run.
|
||
|
||
## Production hand-off state
|
||
|
||
The final reset completed immediately before the verified Hub call at `2026-08-10T19:16Z` and restored:
|
||
|
||
```text
|
||
users 2 · customers 180 · vehicles 50 · bookings 254 · inspections 75
|
||
maintenance 40 · data-quality issues 33 · workflow runs 20
|
||
scenario_integrity.all_ready = true (5/5 scenarios)
|
||
```
|
||
|
||
API readiness is `ready`, PostgreSQL is `up`, and API, web, database, scheduled backup, Prometheus and Grafana are running healthy/current. No traceback or critical error appears in post-deployment API/backup logs.
|
||
|
||
A pre-deployment custom-format backup was created and independently verified by SHA-256 plus `pg_restore --list`:
|
||
|
||
`/mnt/user/appdata/mobilityops/backups/postgres/mobilityops-20260810T185833Z.dump`
|
||
|
||
## External integration evidence
|
||
|
||
- **Existing central n8n:** configured, dispatch enabled and operational. All four expected workflows have recent healthy heartbeats. The reset state contains 19 successful runs, zero pending, zero unexpected failures and one explicitly synthetic failed-retry scenario.
|
||
- **RAGcore:** reachable and ready for tenant `northstar-mobility-demo`, workspace `mobilityops`, collection `internal-procedures`. Exact identity lookups independently confirm 11/11 active published documents in each of NL/EN/FR; the latest n8n report separately records 33 synchronized documents and zero failures. The canonical parsed-artifact hash is not misrepresented as a raw-source hash.
|
||
- **ITWorx MCP Hub:** registration is enabled, the Hub is reachable and Fleet Ops is **operational**. Three real `mobilityops.operations.summary` verification calls are audited under the Hub's tenant-bound client identity; the final short-lived bearer produced HTTP 200/JSON and HTTP 401 after immediate revocation. All exposed Fleet Ops tools remain read-only.
|
||
|
||
## Recruiter and visual acceptance
|
||
|
||
The public entry now offers a direct **90-second Highlights** route. It links three product actions to their engineering proof, while the **Engineering** workspace explains domain ownership, commit-before-orchestration, citation-bound AI, security and explicit scope.
|
||
|
||
Interactive live inspection confirmed:
|
||
|
||
- no horizontal overflow on Highlights or Engineering at desktop; automated coverage confirms 360/390 px mobile layouts;
|
||
- clear hierarchy, consistent primary actions and readable proof cards;
|
||
- compact remaining-attention action (count badge, two-line label, small directional icon) without the former stretched empty panel;
|
||
- truthful live n8n/RAGcore/MCP labels after reset, including 11 verified RAG documents and the real Hub client/tool evidence;
|
||
- no dead links, placeholder numbers or unexplained raw data-quality references;
|
||
- complete synthetic-data disclosure on login and in the persistent shell.
|
||
|
||
Current evidence images are in `artifacts/evidence/screenshots/`:
|
||
|
||
- `1-login.png`
|
||
- `2-highlights.png`
|
||
- `3-engineering-story.png`
|
||
- `4-dashboard.png`
|
||
- `5-knowledge-evidence.png`
|
||
- `6-highlights-mobile.png`
|
||
|
||
## Deliberate boundary
|
||
|
||
This is a completed, production-shaped public demo—not claimed customer adoption and not a general ERP. Accounting, payments, public reservations, CRM, inventory, HR, a second RAG stack, a separate MCP server and autonomous write agents remain intentionally excluded. A real personal-data rollout would additionally require the adopting organisation's identity provider, retention approvals, secrets lifecycle, alert ownership and disaster-recovery governance.
|
||
|
||
## Local M54 upgrade candidate — 2026-08-23 (not released)
|
||
|
||
This evidence supplements, but does not replace, the production hand-off above. The local
|
||
working tree contains an intentionally uncommitted recruiter UX and resilience upgrade;
|
||
production, its database and the production screenshots were not changed.
|
||
|
||
Implemented evidence includes the interactive five-step system flow, hardened booking/return/
|
||
data-quality invariants, atomic cross-replica demo reset, exact n8n callback and dispatcher
|
||
leases, citation-bound RAGcore answers, deterministic seed regeneration and abortable,
|
||
race-safe frontend data loading. Keyboard, forced-colours, reduced-motion and responsive
|
||
behaviour remain part of the established Fleet Ops design system.
|
||
|
||
Exact local validation commands and results:
|
||
|
||
```text
|
||
docker compose -p mobilityops-m54-final -f compose.yaml -f compose.test.yaml run --build --rm api pytest
|
||
331 passed in 94.19s
|
||
focused DQ-03 edge/concurrency suite
|
||
44 passed
|
||
combined RAGcore, dispatcher and data-quality suite
|
||
121 passed
|
||
docker compose -p mobilityops-lint -f compose.yaml -f compose.test.yaml run --build --rm --no-deps api ruff check app tests
|
||
All checks passed
|
||
docker compose -p mobilityops-lint -f compose.yaml -f compose.test.yaml run --build --rm --no-deps api mypy app
|
||
Success: no issues found in 62 source files
|
||
cd frontend && npm run lint
|
||
passed
|
||
cd frontend && npm run build && npm run budget
|
||
passed
|
||
python scripts/check-source-budgets.py
|
||
passed; data-quality service 799/900 lines; main CSS 76342/78000 bytes;
|
||
architecture CSS 8057/9000 bytes; data-quality CSS 6525/8000 bytes
|
||
cd frontend && npx playwright test
|
||
171 passed (6.9m) in one uninterrupted run against the rebuilt release container
|
||
global-search shortcut regression, repeated against the release container
|
||
10 passed in 10 consecutive repetitions
|
||
docker compose -p mobilityops-contracts -f compose.yaml -f compose.test.yaml run --build --rm --no-deps --volume "C:\Projects\MobilityOps:/repo" --workdir /repo/backend api python ../scripts/check-contracts.py
|
||
OpenAPI, event, MCP and n8n contracts are synchronized
|
||
cd frontend && npm audit --omit=dev
|
||
0 vulnerabilities
|
||
```
|
||
|
||
The final local reset restored `2 users / 180 customers / 50 vehicles / 254 bookings / 75
|
||
inspections / 40 maintenance records / 33 data-quality issues / 20 workflow runs`, with all
|
||
five synthetic scenarios ready. API readiness is `ready`, PostgreSQL is `up`, the rebuilt
|
||
API/web stack remains available, and the final 20-minute log scan contains no traceback,
|
||
critical, unhandled, panic, fatal or emergency hit. `git diff --check` is clean.
|
||
|
||
In-app browser inspection covered the login, Dashboard and Engineering surfaces at desktop
|
||
and 390×844. It confirmed zero horizontal overflow, no alert or console errors, the intended
|
||
one-column mobile flow, readable mobile cards and consistent selected-step feedback. The local
|
||
Compose candidate is healthy at `http://localhost:1228`. A release commit/tag, production
|
||
backup and deployment remain deferred until explicit authorization; production and its data
|
||
were not touched by M54.
|