Files
board-viewer/.tasks/board-viewer-review.md
vitya 9dda6298f0 task(review): independent review done, findings filed
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>
2026-05-22 15:16:36 +03:00

63 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 импл-таски.
- 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 (`02a14e` grep clean across `deploy/`). 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
- [x] (нет — все findings зафайлены)
## Completed steps
- [x] спецификация прочитана subagent'ом
- [x] `git log --oneline` сверен с acceptance criteria каждой импл-таски
- [x] test suite прогнан (43/43 pass)
- [x] design ↔ shipped contract проверен
- [x] TDD-immutability audit (clean)
- [x] secret hygiene grep (clean)
- [x] findings зафайлены follow-up тасками
## Notes
**Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note.
**TDD-immutability:** если ревью обнаружит модифицированные assert'ы без `[test-modify: ...]` маркера в commit subject — это нарушение `follow tdd-criteria`, finding обязателен.