# 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--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 обязателен.