From 7fbebac741da69ecc1b8962abef4facdb8083ea5 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 27 Sep 2026 19:59:56 +0400 Subject: [PATCH] 0.2.0: finding markers and follow-up issue at close --- CHANGELOG.md | 4 ++++ docs/HARNESS.md | 18 +++++++++++++++++- global/CLAUDE.md | 13 ++++++++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b31396d..e61a01a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.2.0 — 2026-09-27 +- Маркировка находок и решений: `T.`, `C/I/M-n`, `R-n`, `O-n`, `H-n`; обязательный статус fixed / deferred / rejected. +- Чеклист закрытия: п. 6 — отложенные находки собираются в issue Gitea `Follow-ups from #N`. + ## 0.1.0 — 2026-09-27 - Первая версия после пилота на obsidian-voice-note (10 задач, 125 тестов, PR #2). - Хуки: guard-main (main + detached HEAD, Bash-запись, исключение для openspec/), require-plan (.bounded). diff --git a/docs/HARNESS.md b/docs/HARNESS.md index 3e8e06c..54b8ba0 100644 --- a/docs/HARNESS.md +++ b/docs/HARNESS.md @@ -25,7 +25,7 @@ | 7 | Финальное ревью всей ветки (opus), одна волна фиксов | агент | — | | 8 | `finishing-a-development-branch`: PR в Gitea с «Rulings I made» | агент | PR | | 9 | Ревью PR в Gitea; комментарии → `receiving-code-review` → правки в ветке; **вы делаете merge** | вы ↔ агент | merge | -| 10 | «Закрывай»: чеклист из 6 пунктов (см. CLAUDE.md) | агент | archive, closed issue, чистый main | +| 10 | «Закрывай»: чеклист из 7 пунктов (см. CLAUDE.md) | агент | archive, closed issue, follow-up issue, чистый main | Шаги 6–8 идут без остановок. Агент останавливается только на необратимой операции, вопросе безопасности, побочном эффекте вне worktree или плане, который невозможно исполнить. @@ -49,6 +49,22 @@ Fix loop: раунды 1–3 продолжают того же implementer, 4 Читать: спеку один раз при утверждении, раздел решений каждый раз, когда он пополняется (после спеки, после плана, в финальном отчёте SDD). Каждое решение — вопрос «согласен ли я»: согласен — ничего не делать; не согласен — сказать агенту, он поправит; непонятно — спросить. +## Маркировка находок + +Всё, что всплывает за фичу — замечания ревьюеров, рулинги контроллера, наблюдения, комментарии в PR — получает маркер источника и сохраняет его во всех документах: ledger → отчёт контроллера → PR → design.md → follow-up issue. + +| Маркер | Источник | Пример | +|---|---|---| +| `T.` | minor из ревью задачи n плана | `T1.1` — Node-глобалы проходят проверку типов в `src/core` | +| `C-n` / `I-n` / `M-n` | финальное ревью ветки: critical / important / minor | `M-3` — жёсткий путь к vault в конфиге сборки | +| `R-n` | рулинг контроллера (процесс, план vs спека, состав фикс-волны); рядом номер решения в design.md | `R-5 (design #33)` — claimAll следует спеке, не плану | +| `O-n` | наблюдение контроллера вне ревью | `O-1` — счётчики в отчётах implementer неточны | +| `H-n` | комментарий человека в PR | `H-1` — переименовать поле | + +Статус каждой находки — `fixed `, `deferred` или `rejected <причина>`; пункт без статуса в финальном отчёте контроллера считается ошибкой. Отложенное живёт не в ledger (он удаляется) и не в чате, а в одной issue Gitea `Follow-ups from #N`, которую агент заводит при закрытии. Следующая фича начинается с `tea issues ls` — и там эти пункты видны. + +Зачем так: на пилоте контроллер придумал маркеры сам (T по номеру задачи без счётчика, P/F для рулингов), два пункта остались без маркера, а весь список отложенного жил только в удалённом ledger и в чате. + ## Хуки | Правило | Файл | Механизм | diff --git a/global/CLAUDE.md b/global/CLAUDE.md index eca5dba..2e1d5f2 100644 --- a/global/CLAUDE.md +++ b/global/CLAUDE.md @@ -25,10 +25,21 @@ 3. Удалить SDD workspace (`.superpowers/sdd//`). 4. Удалить ветку фичи на сервере и локально (`git push origin --delete`, `git branch -D`), удалить worktree (`git worktree remove`). Остальные worktree не трогать. 5. Обновить основной checkout: если рабочее дерево там чистое — `git pull --ff-only`; если есть незакоммиченные изменения — не трогать, а перечислить их в итоговом сообщении. - 6. Итоговое сообщение: что сделано по пунктам 1–5, что осталось человеку. + 6. Все находки со статусом `deferred` (см. «Маркировка») собрать в одну issue Gitea `tea issues create` с заголовком `Follow-ups from #`: маркер, одна строка, откуда взялось. Если отложенного нет — issue не создавать. + 7. Итоговое сообщение: что сделано по пунктам 1–6, номер follow-up issue, что осталось человеку. Любой другой push в main — только через PR. - Список "Rulings I made" из финального сообщения копируется в описание PR. - Любое решение, принятое агентом без обсуждения с человеком — на этапе спеки, плана или исполнения — дописывается в `openspec/changes//design.md` в раздел `## Decisions made without discussion`: дата, решение, обоснование, что стоит ошибка. Ledger SDD удаляется, чат теряется; design.md архивируется вместе со спекой и остаётся в истории. +## Маркировка находок и решений +- Каждая находка и каждое решение в ledger, отчётах, PR и design.md несёт маркер источника. Маркер присваивается один раз и не меняется при переносе между документами. + - `T.` — k-я minor-находка ревьюера задачи n плана (`T4.1`, `T4.2`). + - `C-n` / `I-n` / `M-n` — critical / important / minor из финального ревью всей ветки. + - `R-n` — рулинг контроллера, сквозная нумерация в пределах фичи; рядом номер решения в design.md: `R-5 (design #33)`. + - `O-n` — наблюдение контроллера вне ревью (неточные отчёты, инструменты, окружение). + - `H-n` — замечание человека из PR, обработанное через receiving-code-review. +- Каждая находка заканчивается одним из статусов: `fixed `, `deferred`, `rejected <причина>`. Находка без статуса в финальном отчёте — ошибка контроллера. +- Финальный отчёт контроллера содержит таблицу всех находок с маркером и статусом; `deferred` попадают в описание PR и в follow-up issue при закрытии (чеклист, п. 6). + ## Стиль - Отчёты сабагентов, рулинги и ledger не сжимать. Caveman включается только по явной команде.