From 3ffb5109a7d6e0e60779d9cdac1edae27e4728fc Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 13 Aug 2026 16:29:00 +0300 Subject: [PATCH] =?UTF-8?q?tasks:=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20gate-changed-li?= =?UTF-8?q?nes-coverage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Владелец отменил механизацию покрытия изменённых функций 2026-08-13. - Причина и дата уехали в REJECTED.md; в коде и документах ничего не менялось. --- tasks/BACKLOG.md | 1 - tasks/REJECTED.md | 1 + tasks/items/gate-changed-lines-coverage.md | 43 ---------------------- 3 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 tasks/items/gate-changed-lines-coverage.md diff --git a/tasks/BACKLOG.md b/tasks/BACKLOG.md index d9a2c88..50d5c8c 100644 --- a/tasks/BACKLOG.md +++ b/tasks/BACKLOG.md @@ -43,7 +43,6 @@ ## Очередь -- [🧹 Ронять гейт на изменённой функции, которую не выполняет ни один тест](items/gate-changed-lines-coverage.md) — Свойство «изменённое место покрыто хоть одним тестом» записано в docs/review.md, но не механизировано: за две задачи подряд непокрытые шаги ловили руками. - [🧹 Проверить шаг гейта migrations так же, как шаг сверки версий Go](items/migrations-step-norm-and-tests.md) — Шаг охраняет critical-инвариант «применённый шаг схемы не переписывается», но своих проверок не имеет: дрейф шаблона имени, переезд каталога или потеря grep в конвейере оставят его вечно зелёным, и это не заметит ничто. - [🔬 Шаги гейта, у которых правило может потерять предмет](items/gate-steps-subject-guard.md) — У шага migrations страж предмета есть, у шагов docs, tasks и openspec неизвестно: они зовут чужие скрипты из плагинов, и правило, потерявшее файлы, зеленело бы молча. - [🧹 Настроить конвейер ревью по итогам прогона go-1-26-upgrade](items/review-config-from-go-upgrade.md) — Прогон вскрыл две прорехи настройки: «Типовые узлы» знают только рантайм и не знают рода «проверочный шаг набора проверок», а «Триггеры метки» не видят оси «изменение трогает канон» — и именно она дала обе блокирующие находки. diff --git a/tasks/REJECTED.md b/tasks/REJECTED.md index 97bb5fa..6414872 100644 --- a/tasks/REJECTED.md +++ b/tasks/REJECTED.md @@ -17,3 +17,4 @@ - 2026-08-13 `usage-stats` — 🎯 Владелец видит, кто сколько загрузил и во что это обошлось. Причина: Зонтик над разобранной работой: учёт ведёт usage-accounting, показывает его admin-stats-screen. Тип goal упразднён раскладкой av-dev 3. Была секция: Сопровождение. - 2026-08-13 `user-settings` — 🎯 Пользователь настраивает, что сервис делает с его записями. Причина: Зонтик над разобранной работой: дом настроек заводит settings-screen, читает их в конвейере settings-applied-in-pipeline. Тип goal упразднён раскладкой av-dev 3. Была секция: Запланировано. - 2026-08-13 `web-access` — 🎯 Записи загружаются и читаются в приложении, которое ставится на телефон. Причина: Зонтик над разобранной работой: каркас даёт spa-skeleton, контракт json-api-for-spa, экраны upload-and-status-screen, records-list-screen, play-recording-in-app, установку на телефон installable-pwa. Тип goal упразднён раскладкой av-dev 3. Была секция: Запланировано. +- 2026-08-13 `gate-changed-lines-coverage` — 🧹 Ронять гейт на изменённой функции, которую не выполняет ни один тест. Причина: Владелец отменил 2026-08-13: механизировать покрытие изменённых функций не нужно. Прототип шага гейта откачен, в дерево ничего не уехало. Была секция: Очередь. diff --git a/tasks/items/gate-changed-lines-coverage.md b/tasks/items/gate-changed-lines-coverage.md deleted file mode 100644 index 583b4af..0000000 --- a/tasks/items/gate-changed-lines-coverage.md +++ /dev/null @@ -1,43 +0,0 @@ -# 🧹 Ронять гейт на изменённой функции, которую не выполняет ни один тест - -- **Тип:** chore -- **Категория:** Очередь — Непокрытую изменённую функцию дважды ловил проход ревью, а не машина; порог решён 2026-08-12, брать можно. -- **Зачем:** Свойство «изменённое место покрыто хоть одним тестом» записано в docs/review.md, но не механизировано: за две задачи подряд непокрытые шаги ловили руками. - -`CLAUDE.md`, раздел «Гейт», объявляет прямо: «покрытие изменённых строк не -считается ничем». Цена этого измерена дважды. В задаче -`http-handler-tests-never-green` тесты обработчика не были зелёными ни разу; в -`pocketbase-storage` два из трёх шагов конвейера переписали целиком и не -выполнили ни одним тестом — нашёл это проход ревью, а не машина. - -**Единица счёта — функция, а не строка** (решение владельца 2026-08-12). Шаг -краснеет на новой или изменённой функции, которую не выполняет ни один тест; -доля покрытых строк внутри неё не считается и порогом не ограничивается. Довод: -процент изменённых строк роняет гейт на всякой ветке отказа, которую нечем -изобразить в тесте, а порог ниже ста пришлось бы брать из ниоткуда. Именно -непокрытая целиком функция — то, что дважды ловили руками. - -## Затрагивает - -- набор шагов `task gate` в `Taskfile.yml` и переменная `BASE` как база диффа; -- семантика гейта в `CLAUDE.md`, раздел «Гейт», строка про покрытие; -- `docs/review.md`, раздел настройки конвейера: чем проход `autotests` перестаёт - заниматься руками. - -## Критерии приёмки - -- Изменённая строка без покрытия роняет гейт. Оракул — прогон на дереве, где в - тронутый файл добавлена заведомо невыполняемая ветка: шаг краснеет с её - адресом. -- Изменение, не трогающее код, шаг не гоняет. Оракул — `task gate` на дереве с - правкой одной только документации: шаг сообщает о пропуске с причиной. -- Единица счёта названа в `CLAUDE.md` и совпадает с тем, что проверяет шаг. - Оракул — `task gate`, шаг `docs.py check`. -- Функция, тронутая правкой на одну строку, шаг не роняет, если её вызывает хоть - один тест. Оракул — прогон на дереве с однострочной правкой внутри покрытой - функции: шаг зелёный. - -## Рамки - -Общее покрытие проекта не считаем и порога на него не ставим: он растёт от -тестов на тривиальное и не отвечает ни на один вопрос.