perf(canopy-persons): household-scoped income endpoint to reduce N+1 round-trips
Today canopy-web fetches income per-member when rendering the household income tab, producing N+1 HTTP round-trips to canopy-persons for households with many members.
Add a household-scoped endpoint (e.g., GET /v1/households/{id}/income) that returns income rows for all members in one call.
Deferred until profiling shows the N+1 actually matters in production — filed so future contributors know the pattern was anticipated.
Extracted from canopy-web-persons-wiring.adoc § Potential Improvements.