Appearance
Code review โ dashboard full build โ
- Branch:
feature/dashboard-full-buildโmaster - Date: 2026-06-23
- Scope: 3 files (+249 / โ5) โ
dashboard-page.{ts,html,spec.ts} - Reviewer: code-reviewer agent over
git diff origin/master...HEAD, synthesized.
Deterministic gate โ
| Check | Result |
|---|---|
nx lint web | โ 0 errors |
nx test web | โ 177 passed (+3) |
| coverage gate | โ stmts 77.8% ยท branches 67.7% ยท fns 69.0% ยท lines 82.8% (all โฅ threshold) |
nx build web | โ |
What's in the build (design-system dashboard gaps) โ
- Mandate drill-down โ clicking a
.dash-cardopens a read-only breakdown: large completion ring (.dash-ring.lg), stacked status bar (.dash-bar+ legend), full chronological activity list (.dash-actwith assignee +.dash-act-gacxreward), and a "โ Back to mandates" link. Driven by aselectedsignal +detailcomputed. - GACx on activity rows โ
task.gacxRewardshown in the people view too. - "Finished ยท last 30 days" โ
dataLatest(max activity timestamp) anchors a 30-day window for the people view's finished list; no dates โ includes all (safe fallback).
No CSS added โ all .dash-* breakdown classes already exist in dispatch-theme.css.
Findings โ
๐ด Blocking โ none. โ
๐ก Should-fix โ none. โ
๐ข Nits (all acceptable, no change) โ
Date.parsetreats date-only ISO (2026-06-20) as UTC vs datetime as local โ harmless given all comparisons are relative over a 30-day window.@if (task.gacxReward)hides a zero reward โ intentional, matches the existing@if (task.due)pattern.denom = total || 1guards division but is unreachable at 0 (zero-task mandate โ all segments filtered out โ bar block skipped). Correct.
Verified clean โ
Signal reads are all calls; computeds chain correctly. selected stores only an id, so detail re-resolves each recompute and falls back to the grid if the mandate disappears (no stale object). selectMandate(undefined) no-ops; unknown id โ detail null โ grid stays. 30-day no-date fallback is intended. .slice() before .sort() avoids mutating source. .dash-card a11y complete (role/tabindex/aria-label/keydown.enter/keydown.space+preventDefault). [style.--pct] / [style.width.%] valid. Detail view replaces grid+stats via @else if (detail(); as det) โ stat-strip hidden in detail mode is intended. Models fidelity confirmed (gacxReward/scope/rate/duration all typed). The 3 new specs assert real behavior (drill-down DOM, back-to-grid, guards, assignee resolution, 30-day window via the "1 finished" toggle).
Verdict โ
Ship it โ 0 blocking, 0 should-fix. Clean, correct, well-tested. Awaiting a visual pass + sign-off before push.