promote: workshop/board-viewer brainstorm → concepts + 5 tasks
- concepts/board-viewer.md (design, promoted from .workshop) - .tasks/STATUS.md + 5 per-task files: - board-viewer-pointers (pre-impl, status=ready) - board-viewer-gitea-reader (impl, TDD, status=ready) - board-viewer-html-render (impl, TDD, blocker=gitea-reader) - board-viewer-cron-deploy (impl, infra carve-out, blocker=html-render) - board-viewer-review (umbrella, status=blocked) TDD-mode embedded in impl-tasks per follow tdd-criteria trigger in CLAUDE.md. MCP write-side workaround per memory reference_projects_meta_resolveTarget_bug.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
54
.tasks/board-viewer-review.md
Normal file
54
.tasks/board-viewer-review.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# board-viewer-review
|
||||
|
||||
## Goal
|
||||
|
||||
Code-review checkpoint для брейнсторма `board-viewer` (промоушен 2026-05-22).
|
||||
|
||||
**Спецификация:** `.wiki/concepts/board-viewer.md`.
|
||||
**Pre-impl bootstrap:** `board-viewer-pointers` (заполнил `.wiki/CLAUDE.md` Domain conventions — без него review бы читал stub).
|
||||
**Импл-таски (review против их acceptance criteria):** `board-viewer-gitea-reader`, `board-viewer-html-render`, `board-viewer-cron-deploy`.
|
||||
|
||||
**Кто делает:** **не имплементер.** Следующая сессия в этом проекте (другая модель / другой день / другой агент) поднимает таску с чистым контекстом. «Я только что это написал» bias = главный риск.
|
||||
|
||||
## Key files
|
||||
|
||||
- `.wiki/concepts/board-viewer.md` — canonical design
|
||||
- `.tasks/board-viewer-*.md` — acceptance criteria per impl-task
|
||||
- `~/projects/.workshop/.archive/2026-05-22-board-viewer.md` — brainstorm rationale
|
||||
|
||||
## Acceptance criteria (для самого ревью)
|
||||
|
||||
- Прочитана спецификация целиком.
|
||||
- `git log --oneline` shipped-коммитов (по slug или scope в commit-message) сверен с acceptance criteria каждой импл-таски.
|
||||
- Для каждой импл-таски: прогнан соответствующий тест-suite, проверено что тесты реально доходят до своих веток (не coverage-illusion).
|
||||
- Сверены дизайн-decisions со shipped-кодом: контракт reader → render, статика + cron на VDS, отсутствие write-side.
|
||||
- Findings зафайлены как follow-up tasks (`board-viewer-<gap>-fix` или подобное) через `mcp__projects-meta__tasks_create`, либо ревьюер подтвердил «нет findings» в close-note.
|
||||
|
||||
## Чек-лист ревью (poll-выполнения)
|
||||
|
||||
- [ ] reader: контракт публичных полей сохранён (не сужен, не расширен молча)
|
||||
- [ ] reader: фикстуры покрывают edge cases (legacy без per-task.md, blocked с blocker-строкой)
|
||||
- [ ] render: snapshot-тесты обновлены вместе с изменениями (не закоммичен код без апдейта snapshot)
|
||||
- [ ] render: визуально не AI-generic, минимализм соблюдён
|
||||
- [ ] cron-deploy: systemd unit + timer проверены `systemctl status`, не только запущены
|
||||
- [ ] cron-deploy: basic-auth проверена `curl` с верными / неверными кредами
|
||||
- [ ] auth scope: пушится ли токен в публичный репо случайно? (`grep -r "02a14e" deploy/` должен быть пуст)
|
||||
- [ ] disaster recovery: README.md в deploy/ достаточен чтобы поднять с нуля?
|
||||
|
||||
## Decisions log
|
||||
|
||||
- 2026-05-22: review-task создан промоушеном; status=blocked, blocker = все 4 импл-таски.
|
||||
|
||||
## Open questions
|
||||
|
||||
- [ ] (заполняется ревьюером по ходу)
|
||||
|
||||
## Completed steps
|
||||
|
||||
- [ ] (фиксируется при выполнении)
|
||||
|
||||
## Notes
|
||||
|
||||
**Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note.
|
||||
|
||||
**TDD-immutability:** если ревью обнаружит модифицированные assert'ы без `[test-modify: ...]` маркера в commit subject — это нарушение `follow tdd-criteria`, finding обязателен.
|
||||
Reference in New Issue
Block a user