diff --git a/docs/plans/2026-04-23-executive-report-v2-design.md b/docs/plans/2026-04-23-executive-report-v2-design.md index 7019d51..627a765 100644 --- a/docs/plans/2026-04-23-executive-report-v2-design.md +++ b/docs/plans/2026-04-23-executive-report-v2-design.md @@ -268,3 +268,28 @@ Hand off to `superpowers:writing-plans` to produce the task-by-task implementati 4. After PDF template mirrors HTML Four natural demo-able pauses. Similar cadence to the 2026-04-22 work-log-payroll-crosslink plan. + +--- + +## Shipped — 23 Apr 2026 + +**Commits:** 27cdb46 (design) → Task 14 shipped commit. +**Plan:** `docs/plans/2026-04-23-executive-report-v2-plan.md` +**Tests:** 28 → 42 (14 new — 3 company-cost-velocity, 3 current-outstanding-in-scope, 4 team-project-activity, 1 chapter-one-enrichment, 3 multi-filter). + +**QA outcome:** 42/42 tests pass. `manage.py check` clean. `makemigrations --dry-run` reports no changes. Multi-value filter URLs (`?project=1&project=2`) resolve correctly. PDF rendering verified for populated and empty date ranges. + +**Deferred / out of scope (revisit if requested):** +- Charts / sparklines in any chapter (text-and-table only) +- Save-as-template feature +- Period-over-period comparison +- Dead `.hero-*` CSS block in PDF template (~40 lines, not referenced by new body) +- Consolidate near-duplicate PDF table classes (`.worker`, `.lifetime`, `.pivot`) +- Inline filters on report page (vs modal-popup) — **Konrad flagged this during Checkpoint 3 as the next UX improvement; slated for a separate brainstorm + design + plan after this ships** + +**Notable design decisions made during implementation:** +- Task 1 extracted `_compute_outstanding` from `index()` as a pure refactor before any new work — zero behaviour change. +- M2M filter pattern from commit `f1e246c` (Apr 22 bug fix) extended cleanly to multi-value via `__in` lookups + `id__in` subqueries. +- Choices.js integrated via CDN with SRI hashes, graceful fallback to native `