--- deploy_status: SUCCESS version: v0.0.6 work_item: ET-014 pr: 28 merge_commit: 864181e date_utc: "2026-06-04T11:30:00Z" environment: test healthcheck: PASS smoke: PASS --- # Deploy Log — ET-014 - **Version (tag):** v0.0.6 - **Date:** 2026-06-04 11:30 UTC - **PR:** #28 (`fix(ui): terrain-popup закрывается при открытии bottom-sheet (ET-014)`), merged into `main` (merge commit `864181e`). - **Environment:** test (https://openclaw.mva154.duckdns.org/enduro/) - **Healthcheck:** PASS - **Smoke:** PASS - **Status:** SUCCESS ## Pipeline 1. **Merge.** `POST /repos/admin/enduro-trails/pulls/28/merge` (Gitea API, `Do=merge`) → HTTP 200. PR был `mergeable=true`, конфликтов с `main` (на котором уже сидел деплой ET-013 / v0.0.5) не было. Merge commit `864181e` сидит на `origin/main`. 2. **Tag.** Инкремент patch от `v0.0.5` → `v0.0.6`. Тег создан от `origin/main` (`git tag v0.0.6 origin/main && git push origin v0.0.6`). 3. **Deploy hook.** `ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh` → RC=0. Хук тянет `main`, пересобирает/перезапускает docker compose сервис `app` на хосте `mva154`. Previous-image-digest на хосте (`/home/slin/repos/enduro-trails/.deploy-prev-image`) — `sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98` (тот же, что был зафиксирован при деплое ET-013; хук не обновляет маркер, если digest не изменился, но это не означает, что rebuild не произошёл — см. smoke ниже, в задеплоенном `app.js` присутствуют ET-014-маркеры). Этот digest доступен для `--rollback`. 4. **Healthcheck.** `GET https://openclaw.mva154.duckdns.org/enduro/` → HTTP 200 с первой попытки (без необходимости polling-loop). 5. **Smoke.** | Ресурс | Статус | Размер | |---|---|---| | `/enduro/` (index.html) | 200 | 37 251 B | | `/enduro/app.css` | 200 | 48 675 B | | `/enduro/app.js` | 200 | 143 856 B | | `/enduro/units.js` | 200 | 8 773 B | | `/enduro/gpx.js` | 200 | 48 674 B | | `/enduro/gps_tracks.js` | 200 | 38 695 B | Размер `/enduro/app.js` вырос со 142 964 B (v0.0.5) до 143 856 B (+892 B) — это ровно тот yield-блок, который добавил фикс ET-014 (`src/web/app.js`, +17 строк, см. ADR-019). Дополнительные проверки на специфику ET-014 (фикс «terrain-popup yields to opening bottom-sheet»): - В задеплоенном `/enduro/app.js` присутствуют маркеры `ET-014` (×4), `sheet-popup yield` (×2), `ADR-019` (×3) — фикс действительно доехал до прода, а не остался старым image-кэшом. > Замечание про шаблон smoke. Алгоритм деплоера упоминает > `/static/style.json` и `/static/app.js`, но в `enduro-trails` > такого префикса нет — статика монтируется в корень `/enduro/` > (`app.js`, `app.css`, …); `style.json` приложение не отдаёт > отдельным эндпоинтом, MapLibre-стиль формируется в `app.js` > программно. Корректный smoke (как и в ET-013) — над реально > отдаваемыми URL'ами (`/enduro/app.js` и пр.); они все 200. > Прогон против шаблонных URL дал бы ложный rollback. Это > известный gap в инструкции, отмеченный в deploy-log ET-013. ## Что фактически уехало в v0.0.6 - **ET-014** — фикс UX-конфликта `terrain-popup ↔ bottom-sheet` (`src/web/app.js`, +17 строк): при открытии любого bottom-sheet активный `terrain-popup` корректно закрывается, а не остаётся висеть поверх UI (ADR-019). Поведение действует только на mobile (`window.innerWidth ≤ 768`); на desktop popup сохраняется (см. AC-01..AC-08, REQ-F-1..F-8). Покрытие: 16 unit-тестов (`tests/unit/sheet_popup.test.js`, 11 кейсов поведения + 5 boundary; `tests/unit/test_sheet_popup.py`, 4 архитектурных invariants ADR-019). - Никаких изменений API/БД/тайлов; чисто клиентский fix. ## Rollback Не понадобился. Если бы потребовался — план: `ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh --rollback` (хук восстановит образ из `.deploy-prev-image`, `sha256:4c09cd6f9fe8…ff98` — это, к слову, образ ET-013 v0.0.5). НЕ `git checkout` в shared-репо — этот путь прямо запрещён в инструкции деплоера, потому что загаживает рабочее дерево и не откатывает прод. ## Артефакты - Tag: `v0.0.6` (`origin/main` @ `864181e`) - PR: #28 (merged) - Deploy timestamp: 2026-06-04 11:30 UTC - Previous image digest (для возможного rollback): `sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98`