fix(tdd-criteria): review findings — v0.1.0→v0.2.0

- Remove session-authorship trigger loophole (applies to ALL code changes)
- Add composite-tasks paragraph (criterion applies per artefact, not per task)
- Add refactoring carve-out (existing passing tests sufficient, no new tests)
- Expand file-extension list (go, rs, java, rb, ex, swift, kt, cs, php)
- Clarify wrapper line-count (non-blank non-comment lines)
- Add spike-survivor fallback (TODO/GitHub issue if no .tasks/)
- Fix "чужая schema" → "foreign schema" in algorithm + design doc
- Define TDD procedurally (red→green→refactor) in Default mode section
- Sync design doc with same changes
- Rebuild dist + dist-hermes + reinstall

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-07 10:12:17 +03:00
parent e260fe6cb1
commit 94b4c441e6
6 changed files with 46 additions and 58 deletions

View File

@@ -1,5 +1,5 @@
# Task Board
_Updated: 2026-05-07 (board cleanup: 4 stale → done, hermes-converter-ci unblocked; active: none)_
_Updated: 2026-05-07 (tdd-criteria-review done → v0.2.0)_
<!--
Canonical layout. One block per task. Per-task deep context lives in
@@ -468,37 +468,13 @@ Both layers are needed. Either alone leaves a path-of-least-resistance route to
---
## [tdd-criteria-review] — Code-review checkpoint для брейнсторма `tdd-criteria` (промоушен 2026-05-07).
## 🟢 [tdd-criteria-review] — Code-review checkpoint для брейнсторма `tdd-criteria` (промоушен 2026-05-07).
**Спецификация:** `~/projects/claude-skills/.wiki/concepts/tdd-criteria-design.md` (промоушен в commit `a03d280`).
**Импл-таски (review против их acceptance criteria):** `tdd-criteria-skill-write`, `tdd-criteria-hermes-mapping`, `tdd-criteria-build-install`.
**Кто делает:** **не имплементер.** Следующая сессия в `claude-skills` (другая модель / другой день / другой агент) поднимает таску с чистым контекстом. «Я только что это написал» bias = главный риск; brainstorm проводился в `.meeting-room`, импл — в `claude-skills`, ревьюер — третья сессия.
**Чек-лист ревью:**
1. **Прочитать спецификацию** (`.wiki/concepts/tdd-criteria-design.md`) — особенно секции «Decision algorithm», «Ironclad rules», «Permissive — accepted-risk zones», «Anti-loophole».
2. **Открыть `skills/tdd-criteria/SKILL.md`** и проверить:
- Frontmatter имеет `name: tdd-criteria`, `version: 0.1.0`, multi-line `description:` с триггер-фразами включающими «TDD», «test-driven», «skip-tdd», «следуй TDD».
- Все 4 Ironclad-правила и все 4 Permissive carve-outs присутствуют.
- Ведущий «Why this exists» аргумент — про anti-vandalism / contract-vs-artefact, не «good practice».
- **Нет** Claude-tool-refs в body (`Read`, `Edit`, `Glob`, `Bash`, `WebFetch`). `grep -E '(\\bRead\\b|\\bEdit\\b|\\bGlob\\b|\\bBash\\b)' SKILL.md` должно вернуть 0 хитов в content (frontmatter description допускает упоминание trigger-phrases).
- Длина ≤200 строк. Если больше — флаг.
3. **Открыть `hermes/mapping.yaml`** — entry `tdd-criteria: { mode: auto, category: software-development }`, **без** `replace-rules`. Если есть replace-rules — это значит SKILL.md имеет Claude-specific refs, что нарушает design.
4. **Verify build artefacts**: `dist/tdd-criteria.skill` существует и не пустой; `dist-hermes/software-development/tdd-criteria/SKILL.md` существует и совпадает с источником (для `mode: auto` без replace-rules — byte-identical).
5. **Verify install**: `~/.claude/skills/tdd-criteria/SKILL.md` существует, совпадает с источником.
6. **Smoke**: в новой Claude-сессии задать вопрос вида «нужны ли мне тесты для CSS-файла?» — skill `tdd-criteria` должен подцепиться по description, ответить «нет, [skip-tdd: visual]», без рассуждений «зависит от».
7. **Sanity-check на anti-vandalism rationale**: спросить себя «если бы я был агентом без этого скила и видел "messy code" — у меня есть signal не удалять?». Если SKILL.md формулирует только classical 4 аргумента (bug fix / pure logic / contract / security) — это значит ведущий argument потерялся при адаптации из design в SKILL. Это finding высокого приоритета.
**Findings → новые follow-up tasks** через `mcp__projects-meta__tasks_create` с slug-format `tdd-criteria-<gap>-fix` (например `tdd-criteria-trigger-phrase-fix`, `tdd-criteria-rationale-restore-fix`).
**Закрытие:** только когда (а) все findings зафайлены отдельными tasks, ИЛИ (б) ревьюер подтвердил «нет findings» в close-note (с явным «прошёл по 7 пунктам checklist-а»).
**Status:** ready
**Where I stopped:** unblocked — skill-write, mapping, build-install all shipped
**Next action:** Открыть свежую сессию в `claude-skills` (НЕ в `.meeting-room` и НЕ ту, в которой импл делался). Пройти 7-пунктный чек-лист в description. Findings — отдельные `tdd-criteria-*-fix` tasks. Закрыть с close-note.
**Status:** done
**Where I stopped:** Review complete. 7-point checklist passed. 4 findings applied directly as v0.2.0 (trigger-loophole fix, composite-tasks + refactoring sections, file-extension expansion, wrapper line-count clarification, spike-survivor .tasks/ fallback, foreign-schema fix). 3 minor items deferred as wontfix (retroactivity marker — negligible risk; spike-survivor already has fallback; refactoring is now documented). SKILL.md 0.1.0→0.2.0, design doc amended, rebuilt + reinstalled + hermes rebuilt.
**Next action:** (none — kept until merged)
**Branch:** master
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-07T04:03:12.170Z -->
<!-- created-by: OpeItcLoc03@DESKTOP-NSESKTOP-NSEF0UK / from: claude-skills / 2026-05-07 -->
---