Skip to content

Stop For You from stamping OON before TES fills author_id - #18

Closed
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/in-network-after-core-data-f02e
Closed

Stop For You from stamping OON before TES fills author_id#18
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/in-network-after-core-data-f02e

Conversation

@Pitchfork-and-Torch

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

Copy link
Copy Markdown
Owner

Bug

For You (phoenix_candidate_pipeline) runs InNetworkCandidateHydrator before CoreDataCandidateHydrator. InNetwork reads author_id and writes in_network once. It never runs again.

TweetMixer (and other thin sources) often ship author_id = 0. InNetwork treats 0 as unfollowed and stamps in_network = Some(false). TES later writes the real author. The flag stays false.

VFCandidateHydrator then fetches that post at TimelineHomeRecommendations. Recs-only Drop rules fire: tweet DO_NOT_AMPLIFY, SPAM_HIGH_RECALL, NSFW_HIGH_RECALL, MALICIOUS_URL, FOSNR_ABUSE_INSULTS, and the rest of the Recs table. The same followed author on Home is Allow (or Interstitial for NSFW HP / gore / card). No user-visible label on the Recs Drop path.

  • Entry: InNetworkCandidateHydrator before CoreData in phoenix_candidate_pipeline.rs
  • Sink: VFCandidateHydrator (in_network.unwrap_or(false) → Recs) then VFFilter
  • Break: follow-graph stamp uses a zero author id
  • Viewer effect: a followee's post retrieved via TweetMixer is hard-dropped on For You
  • Twin: phoenix_scores_pipeline already runs CoreData, then InNetwork

This is not rewriting Recs-only policy. User-label DNA still exempts followers. In-network retweet originals stay on Home. This is not xai-org#115 (Following quotes), xai-org#116 (OON RT originals), or xai-org#119 (RT wrapper primary id).

Fix

Run CoreData, then InNetwork, same as the scores pipeline. Bidirectional-follow stays where it is (not a VF input).

Tests

  • Followed author → in_network = true
  • Unfollowed author → false
  • author_id = 0false (the stale-OON stamp)
  • Stamp-then-TES-fill leaves false; TES-fill-then-stamp is true

Standalone decision-table harness (same predicate): 6 assertions passed.

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

Leftover

BidirectionalFollowHydrator still runs before CoreData and also reads author_id. Separate from VF surface selection.

Upstream port: this head is the Pitchfork dump branch. A clean cherry-pick of the four files can go to xai-org/x-algorithm.

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
For You was classifying follow-graph membership before CoreData wrote
author_id. TweetMixer often ships 0; that stamped OON and Recs-only VF
drops then hit followed authors.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/in-network-after-core-data-f02e branch from a5d787a to cb9d627 Compare September 7, 2026 04:12
@Pitchfork-and-Torch
Pitchfork-and-Torch marked this pull request as ready for review September 7, 2026 04:31
@Pitchfork-and-Torch

Copy link
Copy Markdown
Owner Author

Wrong base (fork PR). Ship vehicle is upstream xai-org#128. Per submit law: never PR Pitchfork-and-Torch/x-algorithm. Do not merge this.

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