Skip to content

Stop SubscriptionHydrator from skipping exclusive originals on retweets - #208

Open
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:fix/subscription-original-id
Open

Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:fix/subscription-original-id

Conversation

@Pitchfork-and-Torch

Copy link
Copy Markdown

Bug

SubscriptionHydrator fetches TES exclusive-conversation authors by candidate.tweet_id (the wrapper). IneligibleSubscriptionFilter keeps subscription_author_id = None.

TES stores exclusive_conversation_author_id on the original Super Follow post. An in-network retweet of that original is a new tweet id. The hydrator looks up the wrapper, TES returns none / miss, Hydrator::update_all skips the write, and the filter treats None as eligible.

Phoenix already drops OON retweets. In-network retweets of exclusive originals survive to this filter. LanguageCodeHydrator, MediaInfoHydrator, EngagementCountsHydrator, and ads brand-safety already key TES / media by get_original_tweet_id(). This hydrator does not.

VF DropExclusiveTweetContentRule is a later post-select gate. It is not this class. This is the mixer Super Follow filter looking up the wrong tweet. Not #119 (VF primary wrapper id). Not #118 (QuoteHydrator quoted id on retweets). Not #116 (OON retweet original Recs).

  • Entry: SubscriptionHydrator::hydrate_from_client / cache_key
  • Sink: IneligibleSubscriptionFilter (None => keep)
  • Break: TES exclusive author lives on the original tweet; hydrator and cache key the wrapper
  • Viewer effect: a non-subscriber who follows the retweeter gets Super Follow exclusive content in For You
  • Twin: LanguageCodeHydrator cache_key / TES lookup via get_original_tweet_id()

Fix

Key TES and the hydrator cache by get_original_tweet_id(). Native exclusive posts are unchanged (wrapper id == original id). Public posts still hydrate as None and stay eligible.

Quote-of-exclusive is leftover. get_original_tweet_id() does not walk quoted_tweet_id. Separate class.

Tests

  • Native exclusive post still reads TES at the wrapper id
  • In-network retweet of an exclusive original fills subscription_author_id from the original
  • Public post stays None
  • Non-subscriber loses the retweet; subscriber keeps it

cargo test cannot run. Public dump has no Home Mixer manifest. Verification of the change is on you.

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