955 lines
68 KiB
Markdown
955 lines
68 KiB
Markdown
---
|
||
type: test-report
|
||
work_item_id: ET-013
|
||
title: "Test Report: Перепады высот на z9-z11 — zoom-aware paint"
|
||
version: 13
|
||
status: blocked
|
||
verdict: BLOCKED
|
||
created_at: 2026-06-04
|
||
updated_at: 2026-06-07
|
||
authors:
|
||
- "agent:tester"
|
||
related:
|
||
- "ET-007"
|
||
- "PH-6.terrain"
|
||
adr_refs:
|
||
- "ADR-017"
|
||
---
|
||
|
||
# Test Report — ET-013
|
||
|
||
> **v13 (2026-06-07).** Независимый перепрогон (tester re-run, свежий
|
||
> экземпляр). Состояние кода ET-013 неизменно с v2 (фича в `main`:
|
||
> `5be81f9` feat, `099669d` fix-whitelist; `git diff main...HEAD`
|
||
> затрагивает только docs — `12-review.md`, `13-test-report.md`). Прогон
|
||
> в venv `/tmp/et013-venv-r241` (project `requirements.txt` + pytest/
|
||
> pytest-asyncio/ruff). Review #19 — **APPROVED** (P0/P1 в коде нет).
|
||
>
|
||
> - **Окружение/health.** `curl` в песочнице недоступен (`command not
|
||
> found`) — probe через `python3 urllib`. `GET /enduro/api/health` →
|
||
> **200** (`{"status":"ok","db_path":"/app/data/centralfederal.sqlite",
|
||
> "db_exists":true}`).
|
||
> - **Полный авто-регресс** (`pytest tests/ --asyncio-mode=auto`) →
|
||
> **254 passed, 7 skipped, 4 deselected, 0 failed** (4.10 s). Регрессий
|
||
> ET-007/008/009/011/012 нет (AC-17).
|
||
> - **ET-013 unit+integration** → **23 passed / 7 skipped** (17 unit PASS
|
||
> [opacity/contrast stops + монотонность, `nearest`, регрессия z8=0.70,
|
||
> пик z9-z11≥0.80, обратная совместимость `applyTerrainLayer`, порог
|
||
> `zoom < 9` + отсутствие `< 10`, hint «Зум 9+», call-count, привязка
|
||
> paint+minzoom к слою] + 6 integration PASS [whitelist hypso/hillshade/
|
||
> tri, 404 на unknown-layer/missing-tile/invalid-zoom] + 7 integration
|
||
> SKIP — нет PNG-fixtures, AC-15/AC-16/AC-22 ✅).
|
||
> - **Lint** `ruff check .` → **All checks passed!** (exit 0, AC-18).
|
||
> - **Деплой ET-013 на test подтверждён:** `app.js` (len 132149) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`raster-contrast`/`'nearest'`/
|
||
> `opacityOrPaint`/`if (zoom < 9)`; **нет** `if (zoom < 10)`.
|
||
> `index.html` hint = «Зум 9+» (нет «Зум 10+»). Деплой корректно
|
||
> запрашивает z9 hillshade (AC-01 ✅).
|
||
> - `Cache-Control` существующего тайла (`tri/10/616/695`, ct `image/png`,
|
||
> 83705 B) = `max-age=31536000` → REQ-F-18 соблюдён (флаг
|
||
> `immutable`/`public` колеблется на nginx-edge между прогонами; P3,
|
||
> вне скоупа).
|
||
> - **❌ Pre-deploy probe AC-19 / REQ-F-20 §1 — повторно FAIL (P1):**
|
||
> hillshade **z9-тайлы отсутствуют** на test-среде. Канонические XYZ-probe
|
||
> из TRZ (`9/308/158`, `10/617/317`, `11/1234/635`) → все **404** (XYZ ≠
|
||
> TMS-схема среды). Скан по реальному TMS вокруг центра `[37.6, 54.5]`
|
||
> (grid 5×5): hillshade **z9 → 0/25 → 200** (все 404), **z8 → 0/25**; при
|
||
> этом hillshade **z10 → 20/25 → 200**, **z11 → 25/25 → 200**; TRI
|
||
> **z8/z9/z10/z11 → 25/25 → 200**. Слой hillshade по-прежнему начинается
|
||
> с z10. **PH-6 follow-up из v1..v12 так и не выполнен.**
|
||
> - **Следствие для UX:** на z9 включённые «Тени рельефа» дают пустой слой
|
||
> (тайлы 404) — видны только «Перепады» (TRI z9 есть). Нарушены AC-03
|
||
> («на карте видны тени рельефа» при z9) и AC-19 (z9/z10/z11 = 200).
|
||
> - **UI Playwright (TC-UI-01..12) — NOT EXECUTED:** `$UI_TEST_RUNNER`
|
||
> пуст, `/home/slin/tools/ui-test/run_tests.js` отсутствует,
|
||
> `playwright`/браузеры не установлены (`require('playwright')` → not
|
||
> found, нет `~/.cache/ms-playwright`). Визуальная приёмка AC-07..AC-13
|
||
> не выполнена (см. таблицу «Visual / UI тесты» ниже).
|
||
>
|
||
> **Вердикт — BLOCKED** по pre-deploy gate AC-19 (без изменений с v8..v12).
|
||
> `back-to:dev` **не требуется**: дефекта кода нет (Review #19 APPROVED,
|
||
> unit/integration/lint зелёные, деплой корректен). Блокер
|
||
> инфраструктурный — на test-среде не нарезаны z9-тайлы hillshade.
|
||
> Разблокировка = PH-6 follow-up (догенерить `data/terrain/hillshade/9/*`
|
||
> над ЦФО и задеплоить), затем повторный AC-19 + Playwright TC-UI-01..12
|
||
> в окружении с браузерами.
|
||
>
|
||
> ### Visual / UI тесты (v13)
|
||
>
|
||
> Раннер UI-тестов недоступен в песочнице (`$UI_TEST_RUNNER` пуст,
|
||
> `run_tests.js` отсутствует, `playwright` не установлен). Все
|
||
> check-visual — **NOT EXECUTED (BLOCKED)**. Дополнительно TC, завязанные
|
||
> на hillshade z9, заблокированы отсутствием тайлов (AC-19).
|
||
>
|
||
> | TC | Назначение | Вердикт | Причина |
|
||
> |---|---|---|---|
|
||
> | TC-UI-01-Z9 | hillshade доступен/виден на z9 | BLOCKED | нет runner + нет z9-тайлов hillshade |
|
||
> | TC-UI-02-Z8-REGRESS | TRI на z8 как до ET-013 | NOT EXECUTED | нет runner (TRI z8 тайлы есть) |
|
||
> | TC-UI-03-Z9-Q | читаемость перепадов z9 | BLOCKED | нет runner + нет z9-тайлов hillshade |
|
||
> | TC-UI-04-Z10-Q | читаемость z10 | NOT EXECUTED | нет runner (тайлы z10 есть) |
|
||
> | TC-UI-05-Z11-Q | читаемость z11 | NOT EXECUTED | нет runner (тайлы z11 есть) |
|
||
> | TC-UI-06-Z14-REGRESS | hillshade не перегрет z14 | NOT EXECUTED | нет runner |
|
||
> | TC-UI-07-Z9-MOBILE | mobile, hillshade z9 | BLOCKED | нет runner + нет z9-тайлов |
|
||
> | TC-UI-08-Z10-SAT-Q | спутник + hillshade z10 | NOT EXECUTED | нет runner |
|
||
> | TC-UI-09-Z10-DARK-Q | тёмная тема + hillshade z10 | NOT EXECUTED | нет runner |
|
||
> | TC-UI-10-PERSIST | localStorage переживает F5 | NOT EXECUTED | нет runner |
|
||
> | TC-UI-11-NETWORK-Q | сетевой объём ≤135% (M-10) | NOT EXECUTED | нет runner/DevTools |
|
||
> | TC-UI-12-Z9-PAN | pan на z9 без лагов | BLOCKED | нет runner + нет z9-тайлов |
|
||
|
||
> **v12 (2026-06-07).** Независимый перепрогон (tester re-run). Состояние
|
||
> кода ET-013 неизменно с v2 (фича в `main`: `5be81f9` feat, `099669d`
|
||
> fix-whitelist; последующие коммиты — только docs/review). Перепроверено
|
||
> в свежем venv `/tmp/et013-venv-r-new` (`--system-site-packages` +
|
||
> `src/api/requirements.txt` + `pytest`/`pytest-asyncio`/`ruff`):
|
||
> - **Окружение/health.** `curl` в песочнице недоступен (`command not found`) —
|
||
> probe через `python3 urllib`. `GET /enduro/api/health` → **200**
|
||
> (`{"status":"ok","db_path":"/app/data/centralfederal.sqlite","db_exists":true}`).
|
||
> - **Полный авто-регресс** (`make test` = `pytest tests/ --asyncio-mode=auto`)
|
||
> → **254 passed, 7 skipped, 4 deselected, 0 failed** (4.47 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - **ET-013 unit+integration** → **23 passed / 7 skipped** (17 unit PASS +
|
||
> 6 integration PASS [whitelist hypso/hillshade/tri, 404 на unknown-layer/
|
||
> missing-tile/invalid-zoom] + 7 integration SKIP — нет PNG-fixtures, AC-16).
|
||
> - **Lint** `ruff check .` → **All checks passed!** (exit 0, AC-18).
|
||
> - **Деплой ET-013 на test подтверждён:** `app.js` (len 132149) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`raster-contrast`/`'nearest'`/`opacityOrPaint`/
|
||
> `if (zoom < 9)`; **нет** `if (zoom < 10)`. `index.html` hint = «Зум 9+»
|
||
> (нет «Зум 10+»). Деплой корректно запрашивает z9 hillshade.
|
||
> - `Cache-Control` существующего тайла (`tri/10/618/697`) = `max-age=31536000`,
|
||
> ct `image/png` → REQ-F-18 соблюдён (флаг `immutable`/`public` колеблется на
|
||
> nginx-edge между прогонами; P3, вне скоупа).
|
||
> - **❌ Pre-deploy probe AC-19 / REQ-F-20 §1 — повторно FAIL (P1):**
|
||
> hillshade **z9-тайлы отсутствуют** на test-среде. Канонические XYZ-probe из
|
||
> TRZ (`9/308/158`, `10/617/317`, `11/1234/635`) → все **404** (XYZ ≠ TMS-схема
|
||
> среды). Скан по реальному TMS вокруг центра `[37.6, 54.5]`: hillshade
|
||
> **z9 grid 7×7 → 0/49 → 200** (все 404), z8 → 404; при этом hillshade
|
||
> **z10 grid 4×4 → 12/16 → 200** и **z11** (`1237/1395`) → **200**; TRI
|
||
> **z8/z9/z10/z11** (TMS) → **200**. Слой hillshade по-прежнему начинается с
|
||
> z10. **PH-6 follow-up из v1..v11 так и не выполнен.**
|
||
> - **Следствие для UX:** на z9 включённые «Тени рельефа» дают пустой слой
|
||
> (тайлы 404) — видны только «Перепады» (TRI z9 есть). Нарушены AC-03
|
||
> («на карте видны тени рельефа» при z9) и AC-19 (z9/z10/z11 = 200).
|
||
> - **UI Playwright (TC-UI-01..12) — NOT EXECUTED:** `$UI_TEST_RUNNER` пуст,
|
||
> `/home/slin/tools/ui-test/run_tests.js` отсутствует, `playwright`/браузеры
|
||
> не установлены (`require('playwright')` → not found, нет
|
||
> `~/.cache/ms-playwright`). Визуальная приёмка AC-07..AC-13 не выполнена.
|
||
>
|
||
> **Вердикт — BLOCKED** по pre-deploy gate AC-19 (без изменений с v8..v11).
|
||
> `back-to:dev` **не требуется**: дефекта кода нет (Review #18 APPROVED,
|
||
> unit/integration/lint зелёные, деплой корректен). Блокер инфраструктурный —
|
||
> на test-среде не нарезаны z9-тайлы hillshade. Разблокировка = PH-6 follow-up
|
||
> (догенерить `data/terrain/hillshade/9/*` над ЦФО и задеплоить), затем
|
||
> повторный AC-19 + Playwright TC-UI-01..12 в окружении с браузерами.
|
||
|
||
> **v11 (2026-06-06).** Независимый перепрогон после Review v15 (APPROVED,
|
||
> run_id=236). HEAD = `ac4140e reviewer(ET): auto-commit run_id=236`.
|
||
> С момента содержательных коммитов (`5be81f9` feat, `099669d` fix-whitelist)
|
||
> ни `src/`, ни `tests/` не менялись — `git diff main..HEAD -- src/ tests/`
|
||
> показывает только «удаления» из-за отставания ветки от `main` (фича уже
|
||
> смержена в `main`, который ушёл вперёд на ET-014/015). **Состояние кода
|
||
> ET-013 идентично v2..v10.** Перепроверено в свежем venv
|
||
> `/tmp/et013-venv-r237` (`--system-site-packages` + `requirements.txt` +
|
||
> `pytest`/`pytest-asyncio`/`ruff`):
|
||
> - **Окружение/health.** `curl` в песочнице недоступен (`command not found`),
|
||
> probe выполнены через `python3 urllib`. `GET /enduro/api/health` → **200**
|
||
> (`{"status":"ok","db_path":"/app/data/centralfederal.sqlite","db_exists":true}`).
|
||
> - **Полный авто-регресс** (`pytest tests/ --asyncio-mode=auto`) →
|
||
> **254 passed, 7 skipped, 4 deselected, 0 failed** (4.21 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - **ET-013 unit+integration** → **23 passed / 7 skipped** (17 unit PASS +
|
||
> 6 integration PASS [whitelist hypso/hillshade/tri, 404 на unknown-layer/
|
||
> missing-tile/invalid-zoom] + 7 integration SKIP — нет PNG-fixtures, AC-16).
|
||
> - **Lint** `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - **Деплой ET-013 на test подтверждён:** `app.js` (len 132149) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`raster-contrast`/`'nearest'`/`opacityOrPaint`/
|
||
> `if (zoom < 9)` и вызов `applyTerrainLayer('terrain-hillshade', …,
|
||
> HILLSHADE_PAINT, 9, 15)`; **нет** `if (zoom < 10)`; `index.html` hint =
|
||
> «Зум 9+» (нет «Зум 10+»). Деплой действительно запрашивает z9 hillshade.
|
||
> - `Cache-Control` существующего тайла (`tri/10/618/697`) =
|
||
> `max-age=31536000` → REQ-F-18 соблюдён (флаг `immutable`/`public` колеблется
|
||
> на nginx-edge между прогонами; P3, вне скоупа).
|
||
> - **❌ Pre-deploy probe AC-19 / REQ-F-20 §1 — повторно FAIL (P1):**
|
||
> hillshade **z9 тайлы отсутствуют** на test-среде. Канонические probe из
|
||
> TRZ (`9/308/158`, `10/617/317`, `11/1234/635`) → все 404 (XYZ-координаты не
|
||
> совпадают с TMS-покрытием test-среды). Скан по реальному TMS вокруг центра
|
||
> `[37.6, 54.5]`: hillshade **z9 grid 7×7 (центр 309/348) → 0/49 → 200**
|
||
> (все 404); hillshade z8 → 404. При этом hillshade **z10** (`618/697`) и
|
||
> **z11** (`1237/1395`) → **200**; TRI **z8/z9/z10/z11** (TMS) → **200**.
|
||
> Слой hillshade начинается с z10. **PH-6 follow-up из v1..v10 так и не
|
||
> выполнен** — z9-тайлы hillshade не нарезаны.
|
||
> - **Следствие для UX:** на z9 включённые «Тени рельефа» дают пустой слой
|
||
> (тайлы 404) — видны только «Перепады» (TRI z9 есть). Нарушены AC-03
|
||
> («на карте видны тени рельефа» при z9) и AC-19 (все три z9/z10/z11 = 200).
|
||
> - **UI Playwright (TC-UI-01..12) — NOT EXECUTED:** `$UI_TEST_RUNNER` пуст,
|
||
> `/home/slin/tools/ui-test/run_tests.js` отсутствует, `playwright`/браузеры
|
||
> не установлены (`require('playwright')` → not found, нет
|
||
> `~/.cache/ms-playwright`). Визуальная приёмка AC-07..AC-13 не выполнена.
|
||
>
|
||
> **Вердикт — BLOCKED** по pre-deploy gate AC-19 (без изменений с v8..v10).
|
||
> `back-to:dev` **не требуется**: дефекта кода нет (Review v15 APPROVED,
|
||
> unit/integration/lint зелёные, деплой корректен). Блокер инфраструктурный —
|
||
> на test-среде не нарезаны z9-тайлы hillshade. Разблокировка = PH-6 follow-up
|
||
> (догенерить `data/terrain/hillshade/9/*` над ЦФО и задеплоить), затем
|
||
> повторный AC-19 + Playwright TC-UI-01..12 в окружении с браузерами.
|
||
|
||
> **v10 (2026-06-06).** Независимый перепрогон после Review v14 (APPROVED).
|
||
> Состояние кода идентично v2..v9 (фича в `main`: `5be81f9` feat, `099669d`
|
||
> fix-whitelist; последующие коммиты — только docs). Перепроверено в свежем
|
||
> venv `/tmp/et013-venv` (`--system-site-packages` + `defusedxml`, `shapely`,
|
||
> `mapbox_vector_tile`, `lxml`, `ruff`):
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok","db_exists":true}`).
|
||
> - **Полный авто-регресс** (`pytest tests/`) → **254 passed, 7 skipped,
|
||
> 4 deselected, 0 failed** (4.58 s). Регрессий ET-007/008/009/011/012 нет.
|
||
> - **ET-013 unit+integration** → **23 passed / 7 skipped** (17 unit PASS +
|
||
> 6 integration PASS [whitelist hypso/hillshade/tri, 404 на unknown-layer/
|
||
> missing-tile/invalid-zoom] + 7 integration SKIP — нет PNG-fixtures, AC-16).
|
||
> - **Lint** `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - **Деплой ET-013 на test подтверждён:** `app.js` (len 132172) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`raster-contrast`/`'nearest'`/`if (zoom < 9)`
|
||
> (и **нет** `if (zoom < 10)`); вызов hillshade = `applyTerrainLayer('terrain-hillshade',
|
||
> …, HILLSHADE_PAINT, 9, 15)`. Деплой действительно запрашивает z9 hillshade.
|
||
> - `Cache-Control` существующего тайла (`tri/10/618/697`) =
|
||
> `max-age=31536000, public, immutable` → REQ-F-18 соблюдён.
|
||
> - **❌ Pre-deploy probe AC-19 / REQ-F-20 §1 — повторно FAIL (P1):**
|
||
> hillshade **z9 тайлы отсутствуют** на test-среде. Скан окрестности
|
||
> тестового центра `[37.6, 54.5]` (TMS): `x∈[306..312] × y∈[345..352]` →
|
||
> **0/56 → 200** (все 404); hillshade z8 → 404. При этом hillshade **z10**
|
||
> (`618/697`) и **z11** (`1237/1395`) → **200**; TRI **z9/z10/z11**
|
||
> (`309/348`, `618/697`, `1237/1395`) → **200**. Слой hillshade начинается
|
||
> с z10. **PH-6 follow-up из v1..v9 так и не выполнен** — z9-тайлы hillshade
|
||
> не нарезаны.
|
||
> - **Следствие для UX:** на z9 включённые «Тени рельефа» дают пустой слой
|
||
> (тайлы 404) — видны только «Перепады» (TRI z9 есть). Нарушены AC-03
|
||
> («на карте видны тени рельефа» при z9) и AC-19 (все три z9/z10/z11 = 200).
|
||
> - **UI Playwright (TC-UI-01..12) — NOT EXECUTED:** `$UI_TEST_RUNNER` не задан,
|
||
> `/home/slin/tools/ui-test/run_tests.js` отсутствует, `playwright`/браузеры
|
||
> не установлены в песочнице (`require('playwright')` → not found,
|
||
> `~/.cache/ms-playwright` пуст). Визуальная приёмка AC-07..AC-13 не выполнена.
|
||
>
|
||
> **Вердикт — BLOCKED** по pre-deploy gate AC-19. `back-to:dev` **не требуется**:
|
||
> дефекта кода нет (Review v14 APPROVED, unit/integration/lint зелёные, деплой
|
||
> корректен). Блокер — инфраструктурный: на test-среде не нарезаны z9-тайлы
|
||
> hillshade. Разблокировка = PH-6 follow-up (догенерить `data/terrain/hillshade/9/*`
|
||
> над ЦФО и задеплоить), затем повторный прогон AC-19 + Playwright TC-UI-01..12.
|
||
|
||
> **v9 (2026-06-06).** Перепрогон после Review v13 (APPROVED, run_id=232).
|
||
> HEAD = `dd7e1bf reviewer(ET): auto-commit from reviewer run_id=232`.
|
||
> С момента содержательных коммитов (`5be81f9` feat, `099669d`
|
||
> fix-whitelist) ни `src/`, ни `tests/` не менялись — все последующие
|
||
> коммиты (reviewer run 230/232, tester run 229) только docs.
|
||
> **Состояние кода идентично v2..v8.** Независимо перепроверено в свежем
|
||
> venv `/tmp/et013venv` (deps из `src/api/requirements.txt` +
|
||
> `pytest`/`pytest-asyncio`/`ruff`):
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok","db_exists":true}`).
|
||
> - Полный авто-регресс (`pytest tests/ --asyncio-mode=auto`) → **254 passed,
|
||
> 7 skipped, 4 deselected, 0 failed** (3.83 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - ET-013 unit+integration → **23 passed / 7 skipped** (17 unit + 6
|
||
> integration PASS + 7 integration SKIP; skip ожидаемы — нет PNG-fixtures,
|
||
> AC-16).
|
||
> - Lint `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - Деплой ET-013 на test подтверждён: `app.js` (len 132149) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/
|
||
> `'nearest'`/`if (zoom < 9)` (и **нет** `if (zoom < 10)`); hint = «Зум 9+».
|
||
> - **❌ Pre-deploy probe AC-19 — повторно FAIL (P1):** hillshade z9 тайлы
|
||
> всё ещё **404** (`9/308/158`, `9/309/348`, `9/307/347` → 404; grid 5×5
|
||
> вокруг `(309,348)` → **0/25 → 200**; hillshade z8 → 404; стек начинается
|
||
> с z10). hillshade z10/z11 (TMS `618/697`, `1237/1395`) → **200**;
|
||
> TRI z8/z9/z10/z11 (TMS) → **200**. **PH-6 follow-up из v1..v8 так и не
|
||
> выполнен.**
|
||
> - UI Playwright (TC-UI-01..12) — снова **NOT EXECUTED**: `$UI_TEST_RUNNER`
|
||
> пуст, `/home/slin/tools/ui-test/run_tests.js` отсутствует,
|
||
> `playwright`/`npx` недоступны (node без playwright-модуля).
|
||
>
|
||
> Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19. `back-to:dev`
|
||
> не требуется — дефекта кода нет (Review v13 APPROVED), блокер
|
||
> инфраструктурный (нет нарезанных z9-тайлов hillshade на test-среде).
|
||
|
||
> **v8 (2026-06-06).** Перепрогон после Review v11 (APPROVED, run_id=228).
|
||
> HEAD = `78f74db reviewer(ET): auto-commit from reviewer run_id=228`.
|
||
> `git diff 099669d..HEAD --stat -- src/ tests/` → **пусто**: с момента
|
||
> содержательных коммитов (`5be81f9` feat, `099669d` fix-whitelist) ни
|
||
> `src/`, ни `tests/` не менялись. **Состояние кода идентично v2..v7.**
|
||
> Независимо перепроверено (venv `/tmp/et013venv`, deps проекта):
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok","db_exists":true}`).
|
||
> - Полный авто-регресс (`pytest tests/ --asyncio-mode=auto`) → **254 passed,
|
||
> 7 skipped, 4 deselected, 0 failed** (3.87 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - ET-013 unit+integration → **23 passed / 7 skipped** (17 unit + 6
|
||
> integration PASS + 7 integration SKIP; skip ожидаемы — нет PNG-fixtures,
|
||
> AC-16).
|
||
> - Lint `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - Деплой ET-013 на test подтверждён: `app.js` (len 132172) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/
|
||
> `'nearest'`/`if (zoom < 9)` (и **нет** `if (zoom < 10)`); hint = «Зум 9+».
|
||
> - **❌ Pre-deploy probe AC-19 — повторно FAIL (P1):** hillshade z9 тайлы
|
||
> всё ещё **404** (`9/308/158`, `9/309/348` → 404; grid 5×5 вокруг
|
||
> `(309,348)` → **0/25 → 200**; 4 разнесённых точки z9 → **0/4**;
|
||
> hillshade z8 → 404; стек начинается с z10). hillshade z10/z11 (TMS
|
||
> `618/697`, `1237/1395`) → **200**; TRI z8/z9/z10/z11 (TMS) → **200**.
|
||
> **PH-6 follow-up из v1..v7 так и не выполнен.**
|
||
> - `Cache-Control` на test-среде снова `max-age=31536000, public, immutable`
|
||
> (флаг колеблется на nginx-edge между прогонами; функционально и формально
|
||
> REQ-F-18 соблюдён). P3, не в скоупе.
|
||
> - UI Playwright (TC-UI-01..12) — снова **NOT EXECUTED**: `$UI_TEST_RUNNER`
|
||
> пуст, `/home/slin/tools/ui-test/run_tests.js` отсутствует,
|
||
> `playwright`/`npx` недоступны (node без playwright-модуля).
|
||
>
|
||
> Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19. `back-to:dev`
|
||
> не требуется — дефекта кода нет (Review v11 APPROVED), блокер
|
||
> инфраструктурный (нет нарезанных z9-тайлов hillshade на test-среде).
|
||
|
||
> **v7 (2026-06-06).** Перепрогон после Review v9 (APPROVED, run_id=224).
|
||
> HEAD = `7866174 reviewer(ET): auto-commit from reviewer run_id=224`.
|
||
> `git diff 099669d..HEAD --stat -- src/ tests/` → **пусто**: с момента
|
||
> содержательных коммитов (`5be81f9` feat, `099669d` fix-whitelist) в
|
||
> `src/`/`tests/` изменений нет. **Состояние кода идентично v2..v6.**
|
||
> Независимо перепроверено (venv `/tmp/et013venv`, deps проекта):
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok","db_exists":true}`).
|
||
> - Полный авто-регресс (`pytest tests/ --asyncio-mode=auto`) → **254 passed,
|
||
> 7 skipped, 4 deselected, 0 failed** (4.29 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - ET-013 unit+integration → **23 passed / 7 skipped** (17 unit PASS +
|
||
> 6 integration PASS + 7 integration SKIP; skip ожидаемы — нет PNG-fixtures,
|
||
> AC-16).
|
||
> - Lint `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - Деплой ET-013 на test подтверждён: `app.js` (len 132149) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/
|
||
> `'nearest'`/`if (zoom < 9)` (и **нет** `if (zoom < 10)`); hint = «Зум 9+».
|
||
> - **❌ Pre-deploy probe AC-19 — повторно FAIL (P1):** hillshade z9 тайлы
|
||
> всё ещё **404** (`9/309/348`, `9/308/158` → 404; grid 3×3 вокруг
|
||
> `(309,348)` → **0/9 → 200**; hillshade z8 → 404; стек начинается с z10).
|
||
> hillshade z10/z11 (TMS `618/697`, `1237/1395`) → **200**; TRI z8/z9/z10/z11
|
||
> (TMS) → **200**. **PH-6 follow-up из v1..v6 так и не выполнен.**
|
||
> - **Изменение со времён v6:** заголовок `Cache-Control` на test-среде снова
|
||
> `max-age=31536000` (без `immutable`) — флаг колеблется на nginx-edge
|
||
> между прогонами. Функционально (1 год кэша) достаточно; формально
|
||
> REQ-F-18/IT-TILE-CACHE-HEADER соблюдён на backend-уровне (integration
|
||
> `test_terrain_tile_cache_control_immutable`, корректно SKIP). Остаётся
|
||
> P3, не в скоупе ET-013.
|
||
> - UI Playwright (TC-UI-01..12) — снова **NOT EXECUTED**: `$UI_TEST_RUNNER`
|
||
> пуст, `/home/slin/tools/ui-test/run_tests.js` отсутствует,
|
||
> `playwright`/`npx` недоступны (node v22 без playwright-модуля).
|
||
>
|
||
> Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19. `back-to:dev`
|
||
> не требуется — дефекта кода нет (Review v9 APPROVED), блокер
|
||
> инфраструктурный (нет нарезанных z9-тайлов hillshade на test-среде).
|
||
|
||
> **v6 (2026-06-06).** Перепрогон после Review v8 (APPROVED, run_id=222).
|
||
> HEAD = `4bb160d reviewer(ET): auto-commit from reviewer run_id=222`.
|
||
> `git diff 099669d..HEAD --stat -- src/ tests/` → **пусто**: с момента
|
||
> содержательных коммитов (`5be81f9` feat, `099669d` fix-whitelist) в
|
||
> `src/`/`tests/` изменений нет (всё после — docs-коммиты ревью/тестера).
|
||
> **Состояние кода идентично v2..v5 и не изменилось.** Независимо
|
||
> перепроверено в свежем venv `/tmp/et013venv` (deps из
|
||
> `src/api/requirements.txt` + `pytest`/`pytest-asyncio`/`ruff`):
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok","db_exists":true}`).
|
||
> - Полный авто-регресс (`pytest tests/ --asyncio-mode=auto`) → **254 passed,
|
||
> 7 skipped, 4 deselected, 0 failed** (4.03 s). Регрессий
|
||
> ET-007/008/009/011/012 нет.
|
||
> - ET-013 unit+integration (`test_terrain_paint.py` + `test_terrain_z9_tiles.py`)
|
||
> → **23 passed / 7 skipped** (= 17 unit PASS + 6 integration PASS + 7
|
||
> integration SKIP; skip ожидаемы — нет PNG-fixtures в sandbox, AC-16).
|
||
> - Lint `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - Деплой ET-013 на test-среде подтверждён: `app.js` (len 132172) содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/
|
||
> `'nearest'`/`if (zoom < 9)` (и **нет** `if (zoom < 10)`); hint = «Зум 9+».
|
||
> - **❌ Pre-deploy probe AC-19 — повторно FAIL (P1):** hillshade z9 тайлы
|
||
> всё ещё **404** в обеих схемах (XYZ `9/309/163`, TMS `9/309/348`;
|
||
> канонический `9/308/158` → 404). Расширенный зонд: hillshade z9 по 6
|
||
> точкам ЦФО → **0/6 → 200**, grid 5×5 вокруг `(309,348)` → **0/25 → 200**;
|
||
> hillshade z8 → 404. hillshade z10/z11 (TMS `618/697`, `1237/1395`) →
|
||
> **200**; TRI z8/z9/z10/z11 (TMS) → **200**. PH-6 follow-up из v1..v5
|
||
> так и **не выполнен**.
|
||
> - **Изменение со времён v5:** заголовок `Cache-Control` на test-среде
|
||
> теперь содержит `immutable` (`max-age=31536000, public, immutable`) —
|
||
> ранее (v5) `immutable` стрипался nginx-проксей. **P3-02 более не
|
||
> воспроизводится** (REQ-F-18 / IT-TILE-CACHE-HEADER на edge-слое
|
||
> соблюдён). Понижаю P3-02 до «resolved».
|
||
> - UI Playwright (TC-UI-01..12) — снова **NOT EXECUTED**: раннера
|
||
> `/home/slin/tools/ui-test/run_tests.js` нет, `$UI_TEST_RUNNER` пуст,
|
||
> `playwright`/`npx` недоступны (`node v22` без playwright-модуля).
|
||
>
|
||
> Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19. `back-to:dev`
|
||
> не требуется — дефекта кода нет (Review v8 APPROVED), блокер
|
||
> инфраструктурный (нет нарезанных z9-тайлов hillshade на test-среде).
|
||
|
||
> **v5 (2026-06-06).** Перепрогон после Review v7 (APPROVED, run_id=220).
|
||
> HEAD = `c9da18f reviewer(ET): auto-commit from reviewer run_id=220`.
|
||
> `git diff e948861..HEAD --stat -- src/ tests/` → **пусто**: с момента
|
||
> v3/v4 в коде/тестах изменений нет (только docs-коммиты ревью run 216/220
|
||
> и тестера run 217). **Состояние идентично v4 и не изменилось.** Повторно
|
||
> проверено независимо в свежем venv `/tmp/et013venv`:
|
||
> - Health `GET /enduro/api/health` → **200** (`{"status":"ok"}`).
|
||
> - Полный авто-регресс (`pytest tests/`) → **254 passed, 7 skipped,
|
||
> 4 deselected, 0 failed** (4.26 s). Регрессий ET-007/008/009/011/012 нет.
|
||
> - ET-013 unit (`test_terrain_paint.py`) → **17/17 PASS**.
|
||
> - ET-013 integration (`test_terrain_z9_tiles.py`) → **6 PASS / 7 SKIP**
|
||
> (skip ожидаемы: нет PNG-fixtures в sandbox, AC-16).
|
||
> - Lint `ruff check src/api/` → **All checks passed!** (exit 0, AC-18).
|
||
> - Деплой ET-013 на test-среде подтверждён: `app.js` содержит
|
||
> `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/
|
||
> `'nearest'`/`if (zoom < 9)` (и **нет** `if (zoom < 10)`); hint = «Зум 9+».
|
||
> - **❌ Pre-deploy probe AC-19 — повторно FAIL (P1):** hillshade z9 тайлы
|
||
> всё ещё **404** (`/terrain/hillshade/9/309/{163,348}.png` → 404 в обеих
|
||
> схемах XYZ/TMS; канонический `9/308/158.png` → 404). z10/z11 hillshade
|
||
> (TMS) → **200**; TRI z5/z8/z9/z10/z11 → **200**. PH-6 follow-up из
|
||
> v1..v4 так и **не выполнен**.
|
||
> - UI Playwright (TC-UI-01..12) — снова **NOT EXECUTED**: раннера
|
||
> `/home/slin/tools/ui-test/run_tests.js` нет, `$UI_TEST_RUNNER` пуст,
|
||
> `npx`/playwright недоступны.
|
||
>
|
||
> Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19. `back-to:dev`
|
||
> не требуется — дефекта кода нет, блокер инфраструктурный (нет нарезанных
|
||
> z9-тайлов на test-среде).
|
||
|
||
> **v4 (2026-06-06).** Перепрогон после Review v6 (APPROVED). HEAD =
|
||
> `89b83e3 reviewer(ET): auto-commit from reviewer run_id=216`.
|
||
> `git diff e948861..HEAD --stat -- src/ tests/` → **пусто**: с момента
|
||
> v3 в коде/тестах изменений нет (только docs-коммиты ревью run 215/216).
|
||
> **Состояние идентично v3 и не изменилось:** ET-013 выкатан на
|
||
> test-среду (`HILLSHADE_PAINT`/`TRI_PAINT`, hint «Зум 9+», `if (zoom < 9)`
|
||
> подтверждены в `/enduro/app.js`), но **hillshade z9-тайлы по-прежнему
|
||
> 404** (grid 5×5 вокруг `(309,348)` → 0/25 → 200; 6 точек ЦФО → 0/6;
|
||
> hillshade-стек начинается с z10). PH-6 follow-up из v1/v2/v3 так и
|
||
> **не выполнен**. Полный авто-регресс зелёный (**254 passed, 7 skipped,
|
||
> 4 deselected, 0 failed**), ET-013 unit 17/17 PASS, integration 6 PASS /
|
||
> 7 SKIP. UI Playwright — снова NOT EXECUTED (раннер `$UI_TEST_RUNNER`
|
||
> пуст, `/home/slin/tools/ui-test/run_tests.js` отсутствует, playwright
|
||
> не установлен). Вердикт остаётся **BLOCKED** по pre-deploy gate AC-19.
|
||
> `back-to:dev` не требуется — дефекта кода нет.
|
||
|
||
> **v3 (2026-06-06).** Перепрогон после Review v5 (APPROVED). HEAD =
|
||
> `e948861 reviewer(ET): auto-commit from reviewer run_id=214`. С момента
|
||
> v2 в коде/тестах изменений нет (только docs-коммиты ревью).
|
||
> **Состояние не изменилось:** ET-013 выкатан на test-среду
|
||
> (`HILLSHADE_PAINT`/`TRI_PAINT`, hint «Зум 9+», `if (zoom < 9)`), но
|
||
> **hillshade z9-тайлы по-прежнему 404** (grid 5×5 вокруг `(309,348)` под
|
||
> TMS → 0/25 → 200). PH-6 follow-up из v1/v2 так и **не выполнен**.
|
||
> Полный авто-регресс зелёный (**254 passed, 7 skipped, 0 failed**),
|
||
> ET-013 unit 17/17, integration 6 PASS / 7 SKIP. UI Playwright — снова
|
||
> NOT EXECUTED (раннер/Playwright в контейнере отсутствуют). Вердикт
|
||
> остаётся **BLOCKED** по тому же pre-deploy gate AC-19.
|
||
|
||
> **v2 (2026-06-06).** Перепрогон после Review v3 (APPROVED). Главное
|
||
> изменение со времён v1: **ET-013 уже выкатан на test-среду**. При этом
|
||
> hillshade z9 тайлы отсутствуют (404). Полный авто-регресс зелёный
|
||
> (254 passed). Вердикт **BLOCKED** по pre-deploy gate AC-19.
|
||
|
||
## TL;DR
|
||
|
||
- Линтер ✅ (см. примечание ниже), полный авто-регресс **254 passed,
|
||
7 skipped, 4 deselected, 0 failed** (в изолированном venv с
|
||
установленными зависимостями проекта). Регрессий ET-007/008/009/011/012
|
||
нет. ET-013 unit — 17/17 PASS, integration — 6 PASS / 7 SKIP (skip
|
||
ожидаемы: нет PNG-fixtures в sandbox).
|
||
- Код в ветке `feature/ET-013-z9-z11-z8` 1:1 соответствует TRZ
|
||
(REQ-F-01..F-21) и ADR-017 (подтверждено Review v3, **APPROVED**).
|
||
- **ET-013 развёрнут на test-среде** (изменение со времён v1):
|
||
`GET /enduro/app.js` содержит `HILLSHADE_PAINT`, `TRI_PAINT`,
|
||
`opacityOrPaint`, `raster-contrast`, `'nearest'`, `if (zoom < 9)`;
|
||
hint в DOM = «Зум 9+».
|
||
- **❌ Pre-deploy gate AC-19 — FAIL (P1):** на test-среде по-прежнему
|
||
отсутствуют тайлы `hillshade/9/*` (и `hillshade/8/*`). Проверка по
|
||
координатам `[37.6, 54.5]` (юг МО / Кашира — основная зона UI-тестов):
|
||
`hillshade/z9/309/348.png → 404` (и весь grid 5×5 вокруг + 6 точек
|
||
ЦФО → 404). Тайлы `hillshade/z10`, `hillshade/z11`, `tri/z5..z12`
|
||
присутствуют (200 OK). **Так как ET-013 уже выкатан**, проблема из
|
||
гипотетической стала фактической: прямо сейчас на test-среде при
|
||
`setZoom(9)` чекбокс «Тени рельефа» активен, но MapLibre 404'нется
|
||
на каждом hillshade-запросе → пользователь видит включённый слой
|
||
**без теней** (хуже, чем до ET-013, где чекбокс был disabled с
|
||
честным hint'ом «Зум 10+»). На z10/z11 hillshade и TRI z9-z11 —
|
||
работают, т.е. ET-013 функционален везде, кроме «заглавного» z9
|
||
hillshade.
|
||
- **UI Playwright (TC-UI-01..12) — NOT EXECUTED:** раннер
|
||
(`$UI_TEST_RUNNER` пуст, `/home/slin/tools/ui-test/run_tests.js`
|
||
отсутствует) и `playwright`/`npx` недоступны в этом контейнере.
|
||
Визуальные TC должны выполниться оператором/Playwright после
|
||
устранения P1 (генерация z9-тайлов). См. §5.
|
||
|
||
**Вердикт: BLOCKED.** Реализация ET-013 в коде корректна и готова,
|
||
но деплой/закрытие остановлены по TRZ REQ-F-20 §1 и AC-19: «При 404 —
|
||
задача останавливается, тайлы z9 нужно догенерировать в рамках PH-6
|
||
follow-up». Следующий шаг — выполнить PH-6 follow-up
|
||
(«generate hillshade tiles z8-z9 для CFO») и после генерации тайлов
|
||
повторно прогнать pre-deploy probe + Playwright UI suite. **Это не
|
||
дефект кода ET-013 — `back-to:dev` для фронтенда не требуется.**
|
||
|
||
---
|
||
|
||
## 1. Окружение прогона (v3)
|
||
|
||
| Параметр | Значение |
|
||
|-------------------------|-------------------------------------------------------------------------|
|
||
| Ветка | `feature/ET-013-z9-z11-z8` |
|
||
| HEAD (v3) | `e948861 reviewer(ET): auto-commit from reviewer run_id=214` (со времён v2 — только docs-коммиты ревью; `src/`,`tests/` без изменений) |
|
||
| HEAD (v2) | `badd559 reviewer(ET): auto-commit from reviewer run_id=207` |
|
||
| Содержательные коммиты | `5be81f9 feat(terrain): zoom-aware paint для hillshade/TRI на z9-z11 (ET-013)`<br>`099669d fix(terrain): расширить whitelist endpoint'а на `tri` (ET-013 review F-1)` |
|
||
| Python | 3.12 (изолированный venv `/tmp/et013venv`) |
|
||
| Зависимости | `make`/`curl` в контейнере отсутствуют → pytest запущен напрямую (как в Makefile), HTTP — через `urllib.request`. В venv доустановлены `shapely`, `defusedxml`, `lxml`, `mapbox-vector-tile`, `pytest-asyncio` (по `src/api/requirements.txt`), что закрыло collection-ошибки v1. |
|
||
| Test-среда (HTTP) | https://openclaw.mva154.duckdns.org/enduro/ |
|
||
| Состояние test-среды | **ET-013 РАЗВЁРНУТ** (изменение со времён v1). `app.js` содержит `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/`raster-contrast`/`'nearest'`/`if (zoom < 9)`; hint = «Зум 9+». |
|
||
|
||
Сетевая проверка `/health`:
|
||
```
|
||
GET /enduro/api/health → 200
|
||
{"status":"ok","db_path":"/app/data/centralfederal.sqlite","db_exists":true}
|
||
```
|
||
|
||
Проверка факта деплоя ET-013 (`urllib` против test-среды):
|
||
```
|
||
GET /enduro/app.js → len=132149
|
||
HILLSHADE_PAINT : True TRI_PAINT : True
|
||
opacityOrPaint : True raster-contrast: True
|
||
'nearest' : True 'zoom < 9' : True
|
||
GET /enduro/ → hint #terrain-hillshade-hint = «Зум 9+»
|
||
```
|
||
|
||
---
|
||
|
||
## 2. Шаг 1 — линт
|
||
|
||
`make`/`ruff` в контейнере недоступны, отдельный прогон линта в v2 не
|
||
выполнялся. Линт-статус AC-18 опирается на Review v3 (APPROVED, код не
|
||
менялся с v1, где `ruff check src/api/` = «All checks passed!»). Код
|
||
`src/`/`tests/` идентичен ревью-одобренному (`git diff` от ревью —
|
||
только docs).
|
||
|
||
---
|
||
|
||
## 3. Шаг 2 — авто-регресс (целевой gate)
|
||
|
||
### 3.1 Полный прогон (`pytest tests/`)
|
||
|
||
В отличие от v1 (где sandbox не имел `lxml`/`shapely`/`defusedxml`/
|
||
`pytest-asyncio` и collection падал), в v2 собран изолированный venv
|
||
со всеми зависимостями `src/api/requirements.txt` + `pytest-asyncio`.
|
||
Полный прогон зелёный целиком:
|
||
|
||
```
|
||
cd src/api && python -m pytest ../../tests/ --asyncio-mode=auto
|
||
========== 254 passed, 7 skipped, 4 deselected, 23 warnings in 4.27s ==========
|
||
```
|
||
|
||
- `4 deselected` — perf/network маркеры (стандартный exclude).
|
||
- `7 skipped` — `test_terrain_tile_available_z9_z10_z11[*]` (×6) и
|
||
`test_terrain_tile_cache_control_immutable` — требуют PNG-fixtures в
|
||
`data/terrain/`, которых нет в sandbox. Skip — корректный механизм
|
||
(AC-16: «при отсутствии тайлов — skipped с reason»).
|
||
- **0 failed. Регрессий ET-007 / ET-008 / ET-009 / ET-011 / ET-012 — НЕТ.**
|
||
|
||
### 3.2 Прицельный прогон ET-013
|
||
|
||
```
|
||
python -m pytest tests/unit/test_terrain_paint.py \
|
||
tests/integration/test_terrain_z9_tiles.py --asyncio-mode=auto -v
|
||
|
||
=================== 17 passed (unit) · 6 passed + 7 skipped (integration) ===================
|
||
```
|
||
|
||
| Suite | Кейсов | PASS | SKIP | Покрытие AC |
|
||
|-----------------------------------------------|--------|------|------|----------------------------|
|
||
| `tests/unit/test_terrain_paint.py` | 17 | 17 | 0 | AC-01, AC-04, AC-05, AC-15, AC-22 |
|
||
| `tests/integration/test_terrain_z9_tiles.py` | 13 | 6 | 7 | AC-16 |
|
||
|
||
Что покрывают unit-тесты (выборка):
|
||
- `test_hillshade_paint_defined`, `test_hillshade_opacity_is_interpolate_by_zoom`,
|
||
`test_hillshade_opacity_stops`, `test_hillshade_contrast_peak_z9`,
|
||
`test_hillshade_resampling_nearest` — структура `HILLSHADE_PAINT`,
|
||
stops 9/10/11/12/14 → 0.65/0.60/0.55/0.50/0.40, contrast пик z9 ≥0.30 / z14 ≤0.10.
|
||
- `test_tri_paint_defined`, `test_tri_opacity_z8_regression` («8, 0.70»
|
||
ровно, защита AC-06), `test_tri_opacity_peak_z9_z11` (z10/z11 ≥ 0.80),
|
||
`test_tri_resampling_nearest`.
|
||
- `test_apply_terrain_layer_signature_uses_opacity_or_paint`,
|
||
`test_apply_terrain_layer_normalizes_number_to_legacy_paint`,
|
||
`test_apply_terrain_layer_uses_paint_variable` — обратная
|
||
совместимость `applyTerrainLayer` (AC-22).
|
||
- `test_minzoom_threshold_lowered_to_9` (`if (zoom < 9)` найден,
|
||
`< 10` отсутствует), `test_hint_text_updated_to_z9` («Зум 9+»),
|
||
`test_apply_terrain_layer_caller_count` (ровно 2 вызова),
|
||
`test_hillshade_call_uses_paint_constant_and_minzoom_9`,
|
||
`test_tri_call_uses_paint_constant_and_minzoom_5`.
|
||
|
||
Что покрывают integration-тесты:
|
||
- **PASS:** `test_known_terrain_layer_accepted_by_whitelist[hypso|hillshade|tri]`
|
||
(доказывает фикс F-1 review v1), `test_unknown_terrain_layer_returns_404`,
|
||
`test_missing_terrain_tile_returns_404`, `test_invalid_zoom_returns_404`.
|
||
- **SKIP:** `test_terrain_tile_available_z9_z10_z11[*]` ×6,
|
||
`test_terrain_tile_cache_control_immutable` — требуют PNG-fixtures
|
||
в `data/terrain/`, которых нет в sandbox-репо. Skip — корректный
|
||
механизм через `_maybe_skip`; AC-16 говорит «при отсутствии тайлов
|
||
в CI — тесты skipped с reason», что в точности и наблюдается.
|
||
|
||
**Результат:** ✅ PASS (AC-15, AC-16 в части автоматики, AC-17, AC-18).
|
||
|
||
---
|
||
|
||
## 4. Шаг 3 — E2E (контракт API на test-среде)
|
||
|
||
### 4.1 IT-TILE-* «вживую» против test-среды
|
||
|
||
Поскольку sandbox без data fixtures даёт SKIP, я выполнил эквивалент
|
||
IT-TILE-* напрямую HTTP-запросом (`urllib`) к test-среде. Координата
|
||
`[37.6, 54.5]` (юг МО / Кашира) — основная для UI-тестов (см.
|
||
04b-ui-test-cases.md §«Координаты»). Тайлы под TMS-схемой (как
|
||
объявлено в `addSource(... scheme: 'tms' ...)`):
|
||
|
||
| z | hillshade (x, y_tms) | hillshade status | tri (x, y_tms) | tri status |
|
||
|----|---------------------------|------------------|---------------------------|------------|
|
||
| 5 | `5/19/21` | **❌ 404** ² | `5/19/21` | ✅ 200 |
|
||
| 8 | `8/154/174` | **❌ 404** | `8/154/174` | ✅ 200 |
|
||
| 9 | `9/309/348` | **❌ 404** | `9/309/348` | ✅ 200 |
|
||
| 10 | `10/618/697` | ✅ 200 | `10/618/697` | ✅ 200 |
|
||
| 11 | `11/1237/1395` | ✅ 200 | `11/1237/1395` | ✅ 200 |
|
||
| 12 | `12/2475/2790` | ✅ 200 | `12/2475/2790` | ✅ 200 |
|
||
| 14 | `14/9903/11162` | ✅ 200 | `14/9903/11162` | ❌ 404 ¹ |
|
||
|
||
¹ TRI z=14 404 — за пределами TRI-стека (TRI генерится до z12 в
|
||
PH-6, регрессия известная, в скоупе ET-013 не трогается). Это **не**
|
||
новая регрессия ET-013, такое же поведение было до ET-013. Фиксирую
|
||
как P3 для PH-6 follow-up.
|
||
|
||
² hillshade на z5-z9 не сгенерирован вообще — hillshade-стек начинается
|
||
с z10. Это и есть корень P1: ET-013 объявляет hillshade c z9, но данных
|
||
ниже z10 нет.
|
||
|
||
Дополнительная проверка покрытия hillshade z=9 — 6 точек ЦФО
|
||
(`[37.6,54.5]`, `[37.6,55.7]`, `[38.6,54.0]`, `[36.0,55.0]`,
|
||
`[39.0,55.0]`, `[37.0,53.5]`) + grid 5×5 вокруг центра `(309, 348)`:
|
||
```
|
||
hillshade z=9 across 6 CFO points : 0/6 → все 404
|
||
hillshade z=9 grid 5×5 around (309,348) : 0/9 → все 404
|
||
```
|
||
То есть на z=9 нет ни одного hillshade-тайла, не только «целевого»;
|
||
данных просто нет в pipeline.
|
||
|
||
### 4.2 Заголовок Cache-Control
|
||
|
||
```
|
||
hillshade z=10 → Cache-Control: max-age=31536000
|
||
hillshade z=11 → Cache-Control: max-age=31536000
|
||
tri z=8 → Cache-Control: max-age=31536000
|
||
…
|
||
```
|
||
|
||
Только `max-age=31536000`; `immutable`-флаг **отсутствует** в ответах
|
||
nginx-перед-fastapi на test-среде. Это **предсуществующая** ситуация
|
||
(не введена ET-013): backend FastAPI отдаёт `Cache-Control: max-age=…,
|
||
immutable`, но nginx-конфиг на test-среде стрипает `immutable`. На
|
||
бизнес-логику это не влияет (`max-age=1y` достаточен), но формальная
|
||
формулировка REQ-F-18 / IT-TILE-CACHE-HEADER «immutable сохраняется»
|
||
выполняется только на backend-уровне (см. integration-тест
|
||
`test_terrain_tile_cache_control_immutable`, корректно SKIPPED здесь).
|
||
**Не блокер ET-013.** Фиксирую как P3 (известная инфра-косметика,
|
||
не в скоупе).
|
||
|
||
### 4.3 `/health` стабилен
|
||
См. раздел 1. ✅
|
||
|
||
---
|
||
|
||
## 5. Шаг 4 — UI / Visual тесты
|
||
|
||
### 5.1 Состояние раннера
|
||
|
||
```
|
||
$UI_TEST_RUNNER → (пусто)
|
||
ls /home/slin/tools/ui-test/ → No such file or directory
|
||
which playwright / npx → not found
|
||
node -e require.resolve(playwright)→ playwright NOT installed
|
||
find / -name run_tests.js -path *ui* → (нет результатов)
|
||
```
|
||
|
||
UI-test раннер, Playwright и `npx` в этом контейнере отсутствуют.
|
||
Запустить TC-UI-01..12 автоматически невозможно. `node v22.22.2`
|
||
присутствует, но без playwright-модуля и браузеров.
|
||
|
||
### 5.2 Состояние test-среды (ET-013 РАЗВЁРНУТ)
|
||
|
||
```
|
||
GET https://openclaw.mva154.duckdns.org/enduro/app.js
|
||
HILLSHADE_PAINT in body: True
|
||
TRI_PAINT in body: True
|
||
'if (zoom < 9)' in body: True
|
||
opacityOrPaint in body: True
|
||
GET /enduro/ → hint «Зум 9+»
|
||
```
|
||
|
||
В отличие от v1, на test-среде сейчас выкатан **код ET-013**. Поэтому
|
||
визуальные TC уже релевантны — но раннер недоступен (§5.1), а ключевой
|
||
для z9 контент (hillshade-тайлы) отсутствует (§4.1).
|
||
|
||
## Visual / UI тесты
|
||
|
||
Автоматический прогон визуальных кейсов в текущем контейнере не
|
||
выполнен (нет раннера/Playwright). Ниже — статус каждого TC с учётом
|
||
**фактического** состояния test-среды (ET-013 выкатан; hillshade z9 =
|
||
404; hillshade z10/z11 = 200; TRI z9-z11 = 200). Кейсы, зависящие от
|
||
hillshade z9, помечены FAIL по данным §4.1 — это не требует скриншота:
|
||
слой физически не имеет тайлов и отрисуется пустым.
|
||
|
||
| TC | Зум | Проверка | Вердикт | Обоснование |
|
||
|----|-----|----------|---------|-------------|
|
||
| TC-UI-01-Z9 | 9 | Чекбокс активен, hint скрыт, hillshade виден | **FAIL (P1)** | Чекбокс/hint — OK (код выкатан), но hillshade z9 = 404 → теней нет. AC-03 не выполнен. |
|
||
| TC-UI-02-Z8-REGRESS | 8 | TRI как до ET-013 | NOT RUN | Нужен скриншот+baseline (нет раннера). TRI z8 = 200, код paint совпадает (unit PASS). |
|
||
| TC-UI-03-Z9-Q | 9 | Перепады читаются ≥ z8 | **FAIL (P1)** | hillshade z9 = 404; читаемость z9 деградирована относительно ожидания AC-07. TRI z9 работает, но hillshade-компонента отсутствует. |
|
||
| TC-UI-04-Z10-Q | 10 | Перепады читаются | NOT RUN | Контент есть (hillshade+TRI z10 = 200); требует визуальной приёмки оператором. |
|
||
| TC-UI-05-Z11-Q | 11 | Перепады читаются | NOT RUN | Контент есть (z11 = 200); визуальная приёмка. |
|
||
| TC-UI-06-Z14-REGRESS | 14 | Hillshade не «перегрет» | NOT RUN | hillshade z14 = 200, paint-stops подтверждены unit-тестом (opacity 0.40 / contrast 0). |
|
||
| TC-UI-07-Z9-MOBILE | 9 | Mobile: чекбокс/hint, нет H-scroll | **FAIL (P1)** | Та же причина, что TC-UI-01: hillshade z9 = 404. |
|
||
| TC-UI-08-Z10-SAT-Q | 10 | Hillshade поверх спутника | NOT RUN | Контент z10 есть; визуальная приёмка. |
|
||
| TC-UI-09-Z10-DARK-Q | 10 | Hillshade на тёмной теме | NOT RUN | Контент z10 есть; визуальная приёмка. |
|
||
| TC-UI-10-PERSIST | 10 | F5 не теряет состояние | NOT RUN | Логика persistence не менялась (REQ-F-17); требует браузера. |
|
||
| TC-UI-11-NETWORK-Q | 8-11 | Σ traffic ≤ 135% baseline | NOT RUN | Требует DevTools Network + baseline. |
|
||
| TC-UI-12-Z9-PAN | 9 | Pan без «белых дыр» | NOT RUN | На z9 hillshade-слой и так пустой (404) → проверка теряет смысл до фикса P1. |
|
||
|
||
**Легенда:** FAIL — кейс провален по объективным данным (404-тайлы);
|
||
NOT RUN — не выполнен из-за отсутствия раннера/Playwright, требует
|
||
ручного/Playwright-прогона оператором после устранения P1. Результаты
|
||
приколоть к `14-deploy-log.md`.
|
||
|
||
---
|
||
|
||
## 6. Матрица Acceptance Criteria → Test
|
||
|
||
| AC | Покрытие | Результат |
|
||
|---------|-------------------------------------------------------------------------------------------|------------------------|
|
||
| AC-01 | `test_minzoom_threshold_lowered_to_9`, `test_hint_text_updated_to_z9` | ✅ PASS |
|
||
| AC-02 | DevTools на test-среде | ⏳ DEFER → deploy log |
|
||
| AC-03 | TC-UI-01-Z9 + видимость hillshade-слоя | **❌ FAIL** (z9-тайлы 404, среда выкатана) |
|
||
| AC-04 | `test_hillshade_opacity_is_interpolate_by_zoom`, `…contrast_peak_z9`, `…resampling_nearest` | ✅ PASS |
|
||
| AC-05 | `test_tri_opacity_z8_regression`, `test_tri_opacity_peak_z9_z11`, `…resampling_nearest` | ✅ PASS |
|
||
| AC-06 | `test_tri_opacity_z8_regression` (z8 = 0.70 ровно) + TC-UI-02-Z8-REGRESS | ✅ PASS (код) / ⏳ DEFER (visual) |
|
||
| AC-07 | TC-UI-03-Z9-Q | **❌ FAIL** (z9-тайлы 404, среда выкатана) |
|
||
| AC-08 | TC-UI-04-Z10-Q | ⏳ DEFER → deploy log |
|
||
| AC-09 | TC-UI-05-Z11-Q | ⏳ DEFER → deploy log |
|
||
| AC-10 | TC-UI-06-Z14-REGRESS | ⏳ DEFER → deploy log |
|
||
| AC-11 | TC-UI-09-Z10-DARK-Q | ⏳ DEFER → deploy log |
|
||
| AC-12 | TC-UI-08-Z10-SAT-Q | ⏳ DEFER → deploy log |
|
||
| AC-13 | TC-UI-07-Z9-MOBILE | **❌ FAIL** (z9-тайлы 404, среда выкатана) |
|
||
| AC-14 | TC-UI-10-PERSIST | ⏳ DEFER → deploy log |
|
||
| AC-15 | `pytest tests/unit/test_terrain_paint.py` — 17/17 | ✅ PASS |
|
||
| AC-16 | `pytest tests/integration/test_terrain_z9_tiles.py` — 6 pass / 7 skip (по плану) | ✅ PASS |
|
||
| AC-17 | Полный `pytest tests/` — **254 passed, 7 skipped, 4 deselected, 0 failed** | ✅ PASS |
|
||
| AC-18 | Линт (Review v3, код не менялся) + полный `pytest` зелёный | ✅ PASS |
|
||
| AC-19 | Pre-deploy probe `.../hillshade/{9,10,11}/X/Y.png` — `hillshade/9` отдаёт **404** | **❌ FAIL (P1)** |
|
||
| AC-20 | Документация work item (см. §8) | ✅ PASS (12+ файлов) |
|
||
| AC-21 | TC-UI-11-NETWORK-Q (требует baseline + Playwright) | ⏳ DEFER → deploy log |
|
||
| AC-22 | `test_apply_terrain_layer_normalizes_number_to_legacy_paint` + `…uses_paint_variable` | ✅ PASS |
|
||
|
||
**Итого:** 11/22 AC закрыты авто-зелёные · 1 AC **FAIL (блокер P1,
|
||
AC-19)** · 3 AC **FAIL** (AC-03/07/13 — следствие AC-19: z9-тайлы 404)
|
||
· 7 AC делегированы Deployer-агенту (визуальная приёмка z10/z11/dark/
|
||
sat/persist/network).
|
||
|
||
---
|
||
|
||
## 7. Findings
|
||
|
||
### P0
|
||
Нет.
|
||
|
||
### P1
|
||
|
||
#### P1-01 — Pre-deploy gate AC-19: hillshade z=9 тайлы отсутствуют
|
||
|
||
**Где.** Test-среда `https://openclaw.mva154.duckdns.org/enduro/terrain/hillshade/9/*.png`.
|
||
|
||
**v3 re-confirm (2026-06-06).** Перепроверено повторно: `/api/health` →
|
||
200; hillshade `z9/{308/158, 309/348, 307/347, 310/349}` → 404; grid 5×5
|
||
вокруг TMS `(309,348)` → 0/25 → 200; hillshade z10/z11 (TMS `618/697`,
|
||
`1237/1395`) → 200; TRI z5/z8/z9/z10/z11/z12 → 200. ET-013-код на test
|
||
по-прежнему выкатан (`HILLSHADE_PAINT`/`TRI_PAINT`/`zoom < 9`, hint
|
||
«Зум 9+»). **Изменений нет — блокер тот же.**
|
||
|
||
**Симптом.** Все запросы вида `GET /terrain/hillshade/9/X/Y.png` (и
|
||
`hillshade/5..8/…`) возвращают 404. Покрытие отсутствует на всю
|
||
изученную область юга МО / ЦФО (проверено 6 точками ЦФО + grid'ом 5×5
|
||
вокруг целевой плитки `(309, 348)` под TMS). hillshade-стек начинается
|
||
только с z10.
|
||
|
||
**Почему блокер (в v2 — уже фактический, не гипотетический).** ET-013
|
||
**уже выкатан** на test-среду:
|
||
- UI-минзум hillshade понижен до 9 → чекбокс «Тени рельефа» активен
|
||
на z=9;
|
||
- `source.minzoom` = 9 → MapLibre запрашивает `/terrain/hillshade/9/X/Y.png`;
|
||
- получает 404 → слой рисуется пустым **прямо сейчас**.
|
||
|
||
Пользователь видит **включённый** слой **без теней**. Это хуже, чем
|
||
до ET-013, где чекбокс был disabled с честным hint'ом «Зум 10+».
|
||
**Регрессия UX**, явно противоречащая AC-03 / AC-07 / AC-13 / BRD-цели
|
||
ET-013 («перепады читаются на z9-z11»). На z10/z11 hillshade и на
|
||
z9-z11 TRI — работают корректно (тайлы 200).
|
||
|
||
**Что делать.** TRZ REQ-F-20 §1 и AC-19 однозначно говорят:
|
||
> Если 404 — задача останавливается, тайлы z9 нужно догенерировать в
|
||
> рамках PH-6 follow-up.
|
||
|
||
Действия:
|
||
1. Открыть PH-6 follow-up: «Generate hillshade tiles z8-z9 for CFO
|
||
coverage» (как минимум область, покрываемая текущим
|
||
`data/terrain/hillshade/10..14/`).
|
||
2. После генерации повторно прогнать probe из §4.1.
|
||
3. После 200 OK на z=9 — повторный запуск Tester'а + переход на
|
||
Deployer.
|
||
|
||
**Severity = P1, не P0** только потому, что: (a) код ET-013 корректен
|
||
и proven unit/integration-тестами; (b) деградирован только z9 hillshade
|
||
— z10/z11 hillshade и z9-z11 TRI работают; (c) рабочий процесс PH-6
|
||
follow-up — стандартная процедура для такого класса проблем. Тем не
|
||
менее в v2 проблема **фактическая** (ET-013 уже на test), а не только
|
||
pre-deploy-гипотеза.
|
||
|
||
### P2
|
||
Нет.
|
||
|
||
### P3
|
||
|
||
#### P3-01 — TRI z=14 отдаёт 404 (предсуществующая регрессия PH-6, не в скоупе ET-013)
|
||
`GET .../tri/14/X/Y.png → 404` (TRI-стек заканчивается на z12).
|
||
ET-013 не трогает TRI pipeline, но при включённом TRI и z>12
|
||
пользователь видит пустой слой. Покрыть follow-up'ом «extend TRI
|
||
tiles to z14».
|
||
|
||
#### P3-02 — Cache-Control `immutable` стрипается nginx-проксей на test
|
||
Backend FastAPI отдаёт `max-age=31536000, immutable`, на проде через
|
||
nginx остаётся только `max-age=31536000`. Формально REQ-F-18 нарушен
|
||
на edge-слое, но `max-age=1y` функционально достаточен. Не в скоупе
|
||
ET-013.
|
||
|
||
#### P3-03 — `from __future__ import annotations` в unit-тесте не используется
|
||
`tests/unit/test_terrain_paint.py:15` — косметика (унаследовано из
|
||
review v2 F-5).
|
||
|
||
#### P3-04 — Комментарий в `HILLSHADE_PAINT` не учитывает MapLibre clamping ниже z9
|
||
`src/web/app.js:2728-2733` — унаследовано из review v2 F-3. Не блокер;
|
||
актуально только если UI-минзум hillshade когда-нибудь понизят до z<9.
|
||
|
||
---
|
||
|
||
## 8. Документация work item (AC-20)
|
||
|
||
```
|
||
docs/work-items/ET-013/
|
||
00-business-request.md ✅
|
||
01-brd.md ✅
|
||
02-trz.md ✅
|
||
03-acceptance-criteria.md ✅
|
||
04-test-plan.yaml ✅
|
||
04b-ui-test-cases.md ✅
|
||
06-adr/ADR-017-zoom-aware-terrain-paint.md ✅
|
||
07-infra-requirements.md ✅
|
||
08-data-requirements.md ✅
|
||
10-tech-risks.md ✅
|
||
12-review.md ✅
|
||
13-test-report.md ← этот файл
|
||
14-deploy-log.md ⏳ ожидается после устранения P1-01
|
||
```
|
||
|
||
---
|
||
|
||
## 9. Вердикт
|
||
|
||
**BLOCKED.** Реализация ET-013 в коде корректна:
|
||
- Полный авто-регресс зелёный: **254 passed, 7 skipped, 4 deselected,
|
||
0 failed**. ET-013 unit 17/17 PASS, integration 6 PASS / 7 SKIP
|
||
(ожидаемо без data fixtures). Регрессий ET-007/008/009/011/012 нет.
|
||
- Соответствие TRZ / ADR-017 — 1:1 (подтверждено Review v3, APPROVED).
|
||
- Контракт API на test-среде стабилен; ET-013-фронт корректно выкатан.
|
||
|
||
Однако **pre-deploy/acceptance gate AC-19 не пройден** (P1-01): на
|
||
test-среде отсутствуют тайлы `hillshade/z5..z9/*`. Поскольку ET-013
|
||
уже на test, это даёт **фактическую** UX-регрессию: AC-03/AC-07/AC-13
|
||
(z9 hillshade) — FAIL. Закрытие/полная приёмка остановлены согласно
|
||
TRZ REQ-F-20 §1 и BRD-приоритету «UX-regression > frontend-fix ready».
|
||
|
||
### Что должно произойти дальше
|
||
|
||
1. **Открыть/выполнить PH-6 follow-up:** «Generate hillshade tiles
|
||
z5..z9 for CFO coverage area» (≈ область, покрытая
|
||
`data/terrain/hillshade/10/`, расширенная вверх по zoom-иерархии).
|
||
В v1 этот follow-up был рекомендован, но **не выполнен** — тайлы
|
||
z9 по-прежнему 404.
|
||
2. **После генерации тайлов:**
|
||
- повторный пробинг по §4.1 — ячейки hillshade/tri × z=9..11 → 200;
|
||
- повторный запуск Tester'а (патч-версия отчёта);
|
||
- визуальная приёмка z9.
|
||
3. **Deployer / оператор (ручная Playwright-приёмка):**
|
||
- выполнить ручные шаги REQ-F-20 §2: открыть карту, `setZoom(9)`,
|
||
включить hillshade, скриншот → визуальная приёмка AC-03..AC-05;
|
||
- прогнать Playwright TC-UI-01..12 (приоритет P1: TC-UI-01, -03, -07;
|
||
плюс уже-исполнимые z10/z11/dark/sat/persist — TC-UI-04/05/06/08/09/10);
|
||
- замерить network-объём (TC-UI-11/AC-21) против baseline;
|
||
- зафиксировать всё в `14-deploy-log.md`.
|
||
4. **Если визуальная приёмка AC-07..AC-09 «перепады недостаточно
|
||
выразительны»** — корректировка stops в HILLSHADE_PAINT/TRI_PAINT
|
||
(калибровка, не баг — см. BRD §6).
|
||
|
||
### Что НЕ нужно делать
|
||
|
||
- **Не back-to:dev для ET-013-frontend.** Код ET-013 правильный, тесты
|
||
зелёные, ревью пройдено (v3 APPROVED). Правки в `src/web/app.js` /
|
||
`src/web/index.html` не требуются — это блокер данных PH-6, не кода.
|
||
- **Не закрывать ET-013 без устранения P1-01.** Текущее состояние test
|
||
даёт включённый, но пустой hillshade на z=9.
|
||
|
||
---
|
||
|
||
## 12. Изменения в v4 (относительно v3)
|
||
|
||
- **Перезапуск после Review v6 (APPROVED).** HEAD сдвинут
|
||
`e948861 → 89b83e3`, но `git diff e948861..HEAD --stat -- src/ tests/`
|
||
даёт **пусто** — новые коммиты (tester run 215, reviewer run 216) —
|
||
только docs. Код/тесты бит-в-бит совпадают с v3.
|
||
- **Окружение прогона:** `make`/`curl` в контейнере отсутствуют → pytest
|
||
запущен напрямую в изолированном venv `/tmp/et013venv` (deps:
|
||
`shapely`/`lxml`/`defusedxml`/`mapbox-vector-tile`/`pytest-asyncio`),
|
||
HTTP-зонд — через `urllib`.
|
||
- **Авто-регресс повторён:** `pytest tests/` → **254 passed, 7 skipped,
|
||
4 deselected, 0 failed** (3.98s). ET-013 unit **17/17 PASS**,
|
||
integration **6 PASS / 7 SKIP** (skip — нет PNG-fixtures в sandbox,
|
||
механизм по AC-16). Регрессий ET-007/008/009/011/012 нет.
|
||
- **Pre-deploy probe AC-19 повторён → результат идентичен v3:**
|
||
- `/api/health` → 200 (`db_exists: true`).
|
||
- `/enduro/app.js` содержит `HILLSHADE_PAINT`/`TRI_PAINT`/`opacityOrPaint`/
|
||
`raster-contrast`/`'nearest'`/`if (zoom < 9)` → ET-013 выкатан.
|
||
- `hillshade/9/308/158`, `hillshade/9/309/348` → **404**;
|
||
grid 5×5 вокруг `(309,348)` → **0/25 → 200**; 6 точек ЦФО → **0/6**;
|
||
`hillshade/5..8` → 404 (стек начинается с z10).
|
||
- `hillshade/10`, `hillshade/11` → 200; `tri/8`, `tri/9`, `tri/10`,
|
||
`tri/11` → 200.
|
||
- **PH-6 follow-up по нарезке hillshade z5..z9 так и не выполнен.**
|
||
- **UI Playwright** — снова NOT EXECUTED (раннер/Playwright недоступны).
|
||
Visual-таблица §5 и матрица AC §6 без изменений относительно v3.
|
||
- **Вердикт без изменений: BLOCKED** (AC-19, P1-01). `back-to:dev` не
|
||
требуется — код корректен (Review v6 APPROVED), это блокер данных PH-6.
|
||
|
||
## 11. Изменения в v3 (относительно v2)
|
||
|
||
- Перезапуск после Review v5 (APPROVED). HEAD сдвинут `badd559 → e948861`,
|
||
но это **только docs-коммиты ревью** — `src/` и `tests/` бит-в-бит
|
||
совпадают с v2. Авто-регресс повторён: **254 passed, 7 skipped, 0 failed**;
|
||
ET-013 unit 17/17 PASS, integration 6 PASS / 7 SKIP.
|
||
- Pre-deploy probe AC-19 повторён → результат **идентичен v2**: hillshade
|
||
z9 отсутствует целиком (grid 5×5 → 0/25), z10/z11 работают, TRI z5-z12
|
||
работают. **PH-6 follow-up по нарезке z9-тайлов так и не выполнен.**
|
||
- UI Playwright — снова NOT EXECUTED (раннер `$UI_TEST_RUNNER` пуст,
|
||
`/home/slin/tools/ui-test/run_tests.js` отсутствует, playwright не
|
||
установлен).
|
||
- Вердикт без изменений: **BLOCKED** (AC-19, P1-01). `back-to:dev` не
|
||
требуется — дефекта кода нет.
|
||
|
||
## 10. Изменения в v2 (относительно v1)
|
||
|
||
- Полный авто-регресс теперь зелёный (254 passed) — в venv доустановлены
|
||
`shapely`/`defusedxml`/`lxml`/`mapbox-vector-tile`/`pytest-asyncio`,
|
||
чего не хватало в sandbox для v1 (collection-ошибки сняты).
|
||
- **test-среда теперь держит код ET-013** (в v1 — до-ET-013). Поэтому
|
||
AC-03/07/13 переведены из BLOCKED в **FAIL** (объективно проваливаются
|
||
на живой среде из-за 404-тайлов z9).
|
||
- Уточнены границы стеков: hillshade z10..z14 (200), TRI z5..z12 (200);
|
||
hillshade z5..z9 и TRI z13+ — отсутствуют.
|
||
- P1-01 остаётся открытым: PH-6 follow-up по z9-тайлам **не выполнен**
|
||
со времён v1.
|