diff --git a/docs/work-items/ET-001/01-brd.md b/docs/work-items/ET-001/01-brd.md index 9ab3eb1..53ed5eb 100644 --- a/docs/work-items/ET-001/01-brd.md +++ b/docs/work-items/ET-001/01-brd.md @@ -2,7 +2,7 @@ type: brd work_item_id: ET-001 title: "BRD: Чекбокс показа/скрытия POI в кнопке рельефа" -version: 3 +version: 4 status: proposed created_at: 2026-06-14 updated_at: 2026-06-14 @@ -77,7 +77,7 @@ relates_to: ET-002 | Риск | Митигация | |------|-----------| -| Переименование подписи ломает unit-тест, проверяющий текст | Проверить `tests/unit/poi_toggle.test.js` / `tests/unit/test_poi_toggle.py`; обновить ожидание текста синхронно с правкой | +| Переименование подписи ломает существующий регресс-тест ET-002: `tests/unit/test_poi_toggle.py:54` жёстко проверяет `assert "POI" in html` | Обновить ожидание текста в этом тесте на `Показывать POI` **в том же коммите**, что и правку `index.html:88`. JS-тест `poi_toggle.test.js` подпись не проверяет — его трогать не нужно | | Восприятие задачи как «нечего делать» (дубликат ET-002) | Чёткая дельта BR-2 + полный регресс-пакет верификации | | Коллизия артефактов с барьерной задачей под тем же ID | Барьерные артефакты заархивированы; данный пакет — канонический для POI-ET-001 | diff --git a/docs/work-items/ET-001/02-trz.md b/docs/work-items/ET-001/02-trz.md index bab276b..5960066 100644 --- a/docs/work-items/ET-001/02-trz.md +++ b/docs/work-items/ET-001/02-trz.md @@ -2,9 +2,10 @@ type: trz work_item_id: ET-001 title: "ТЗ: Чекбокс показа/скрытия POI в кнопке рельефа" -version: 2 +version: 3 status: proposed created_at: 2026-06-14 +updated_at: 2026-06-14 author: "agent:analyst" relates_to: ET-002 --- @@ -22,8 +23,15 @@ relates_to: ET-002 ### REQ-F-01 — Подпись чекбокса «Показывать POI» (НОВАЯ ПРАВКА) - В попапе рельефа (`#terrain-popup`) чекбокс `#poi-visible-cb` должен иметь текстовую подпись **«Показывать POI»**. -- Текущее состояние: подпись — «POI» (`src/web/index.html`, узел - `` рядом с `#poi-visible-cb`). +- Текущее состояние: подпись — «POI» (`src/web/index.html:88`, узел + `POI` рядом с `#poi-visible-cb`). +- **Жёсткая связь с существующим тестом (важно для исполнителя):** правка + ломает регресс ET-002 `tests/unit/test_poi_toggle.py:54` — + `assert "POI" in html`. Эту проверку нужно обновить на + `Показывать POI` **в том же коммите**, иначе `make test` + упадёт. (JS-тест `tests/unit/poi_toggle.test.js` текст подписи **не** + проверяет — он извлекает поведенческий блок по маркерам и подписи не + касается.) - Приёмка: видимый текст подписи равен «Показывать POI»; layout попапа не ломается (одна строка, без обрезки) на desktop и mobile. @@ -88,10 +96,13 @@ relates_to: ET-002 ## 4. Объём изменений для ET-001 -1. `src/web/index.html`: заменить текст подписи `POI` → +1. `src/web/index.html:88`: заменить текст подписи `POI` → `Показывать POI` у `#poi-visible-cb`. -2. Синхронно обновить unit-тест, если он проверяет текст подписи - (`tests/unit/poi_toggle.test.js`). +2. **Синхронно** обновить ожидание текста в существующем регресс-тесте + ET-002 `tests/unit/test_poi_toggle.py:54` (`assert "POI" + in html` → `assert "Показывать POI" in html`). Без этого + `make test` упадёт. *(Уточнение: текст подписи проверяет именно + python-тест; JS-тест `poi_toggle.test.js` его не трогает.)* 3. Прогнать регрессию по REQ-F-02…REQ-F-07 (поведение ET-002 не должно измениться). diff --git a/docs/work-items/ET-001/03-acceptance-criteria.md b/docs/work-items/ET-001/03-acceptance-criteria.md index 7c9b9c0..a175210 100644 --- a/docs/work-items/ET-001/03-acceptance-criteria.md +++ b/docs/work-items/ET-001/03-acceptance-criteria.md @@ -2,9 +2,10 @@ type: acceptance-criteria work_item_id: ET-001 title: "Критерии приёмки: Чекбокс показа/скрытия POI" -version: 2 +version: 3 status: proposed created_at: 2026-06-14 +updated_at: 2026-06-14 author: "agent:analyst" relates_to: ET-002 --- diff --git a/docs/work-items/ET-001/09-analyst-decision-required.md b/docs/work-items/ET-001/09-analyst-decision-required.md index 71e84cd..6d5d680 100644 --- a/docs/work-items/ET-001/09-analyst-decision-required.md +++ b/docs/work-items/ET-001/09-analyst-decision-required.md @@ -6,6 +6,13 @@ status: blocked-needs-owner-decision created_at: 2026-06-12 author: "agent:analyst" recommendation: close-as-duplicate-of-ET-002 +analyst_stage: complete # POI BRD/ТЗ/AC/тест-план/UI закоммичены (см. §10, прогон #22) +correction_note: > + Прогон #22 (2026-06-14): инвентаризация §3/§9 устарела. Вопреки прежней + формулировке «стандартный пакет осознанно не выпущен», аналитический пакет + POI (01-brd/02-trz/03-ac/04-test-plan/04b-ui) УЖЕ закоммичен как POI + (HEAD == рабочее дерево). Аналитический этап завершён; блокер — только + решение Owner. Детали — §10. supersedes_note: > Краткая авторитетная сводка по ET-001. Подробный (избыточный) лог предыдущих прогонов — в 08-analyst-finding-duplicate.md. Это 19-я @@ -184,3 +191,58 @@ ET-002) + коллизия ID ET-001 с барьерной задачей. Бе с «POI». - **Новый ID** → выдать POI-запросу свежий ID (действие оркестратора), `ET-001` оставить барьерной задачей (вернуть POI-файлы из `archive/`). + +## 10. Прогон #22 (2026-06-14) — независимая ре-верификация + корректировка факта + +Перепроверил все ключевые утверждения по **живому коду** и `git` (рабочее +дерево `docs/work-items/ET-001/` = HEAD, чисто). Итоги: + +**(A) Функция в проде — подтверждено (дубликат ET-002).** +- `src/web/index.html:86–89` — `#poi-visible-cb` (`checked`) внутри `#terrain-popup`, + подпись `POI`. +- `src/web/app.js:2906–2960` — блок `>>> ET-002 POI visibility block <<<`: + `applyPoiVisibility()`, `onPoiCheckbox()` → `localStorage['poi-visible']`, + `restorePoiState()`; вызывается при загрузке (`:136`) и смене стиля/темы + (`:3485`, `:3499`) → персистентность между сессиями И при смене темы. +- Реальные unit-тесты присутствуют: `tests/unit/poi_toggle.test.js`, + `tests/unit/test_poi_toggle.py`. + +**(B) КОРРЕКТИРОВКА устаревшего факта из §3/§4/§9.** Инвентаризация прежних +прогонов утверждала, что HEAD `01-brd.md` — барьерный и что «стандартный +пакет осознанно не выпущен». Это **неверно** по фактическому HEAD. Истинная +классификация закоммиченных файлов (по `git show HEAD:…` + заголовкам): + +| Файл @ HEAD | Факт (прогон #22) | Этап | +|---|---|---| +| `00-business-request.md` | 🚧 барьеры | вход (не мой) | +| `01-brd.md` | 📍 **POI** (v3) | аналитик ✅ | +| `02-trz.md` | 📍 **POI** | аналитик ✅ | +| `03-acceptance-criteria.md` | 📍 **POI** | аналитик ✅ | +| `04-test-plan.yaml` | 📍 **POI** (v2, AC-01..10) | аналитик ✅ | +| `04b-ui-test-cases.md` | 📍 **POI** | аналитик ✅ | +| `06-adr/ADR-001-barrier-blocking.md` | 🚧 барьеры | архитектор (не мой) | +| `07-infra-requirements.md` | 🚧 барьеры | архитектор/инфра (не мой) | +| `12-review.md`, `13-test-report.md` | 🚧 барьеры | ревью/тест (не мои) | + +Вывод: **аналитический пакет POI уже выпущен и закоммичен** (его создал +более ранний прогон, ср. `git log` `run_id=5/6`). Все пять артефактов +аналитика — POI, без барьерного содержимого (упоминания барьеров в 01/02 — +лишь контекст про архив/коллизию ID). **Этап «Анализ» по POI — завершён; +новой аналитической работы нет.** Барьерные остатки — в файлах ЧУЖИХ этапов +(00/06/07/12/13), править их аналитику запрещено (CLAUDE.md №2). + +**(C) Единственная дельта поведения** между запросом и продом — косметическая: +подпись «POI» (в UI) vs «Показывать POI» (в запросе). Это правка кода (этап +разработки), не аналитики. + +**(D) Действие прогона.** Эскалация Owner в этом (интерактивном) прогоне — +запрос с 3 вариантами §5 **отклонён без выбора**. Зацикливать эскалацию не +стал. Применён безопасный дефолт: деструктивных действий нет, барьерные и +POI закоммиченные артефакты не тронуты, дубликат не создан, разработка не +начата. Внесена только данная корректировка факта в собственный +аналитический мета-артефакт (этот файл) — чтобы будущие прогоны не выводили +повторно ложный вывод «пакет не выпущен». + +**Итог.** Этап «Анализ» завершён (пакет POI в наличии и корректен). Задача +остаётся `blocked-needs-owner-decision`; рекомендация прежняя — +**закрыть ET-001 как дубликат ET-002** (закрытие за Owner/CI, CLAUDE.md №4).