Skip to content

Stop Latest Following from ignoring hide-replies and hide-links - #36

Closed
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/following-hide-replies-links-300d
Closed

Stop Latest Following from ignoring hide-replies and hide-links#36
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/following-hide-replies-links-300d

Conversation

@Pitchfork-and-Torch

Copy link
Copy Markdown
Owner

Bug

Latest Following copies exclude_videos (xai-org#120) and still ignores the rest of the viewer content-controls.

QueryBuilder never copied hide_replies / hide_links / exclude_replies / exclude_retweets. Night Owl always searched with include:retweets and never applied -filter:replies or -filter:links. Reverse-chron filters were RT-dedup, muted keyword, and self-reply. Hide-replies and hide-links were a no-op.

Ranked Following / For You already have VideoFilter for hide-videos. They had no reply/link/retweet content-control filter either; the same mixer filter is wired next to VideoFilter.

This is not xai-org#120 (hide-videos / MediaInfo). Not xai-org#98 (quoted video duration). Not xai-org#99 / xai-org#132 (self-reply chains).

Five-line proof

  • Entry: Following URT QueryBuilder (server.rs) and Night Owl old_query (following_night_owl_source.rs)
  • Sink: FollowingContentControlsFilter on ReverseChronPostsPipeline (and Phoenix next to VideoFilter)
  • Break: proto hide-replies / hide-links / exclude-replies / exclude-retweets were never copied; Night Owl hardcoded include:retweets
  • Viewer effect: user who hid replies, links, or retweets still saw them on Latest Following
  • Twin: exclude_videos is already copied and VideoFilter already exists (Stop Latest Following from ignoring hide-videos xai-org/x-algorithm#120)

Change

  • Copy hide_replies, hide_links, exclude_replies, exclude_retweets onto ScoredPostsQuery
  • Night Owl: -filter:replies, -filter:links, and -filter:nativeretweets when those flags are set
  • Mixer filter drops replies / link cards (tweet, quoted, ancestor text) / retweets when the matching flag is on
  • Wire the filter on reverse-chron and Phoenix

Tests

  • hide_replies / exclude_replies drop replies, keep originals
  • hide_links drops https / t.co / quoted URL / www. host, keeps notwww
  • exclude_retweets drops retweets, keeps replies
  • Off flags keep every type
  • Night Owl operators: default still include:retweets; flags compose
  • Mock reverse-chron filter count includes the new filter

Standalone decision-table harness (same match arms): 19/19 passed.

cargo test cannot run. Public dump has no Home Mixer manifest.

Leftover

For You cached-posts Redis key still keys only on exclude_videos. A cache hit can still contain replies/links; the new Phoenix filter drops them after the hit (slate may underfill). Same class as xai-org#98 leftover for quoted duration on cache.

Fork PR: none

Open in Web Open in Cursor 

CI agent and others added 19 commits August 14, 2026 20:55
in_network_ids is passed to the VF client without deduplication, while
oon_ids is deduped four lines below. retweeted_tweet_id is pushed for
every candidate that has one, so the same ID repeats once per retweet of
a given post — most often when that post is going viral.

Neither VfClient implementation dedupes its input: StratoVfClient builds
one call per element, and XaiVfClient chunks by XAI_VF_MAX_BATCH_SIZE, so
duplicates consume batch slots and can force an extra round trip.

Not a correctness issue — results collapse into a HashMap keyed by tweet
ID — but redundant work on the For You serving path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Deduplicate in_network_ids before VF lookup
QueryBuilder copied exclude_videos but never hide_replies / hide_links /
exclude_replies / exclude_retweets. Night Owl always include:retweets and
never applied -filter:replies or -filter:links, so those viewer preferences
were a no-op on Latest Following.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants