## Summary
- Replaces the rejected server→ADB→Tailscale gym path with a phone-local Android bridge.
- Adds `phone-bridge/`: HevyBridge APK with AccessibilityService + localhost HTTP server on `127.0.0.1:18090`.
- Fitbit companion now polls the Pixel-local bridge and sends watch actions locally (`set_done`, `skip_rest`, `timer_adjust`).
- Cloud backend is now explicitly debug/download fallback only; restored schema + `/api/hevy/action` so it no longer crashes from the overwritten merge.
- CI builds both Fitbit `.fba` and `hevy-bridge.apk` and uploads both as release artifacts.
- Updated README/HANDOFF docs to make clear: no Tailscale dependency in the gym.

## Tested
- `python3 -m py_compile backend/server.py`
- `gradle -p phone-bridge assembleDebug --no-daemon`
- `FITBIT_QA_COMMANDS=1 npx fitbit-build`
- Installed `hevy-bridge.apk` on Pixel via ADB
- Enabled AccessibilityService via ADB
- Verified local API: `GET /health` and `GET /api/hevy/live` through `adb forward tcp:18090 tcp:18090`
- Verified public downloads via Funnel `:8443/hevy-api/download/app.fba` and `/download/hevy-bridge.apk`

## Runtime architecture
```text
Fitbit Sense 2 app
  ↕ peerSocket
Fitbit companion inside Fitbit Android app
  ↕ fetch('http://127.0.0.1:18090')
HevyBridge APK on Pixel
  ↕ AccessibilityService
Hevy Android app
```
