--- deploy_status: SUCCESS version: v0.0.5 work_item: ET-013 pr: 26 merge_commit: be7a052 date_utc: "2026-06-04T10:13:00Z" environment: test healthcheck: PASS smoke: PASS --- # Deploy Log — ET-013 - **Version (tag):** v0.0.5 - **Date:** 2026-06-04 10:13 UTC - **PR:** #26 (`feat(terrain): zoom-aware paint для hillshade/TRI на z9-z11 (ET-013)`), merged into `main` (merge commit `be7a052`). - **Environment:** test (https://openclaw.mva154.duckdns.org/enduro/) - **Healthcheck:** PASS - **Smoke:** PASS - **Status:** SUCCESS ## Pipeline 1. **Merge.** `POST /repos/admin/enduro-trails/pulls/26/merge` (Gitea API, `Do=merge`) → HTTP 200. Merge commit `be7a052` сидит на `origin/main`. 2. **Tag.** Инкремент patch от `v0.0.4` → `v0.0.5`. Тег создан от `origin/main` и запушен (`git tag v0.0.5 origin/main && git push origin v0.0.5`). 3. **Deploy hook.** `ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh` → RC=0. Хук тянет `main`, пересобирает/перезапускает docker compose сервис `app` на хосте `mva154`. Предыдущий image-digest зафиксирован в `/repos/enduro-trails/.deploy-prev-image` (`sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98`) и доступен для `--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 | 142 964 B | | `/enduro/units.js` | 200 | 8 773 B | | `/enduro/gpx.js` | 200 | 48 674 B | | `/enduro/gps_tracks.js` | 200 | 38 695 B | Дополнительные проверки на специфику ET-013: - `/enduro/terrain/hillshade/{z}/{x}/{y}.png` отвечает на запросы (404 на несуществующих координатах — nginx-route жив). - `/enduro/terrain/tri/{z}/{x}/{y}.png` отвечает 404 (а не «Unknown layer» / 5xx) — whitelist на FastAPI (F-1 fix) тоже жив. - В задеплоенном `/enduro/app.js` (142 964 B) присутствуют маркеры `ET-013` (×6), `interpolate` (×3) и `raster-opacity` (×6) — zoom-aware paint реально доехал до прода, а не остался старым image-кэшом. > Замечание про шаблон. Алгоритм деплоера упоминает > `/static/style.json` и `/static/app.js`, но в текущем `enduro-trails` > такого префикса нет: статика монтируется в корень `/enduro/` > (`app.js`, `app.css`, …). Корректный smoke — над реально отдаваемыми > URL'ами (`/enduro/app.js` и пр.); они все 200. ## Что фактически уехало в v0.0.5 - **ET-013** — zoom-aware paint для terrain-слоёв `hillshade` и `tri` на z9-z11 (`src/web/app.js`, `src/web/index.html`, ADR-017) + F-1 фикс whitelist `tri` в FastAPI (`src/api/main.py`) + F-2 параметризация integration-теста. - **«Хвостом» из неотгруженных предыдущих релизов** — код ET-012 (`feat(gps-tracks): lower public-tracks minzoom to z5`) тоже едет на проде, потому что hook тянет `main` целиком, а ET-012 deploy в своё время не доехал (см. PR #25 `deploy/ET-012-v0.0.4-log`). Это отмечено в `[Unreleased]`-блоке CHANGELOG и должно быть закрыто отдельным deploy-логом из ET-012 (артефакт этого work-item я не трогаю). ## Rollback Не понадобился. Если бы потребовался — план: `ssh slin@127.0.0.1 bash /home/slin/bin/enduro-deploy-hook.sh --rollback` (хук восстановит образ из `.deploy-prev-image`, `sha256:4c09cd6f9fe8…ff98`). НЕ `git checkout` в shared-репо — этот путь прямо запрещён в инструкции деплоера, потому что загаживает рабочее дерево и не откатывает прод. ## Артефакты - Tag: `v0.0.5` (`origin/main` @ `be7a052`) - PR: #26 (merged) - Deploy timestamp: 2026-06-04 10:13 UTC - Previous image digest (для возможного rollback): `sha256:4c09cd6f9fe8dccdf2bb70ac24679e44abf9ecdea050108173e43c9c86e4ff98`