Skip to content

Drop For You cards whose quote, reply, or retweet text matches muted keywords - #96

Open
Pitchfork-and-Torch wants to merge 3 commits into
xai-org:mainfrom
Pitchfork-and-Torch:fix/mute-quoted-keyword
Open

Drop For You cards whose quote, reply, or retweet text matches muted keywords#96
Pitchfork-and-Torch wants to merge 3 commits into
xai-org:mainfrom
Pitchfork-and-Torch:fix/mute-quoted-keyword

Conversation

@Pitchfork-and-Torch

@Pitchfork-and-Torch Pitchfork-and-Torch commented Sep 4, 2026

Copy link
Copy Markdown

Bug

ViewerMutedKeywordFilter on Phoenix For You only tokenized candidate.tweet_text. Quotes, replies, and native retweets of muted-keyword posts still served. Native RTs often have empty tweet_text; the original lives on retweeted_tweet_id.

Following already matched quoted_tweet_text and ancestor_texts. It did not match retweet original text either.

This is not mute-on-quote author id (PR 23). Not mute-on-retweet author id (PR 9). Not VF dual-role merge (PR 55 / 90). Not conversation-gap VF ancestors (PR 97).

Fix

Clone the Following matcher and add retweeted_tweet_text on For You and Following. Wire QuotedPostTextHydrator after QuoteHydrator on Phoenix. That hydrator fills quoted_tweet_text, ancestor_texts, and retweeted_tweet_text from TES. It does not expand the ancestor chain.

Proof

  • Entry: QuoteHydrator quoted_tweet_id; Thunder ancestors; TES retweeted_tweet_id
  • Sink: ViewerMutedKeywordFilter / FollowingViewerMutedKeywordFilter
  • Break: For You used tweet_text only; hydrator never fetched retweet original text
  • Viewer effect: quote, reply, or RT of a muted-keyword post still serves
  • Twin: Following quoted+ancestor matching; retweet original is the leftover both surfaces missed

Tests

  • drops_quote_whose_quoted_text_matches_muted_keyword
  • drops_reply_when_ancestor_text_matches_muted_keyword
  • drops_retweet_whose_original_text_matches_muted_keyword
  • fills_retweeted_tweet_text
  • fills_ancestor_texts_without_changing_ancestor_ids
  • unit tests added; cargo test cannot run in the public dump

ViewerMutedKeywordFilter only tokenized candidate.tweet_text. Following
already matches quoted_tweet_text and ancestor_texts. Clone that matcher
and hydrate quoted text on the Phoenix path so a quote of a muted-keyword
post is dropped.
QuotedPostTextHydrator only fetched quoted_tweet_id. Thunder already
sets reply ancestors on For You, and ViewerMutedKeywordFilter now
matches ancestor_texts. Fill those texts from TES without expanding
the ancestor chain (gap expansion stays Following-only).
QuotedPostTextHydrator fetched quote and ancestor texts but not
retweeted_tweet_id. Native RTs often have empty tweet_text, so a
retweet of a muted-keyword post still served. Fetch the original
text and match it on For You and Following.
@Pitchfork-and-Torch Pitchfork-and-Torch changed the title Drop For You quotes whose quoted text matches muted keywords Drop For You cards whose quote, reply, or retweet text matches muted keywords Sep 4, 2026
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.

1 participant