Pills at the top of My Journey map 1:1 to the five multi-select "Where are you in your journey?" options from the onboarding PRD. In production a user's own stage selection(s) would set the default; this control lets anyone preview how the feed composition shifts per stage without re-onboarding.
Switching stages filters the mock video pool by a stageTags array on each video. If zero videos match the selected stage, the feed renders the same "Check back for new content soon" empty state used in the Feed runs out of eligible content edge case in the My Journey PRD, rather than a blank screen. "Advocating for myself or others" is wired to demonstrate that state.
Not modeled here: the actual ranking signals (watch completion, topic weight, over-personalization guardrails). This is a content-swap simulation, not the ranking model.
Each video carries reposted (bool), repostCount, and own (bool, true only for the one video attributed to @you). Tapping Repost in the share sheet sets reposted = true, increments repostCount, adds the video to a myReposts list, and surfaces the "You reposted" badge on the video itself. Undo Repost reverses all three and removes it from myReposts. A user can only ever be in one of the two states for a given video, matching the PRD's "repost the same video only once" rule.
Per acceptance criteria, no copy of the video is created and the original creator stays attributed. Reposting is a pointer/flag on top of the existing video object, not a new record.
The video marked own: true (from @you) omits the Repost row entirely from its share sheet, showing only Send to friend, Copy link, and Report. This is the "users cannot repost their own videos" rule. A one-line note appears at the top of that sheet instead of silently hiding the option, so it reads as intentional rather than a bug in review.
Tapping the repost count under the share icon opens a lightweight sheet of mock users who reposted that video. If the current user has reposted it, "You" appears at the top of that list, matching the PRD requirement that the count be tappable and open a Reposted by list. Privacy/block filtering on that list (private accounts, blocked/blocking pairs) is not modeled — every mock entry is shown regardless of account type.
Profile has a Posts / Reposts segmented switcher, same pattern as the journey pills. Reposts shows every video currently in myReposts, each with an inline Undo repost action so removal doesn't require going back into the feed. Empty state copy is a placeholder — the PRD doesn't specify exact wording, only that a lightweight empty state should show.