Skip to content

Stop CoreData from skipping TES on NightOwl replies and retweets - #22

Closed
Pitchfork-and-Torch wants to merge 20 commits into
mainfrom
cursor/nightowl-coredata-skip-tes-0ca8
Closed

Stop CoreData from skipping TES on NightOwl replies and retweets#22
Pitchfork-and-Torch wants to merge 20 commits into
mainfrom
cursor/nightowl-coredata-skip-tes-0ca8

Conversation

@Pitchfork-and-Torch

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

Copy link
Copy Markdown
Owner

Rebased onto latest xai-org/x-algorithm main (902a06f). Dropped fork-only commits so upstream xai-org#132 is a 1-file change.

Bug

Latest Following (NightOwl) pre-fills author_id and tweet_text. CoreDataCandidateHydrator.already_hydrated treated that as done and skipped TES.

NightOwl does not set ancestor_users or retweeted_user_id. SelfReplyChainFilter fail-opens when ancestor_users is empty, so self-replies aimed at an unfollowed user stay in Following.

reverse_chron_posts_pipeline runs CoreData, then SelfReplyChainFilter. The filter order is fine. The hydrator never filled the field the filter reads.

Concrete case: viewer follows B, not C. B self-replies in C's thread. NightOwl returns the reply (in_reply_to_tweet_id set, ancestors set, ancestor_users empty). CoreData skips TES. Filter keeps the card.

Not xai-org#94 (TES miss wiping Thunder/Phoenix ids). Not xai-org#99 (For You self-reply chains). Not xai-org#102 / xai-org#97 (conversation-gap grandparents). Related to but distinct from CoreData stale author overwrite (xai-org#131 / fork #21); that update() overwrite is not on xai-org/main and is left alone.

Fix

Call TES when a reply still has empty ancestor_users, or a retweet still has no retweeted_user_id. Originals with author and text still skip TES.

On TES miss, keep the source fields. An empty default would clear NightOwl reply/retweet ids now that TES runs for those cards.

Tests

  • NightOwl-style reply and retweet are not already hydrated
  • TES hit fills ancestor_users; filter then drops the unfollowed-root self-reply
  • TES hit fills retweeted_user_id on a NightOwl retweet
  • TES miss keeps NightOwl reply ids
  • Complete NightOwl originals still skip TES

Home Mixer has no public Cargo manifest, so cargo test still needs X's build. Predicates for already_hydrated and SelfReplyChainFilter were checked against the same cases.

Open in Web Open in Cursor 

CI agent and others added 18 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
@Pitchfork-and-Torch
Pitchfork-and-Torch marked this pull request as ready for review September 7, 2026 04:20
cursoragent and others added 2 commits September 7, 2026 04:22
NightOwl already sets author_id and tweet_text, so CoreData treated
Latest Following cards as hydrated and never filled ancestor_users
or retweeted_user_id. SelfReplyChainFilter then fail-opened.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
Regression: author+text originals still use the NightOwl payload
and do not pick up TES text.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/nightowl-coredata-skip-tes-0ca8 branch from 4e0cc2b to 663e316 Compare September 7, 2026 04:22
@Pitchfork-and-Torch

Copy link
Copy Markdown
Owner Author

Wrong base (fork PR). Ship vehicle is upstream xai-org#132. 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