standup
Standup — 2026-05-20
Multi-site chat (portfolio mode) shipped.
Daily standup for 2026-05-20. What shipped:
Multi-site chat (portfolio mode) shipped. All 8 phases merged and marked as delivered in 544041a.
The implementation runs from schema to UI: scope + site_id columns on Conversation (#73), a generate_portfolio_heartbeat aggregator that sums MRR/members and weights churn across sites (#74), query_trend extended to accept user_id for portfolio-level series (#75), chat router wiring (#76), BIBLE writes blocked in portfolio mode (#77), a welcome card for aggregate WoW movements (#78), the “All sites” picker entry in SvelteKit with scope passthrough (#79), and a Pro-only backend 403 before quota is consumed (#80/#81/#82).
Two fixes landed alongside:
- Rollup bug — historical backfill was only running on initial site connect, not every sync (
a104a24, #71). Now runs on all syncs. - Rollup data quality — lifetime active-count and MRR queries had a DISTINCT collapse bug (
99af1bd, #65).
Notable. The portfolio handshake surfaced a gap during e2e smoke: the aggregate HEARTBEAT can’t answer granular per-site questions like “when was the last registration?” A query_site_data drill-down tool is sketched but out of scope; tracked as #83.
Window: 2026-05-18T13:00
→ 2026-05-20T13:01.802Z · Sources: memberintel @ 544041a, memberpress-intel @ 416cc1e