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>
This commit is contained in:
vitya
2026-05-22 15:16:36 +03:00
parent e4e1fa1254
commit 9dda6298f0
5 changed files with 169 additions and 7 deletions

View File

@@ -0,0 +1,43 @@
# board-viewer-card-meta-fix
## Goal
Card meta сейчас содержит **title + project + age**. Acceptance criteria `board-viewer-html-render.md` строка 19-24 явно перечисляет 5 полей:
- title (труб 80 chars) ✅
- project badge ✅
- **owner (если есть) — pill** ❌ (поле `project_owner` есть в TaskRecord и JSON, но не выводится)
- age (relative) ✅
- **last-commit-marker — короткий hash или дата** ❌ (есть только relative age от `last_commit_iso`, абсолютной даты/хэша нет)
html-render таска закрылась без этих полей — gap. Не было замечено при self-review (потому и нужен independent reviewer).
## Key files
- `src/render.ts:111-127``renderCard()` (server-side первая рендер-проходка)
- `static/board.js:76-89``renderCard()` (client-side rerender при toggle-grouping)
- `tests/render.test.ts` — добавить assertions для двух новых полей
- `static/board.css` — стиль для `.badge.owner` если нужно отличать визуально
## Acceptance criteria
- Card showing `project_owner` as a pill (CSS class `.badge.owner`), скрыт если поле пустое.
- Card showing last-commit-marker: minimum — ISO date `YYYY-MM-DD` (короткая дата, NOT relative). Hash недоступен из API без extra call → opt for date.
- Возможность размещения: либо как третий meta-span после age, либо как tooltip на age (`title="<iso>"`); решение имплементера.
- 2+ TDD tests:
- card with `project_owner` shows owner pill containing the value
- card with `last_commit_iso` shows date (e.g. `2026-05-22`) — separate from relative age
- Обе ветки (server-side `src/render.ts` + client-side `static/board.js`) синхронны.
## Decisions log
- 2026-05-22: задача из review-чекпойнта; severity=major (acceptance gap, не self-replied).
- Open: owner pill всегда показывать или только при variability (когда есть >1 owner в выборке)? — рекомендация: всегда показывать когда поле не null (нет смысла фильтровать на rendering этапе).
## Completed steps
- [ ] (фиксируется при выполнении)
## Notes
TDD obligatory — render логика, не visual. Тестируется через DOM-property assertions (как в `render.test.ts`).