Skip to content

home-mixer: stop ads brand-safety from demoting organic rank - #17

Closed
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/ads-organic-verdict-leak-e878
Closed

home-mixer: stop ads brand-safety from demoting organic rank#17
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/ads-organic-verdict-leak-e878

Conversation

@Pitchfork-and-Torch

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

Copy link
Copy Markdown
Owner

Bug

Ads brand-safety was leaking into organic For You rank.

Two writers put MediumRisk on organics that were not MediumRisk from tweet labels:

  1. Missed ads-VF hydration left brand_safety_verdict unset. Scored-post converters then defaulted that to MediumRisk.
  2. nsfw_author_ads is ads inventory. AdsBrandSafetyVfHydrator wrote that onto the shared verdict the blender uses for organics.

Default For You blender (partition_organic) treats MediumRisk as avoid and pulls those posts out of ranked order when ads are placed.

Fix

  • Missing verdict serializes as Unspecified. Unspecified is not avoid in has_avoid, so rank is kept.
  • Ads-only nsfw_author_ads no longer rewrites the organic verdict.
  • Real MediumRisk from tweet labels still stays off ad neighbors.

Rebase

This branch is now a clean rebase onto latest xai-org/x-algorithm main (902a06f), not the older fork tree.

Canonical upstream PR: xai-org#127

Conflict resolution keeps all three intents:

  1. Expired safety labels are ignored in ads brand safety (is_active_label / compute_verdict_at) — same class as home-mixer: ignore expired safety labels in ads brand safety xai-org/x-algorithm#124 / fork home-mixer: ignore expired safety labels in ads brand safety #13.
  2. Missing ads verdict is Unspecified, not MediumRisk; nsfw_author_ads does not rewrite the organic verdict — home-mixer: stop ads brand-safety from demoting organic rank xai-org/x-algorithm#127.
  3. Gizmoduck uses origin-author size, NSFW OR across poster/original/quoted, and fail-closed on store miss — home-mixer: use origin author for size and NSFW, fail closed on gizmoduck miss xai-org/x-algorithm#125 / fork home-mixer: use origin author for size and NSFW, fail closed on gizmoduck miss #16, because that file conflicted.

Not a TimelineHome VF change.

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
Rebased onto latest xai-org/x-algorithm main. Missed ads-VF hydration
defaulted organics to MediumRisk, and ads-only nsfw_author_ads rewrote
the shared verdict. Default For You blender then pulled those posts out
of ranked order when placing ads.

Keep a real MediumRisk tweet-label verdict off ad neighbors. Following
still will not sit an ad next to Unspecified.

Compatibility with sibling PRs that touch the same files:
- expired ads brand-safety labels are ignored (xai-org#124)
- gizmoduck uses origin author size/NSFW OR and fails closed on miss (xai-org#125)

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/ads-organic-verdict-leak-e878 branch from 9a964e1 to 3029dc4 Compare September 7, 2026 04:17
@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#127. 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