- 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>
3.7 KiB
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 --onelineshipped-коммитов (по 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 обязателен.