Skip to content

Stop treating gizmoduck age 0 as a confirmed underage viewer - #23

Closed
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/sensitive-viewer-age-zero-15a8
Closed

Stop treating gizmoduck age 0 as a confirmed underage viewer#23
Pitchfork-and-Torch wants to merge 19 commits into
mainfrom
cursor/sensitive-viewer-age-zero-15a8

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. Fork-only commits dropped.

The mergeable upstream PR is xai-org#133 (mergeable: true, 1 commit, 5 files).

This fork PR still targets fork main, so GitHub will show a large dirty diff here. Use xai-org#133 for review/merge.

Preserved logic

  1. VF: gizmoduck age_in_years Some(0) is missing birthday, not Known(0) underage. Map age > 0 → Known; existing user without usable age → NotStated; else Unknown. Age gates stay for logged-out, Known(1..17), and NotStated in NSFW_GATING_COUNTRIES.
  2. BidirectionalFollow after CoreData; skip stamping on author_id=0. InNetwork order from Stop For You from stamping OON before TES fills author_id xai-org/x-algorithm#128 unchanged.

Age-gate tests live in upstream visibility-filtering/rules/tweet_rules.rs (this dump previously used nsfw_age_gating.rs).

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
SensitiveViewerUnderageDropRule used Known(0) as underage, so a missing
birthday sentinel hard-dropped all sensitive media worldwide. Classify
non-positive age like a missing birthday (NotStated if the user exists,
Unknown otherwise). Move BidirectionalFollowHydrator after CoreData and
skip author_id=0 so unhydrated rows are not stamped false mutual-follow.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/sensitive-viewer-age-zero-15a8 branch from b0935fd to 9d4e5e5 Compare September 7, 2026 04:24
@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#133. 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