Problem
The social listening feed loads mentions in batches as the user scans ("Load more"). The underlying data is rebuilt hourly, and each batch is fetched by absolute position in the list (offset). When a rebuild lands between batch requests, list positions shift — a user scanning across that moment can see the same mention twice, or silently skip mentions they never see. This undermines confidence in the feed for Executive Directors and LF staff reviewing brand mentions. Surfaced during review of the social listening redesign (PR #1916); the pre-redesign paginator had the same exposure, so this is not a regression.
Outcome
Paging through the feed stays stable regardless of when the hourly data refresh lands: each mention appears at most once and no mention is silently skipped while a user scans. Batches are requested relative to the last mention already shown (a stable cursor), not by absolute position in the list.
Success criteria
- A user clicking "Load more" across an hourly data refresh sees no duplicate mentions.
- No mentions are silently skipped while paging through a long feed.
- The "Data as of" watermark and feed counts remain consistent with what is shown.
Problem
The social listening feed loads mentions in batches as the user scans ("Load more"). The underlying data is rebuilt hourly, and each batch is fetched by absolute position in the list (offset). When a rebuild lands between batch requests, list positions shift — a user scanning across that moment can see the same mention twice, or silently skip mentions they never see. This undermines confidence in the feed for Executive Directors and LF staff reviewing brand mentions. Surfaced during review of the social listening redesign (PR #1916); the pre-redesign paginator had the same exposure, so this is not a regression.
Outcome
Paging through the feed stays stable regardless of when the hourly data refresh lands: each mention appears at most once and no mention is silently skipped while a user scans. Batches are requested relative to the last mention already shown (a stable cursor), not by absolute position in the list.
Success criteria