Bodylog was deployed from merged commit dbbed612290e as immutable image gitea.app.lan/bodylog/bodylog.dev:sha-dbbed612290e-apk-c6232dd23656.
The change removes retained-queue enumeration from Garmin health-cursor bookkeeping and installed-version publication. The signed 17-product Bodylog Sync data field 0.5.15 was published to the existing Garmin Beta App and to Gitea prerelease garmin-connectiq-v0.5.15; SHA-256: 209c3cb06a3e029ee08a95250913d0a61e76fddacd040b93041a7ed6a5a75086.
The first automatic deployment stopped during the runner's Rust toolchain download. A workflow-dispatch retry passed Rust, database-backed, Android, image-build, and rollout gates. Kubernetes reported one ready Bodylog replica, zero restarts, image digest sha256:3784c9bfc0f05ea529f2254116c315b6f23d07898c1a60d8bc7615c441c0b04d, and both public health routes returned ok.
A physical diagnostic confirmed installed data-field package version 46, corresponding to 0.5.15. The request then timed out in Garmin's phone-to-watch route before any watch callback, receipt, data, or completion, so the watch-side fix was not reached.
Requirements PR #1137 and implementation PR #1138 were merged at commit b93e9adbf63c. The Android background worker no longer treats transport-unavailable, disconnected, unreachable, timed-out, partial, or backend-upload failures as a completed synchronization. It retries after 5, 10, and 20 minutes, then returns to the durable 30-minute baseline. Each worker execution requests the watch independently of the foreground throttle. Manual synchronization remains only an optional accelerator and diagnostic.
Targeted Garmin Android tests and both full Gitea pipelines passed. Play internal release 0.1.26-08-26-13-24-49 (version code 2026062554) and the website APK were published with SHA-256 2fae3ba4aa0455aa65830d40a7114f9ad2ade1cdd0f62662dc3e37e54ba432cd.
Production runs immutable image gitea.app.lan/bodylog/bodylog.dev:sha-b93e9adbf63c-apk-2fae3ba4aa04, digest sha256:dd193f84bff43d49dbbbe855abd2e2319bb5404056a6a26e918ecb662f638c4c. Kubernetes reported one ready updated replica, zero restarts, a completed rollout, and both public health endpoints returned ok.
Requirements PR #1141 and implementation PR #1142 were merged at commit e4b450a68683. The watch now transmits the request receipt before retained-state promotion, queue retry, health capture, or scanning. Android treats sequential phone-to-watch delivery as a separate bounded phase and starts the full response deadline only after delivery finishes. Automatic worker executions now upload the same durable per-target transport trace as manual attempts, explicitly marked with their trigger.
Backend tests passed with 249 successes and 22 environment-gated cases; targeted Android tests, Connect IQ package contracts, and signed 17-device compilation also passed. Gitea workflow runs 1634 and 1635 passed, including database-backed integration tests, Android release builds, image publication, and rollout.
The existing Garmin Beta App reported 0.5.15 before publication and 0.5.16 afterward. The signed archive was mirrored in Gitea prerelease garmin-connectiq-v0.5.16; both copies matched SHA-256 648a22321aac12d1a6a092d4dafb5a12f89fb94a0e3f4b4945633ba464c59e2d.
Production runs immutable image gitea.app.lan/bodylog/bodylog.dev:sha-e4b450a68683-apk-3af397cfd622, digest sha256:c97417016bb0f4b6d91c05abaedaa6bd8d7c09ead9e00c17dc1a6cfe873704e2. Kubernetes reported one ready replica, zero restarts, migration column garmin_sync_diagnostic.trigger as non-null, and both public health routes returned HTTP 200.
Production analytics showed the phone active on Android build 0.1.26-08-26-14-48-47 while the synchronization fix in 0.1.26-08-26-15-33-47 remained uninstalled. The Play workflow had uploaded every internal-testing bundle with release status draft, which left successful builds unpublished and ineligible for Play-managed delivery.
Requirements PR #1144 and implementation PR #1145 changed only the configured Play release state from draft to completed; the audience remains the internal testing track. Gitea workflow run 1638 passed the complete Android test, signed bundle, artifact, and Google Play upload path for version 0.1.26-08-26-16-03-51 (version code 2026062568). Evidence PR #1146 records the accepted release contract in the repository.
Physical acceptance remains pending until normal distribution installs the new Android and watch releases and unattended production telemetry shows an automatic trace with receipt/completion plus fresh Garmin health samples. No watch waking, Garmin Connect check, app opening, or repeated manual synchronization is part of that acceptance path.
At 16:35 UTC, repeated passive audits still showed Android 0.1.26-08-26-14-48-47, the latest trace remained the 13:06 manual unreachable attempt, Garmin events ended at 2026-08-14, and Garmin health samples ended at 2026-08-08. The repository, backend, Garmin Beta, Gitea mirror, completed Play internal release, and production deployment have no remaining in-scope mutation. Physical acceptance is blocked on the external phone and watch distribution state changing; resume when the installed Android version advances or unattended telemetry arrives.