From 257ab48f0f26f5e6a4280c3c7bce32278b8a29f5 Mon Sep 17 00:00:00 2001 From: Shane Maynard Date: Sun, 4 Oct 2026 08:38:04 -0400 Subject: [PATCH] docs: confirm web Docker release verified in production --- QUALIFICATION.md | 17 ++++++++++++++--- docs/WEB_UX_REFINEMENT.md | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/QUALIFICATION.md b/QUALIFICATION.md index 7701594..0bbf7bd 100644 --- a/QUALIFICATION.md +++ b/QUALIFICATION.md @@ -1,14 +1,25 @@ # Multi-user Hermes migration — qualification and operations -## Web UX refinement — 2026-10-04 (offline, not deployed) +## Web UX refinement — 2026-10-04 (production deployed) + +Release `ea4e191` deployed successfully via [Gitea run244](https://git.srmr.xyz/snowspeeder/hope-voice-api/actions/runs/244) +following exact Python3.12 CI qualification:148 passed plus theme verification. +Initial runner bind failure and a real SQLite cancellation/close race were fixed, +without disabling qualification or changing protected runtime configuration. +Docker speech/web and control containers restarted with newly built images and +reported healthy/OK. All seven live web entrypoint assets matched release bytes; +anonymous auth/token remained401. Live mobile login loaded without JS errors or +overflow. Account data was not read/mutated; no authenticated CRUD, audio or native +installation claim is made. Detailed receipts are in the linked report below. Web-only sidebar actions, Library upload/reuse and Saved drafts, scheduled-task layout, memory revision recovery, and contextual Security/status/signout improved. Final 43 offline browser tests passed; 85 final full-interface/internal-scroll screenshots captured at 1440/390/320 widths with no JS or unhandled/external requests. Independent source review findings fixed and final review approved. -See [detailed scope and evidence](docs/WEB_UX_REFINEMENT.md). No live API, -production deployment, native parity or physical audio claim for this refinement. +See [detailed scope and evidence](docs/WEB_UX_REFINEMENT.md). Live public asset, +anonymous authorization and container-health verification is documented above; +native parity and physical audio remain outside this refinement. ## iPhone certificate onboarding follow-up — 2026-10-01 diff --git a/docs/WEB_UX_REFINEMENT.md b/docs/WEB_UX_REFINEMENT.md index fc93257..c98f4c2 100644 --- a/docs/WEB_UX_REFINEMENT.md +++ b/docs/WEB_UX_REFINEMENT.md @@ -28,4 +28,18 @@ Final integrated offline browser selection: **43 passed** in 70.91s: JavaScript syntax and diff whitespace checks passed. Independent read-only source/contract review initially found asynchronous ownership, hidden feedback, capability refresh and revision recovery issues; these were corrected with regressions and final review approved the scope. Earlier retry test failed because it asserted before the awaited retry finished; corrected to wait for completed state, not to remove behavior coverage. -No production deployment, live API request, speech/device qualification or iOS parity implementation is claimed. Existing untracked design artifacts were left untouched. +The initial refinement was qualified offline only. Production publication was subsequently authorized; see the deployment receipt below. No speech/device qualification or iOS parity implementation is claimed. Existing untracked design artifacts were left untouched. + +## Production release follow-up + +Published web commit `41ca590`, then corrected two real CI/shutdown defects discovered by production qualification: + +- Run 242 failed before build: a socket-backed runner checkout cannot be bound through the host Docker daemon. Commit `5a02b8f` streams `git archive HEAD` into the throwaway qualification container instead, excluding untracked runtime/secrets and retaining all tests. +- Run 243 revealed SQLite close racing a cancelled `asyncio.to_thread` worker. Commit `ea4e191` serializes connection close with the shared database lock; deterministic regression safely rejects the original implementation and proves the terminal event persists. Packaging assertions follow the safe source-transfer mechanism. +- Run 244's exact Python 3.12 offline qualification passed **148 tests** in 64.69s, with one unrelated Starlette/httpx deprecation warning. Theme artifacts verified. The [production run 244](https://git.srmr.xyz/snowspeeder/hope-voice-api/actions/runs/244) completed **successfully** at 2026-10-04 12:36 UTC, rebuilding speech/web, control and Hermes WebUI images and deploying through the protected rollback-preserving script. + +Production checks at `https://192.168.86.2:9178` verified all seven entrypoint assets (`index.html`, `style.css`, `app.js`, `chat.js`, `features.js`, `settings.js`, `hope-themes.css`) HTTP200 and byte-for-byte equal to release `ea4e191`. Anonymous `/api/auth/me` and POST `/token` both returned401. Fresh mobile Chromium at390px rendered the live login gate without browser errors or horizontal overflow. Qualification used an exception for the installation's existing self-signed certificate only; no production TLS policy changed. + +Actual Docker `voice` and `hope-control` were running with new images `9475f397d2e2…` and `db756e976829…`, started at12:36:15/12:36:10 UTC respectively. Voice health was `healthy`; control `/health` returned `{"status":"ok"}`. Protected account homes/runtime/certificates and timestamped rollback containers retained. No account credentials, chats, uploads or memory were read or changed for these live checks. No authenticated CRUD/voice/device success is inferred from static assets and health checks. + +Neither failed qualification run reached deployment; the original production containers stayed healthy.