- Page size reduced from 30 → 20 commits per fetch - Backend: add `skip` param to get_vault_pulse (git log --skip) → true pagination instead of re-fetching everything - Frontend: IntersectionObserver sentinel at bottom of feed → auto-loads next page when user scrolls near end - Append-only updates (no full re-render on load more) - Add IntersectionObserver mock to test setup