Merge pull request 'deploy(ET-014): tag v0.0.6 + deploy log (SUCCESS)' (#29) from deploy/ET-014-v0.0.6-log into main
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
CI / lint (push) Has been cancelled

This commit was merged in pull request #29.
This commit is contained in:
2026-06-04 14:33:09 +03:00
2 changed files with 126 additions and 0 deletions

View File

@@ -18,8 +18,30 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
z≥8 не затронут (регрессия). Тесты: 18 unit zoom-tier+simplify,
9 integration endpoint z5-z7, 2 perf (PERF-Z5-01/02; avg ~64 мс,
p95 ~89 мс при 500 треках — ниже бюджета 200 мс/500 мс по M-6).
*(Код уехал на прод в составе v0.0.5; отдельный deploy-log ET-012
не закрыт — см. ET-013/14-deploy-log.md, раздел «Что фактически
уехало в v0.0.5».)*
Refs: ET-012.
## [v0.0.6] — 2026-06-04
> Деплой задеплоен на test (https://openclaw.mva154.duckdns.org/enduro/).
> Healthcheck + smoke PASS. См. `docs/work-items/ET-014/14-deploy-log.md`.
### Fixed
- ET-014: Фикс UX-конфликта `terrain-popup ↔ bottom-sheet` на mobile.
При открытии любого bottom-sheet (route-details / settings / layers /
search / track-details) активный `terrain-popup` (hillshade / TRI /
hypso info) теперь корректно закрывается через `popup.remove()`,
а не остаётся висеть поверх sheet, перехватывая клики (ADR-019).
Поведение действует только при `window.innerWidth ≤ 768` (mobile);
на desktop popup сохраняется (AC-01..AC-08, REQ-F-1..F-8).
Файлы: `src/web/app.js` (+17 строк, новый блок «sheet-popup yield»
с обработчиком события `sheet:open`). Покрытие: 16 unit-тестов
(`tests/unit/sheet_popup.test.js` — 11 кейсов поведения + 5 boundary;
`tests/unit/test_sheet_popup.py` — 4 архитектурных invariants
ADR-019). API/БД/тайлы не затронуты. Refs: ET-014.
## [v0.0.5] — 2026-06-04
> Деплой задеплоен на test (https://openclaw.mva154.duckdns.org/enduro/).

View File

@@ -0,0 +1,104 @@
---
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`