closes board-viewer-review Subagent code-review against design spec + acceptance criteria found: - 2 Major: README emoji legend stale (board-viewer-readme-emoji-fix), card meta missing owner pill + last-commit-marker (board-viewer-card-meta-fix) - 6 minor/nitpick bundled as board-viewer-polish All shipped code: 43/43 tests pass, TDD-immutability clean, secret hygiene OK. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.6 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 импл-таски.
- 2026-05-22: review выполнен subagent'ом (general-purpose, clean context). 43/43 тестов pass, TDD-immutability clean (no
[test-modify:]markers needed — diffs append-only), secret hygiene OK (02a14egrep clean acrossdeploy/). 2 Major findings + 6 minor/nitpick — зафайлены:board-viewer-readme-emoji-fix,board-viewer-card-meta-fix,board-viewer-polish(бандл). - 2026-05-22: findings зафайлены LOCAL в
.tasks/(project-discipline Rule 1 override), не черезmcp__projects-meta__tasks_create(это локальные таски, не cross-project).
Open questions
- (нет — все findings зафайлены)
Completed steps
- спецификация прочитана subagent'ом
git log --onelineсверен с acceptance criteria каждой импл-таски- test suite прогнан (43/43 pass)
- design ↔ shipped contract проверен
- TDD-immutability audit (clean)
- secret hygiene grep (clean)
- findings зафайлены follow-up тасками
Notes
Закрытие: только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note.
TDD-immutability: если ревью обнаружит модифицированные assert'ы без [test-modify: ...] маркера в commit subject — это нарушение follow tdd-criteria, finding обязателен.