Skip to content

Apply original-tweet civic labels when scoring retweets - #158

Open
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:cursor/civic-quote-rt-fail-open-8cb7
Open

Apply original-tweet civic labels when scoring retweets#158
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:cursor/civic-quote-rt-fail-open-8cb7

Conversation

@Pitchfork-and-Torch

Copy link
Copy Markdown

Bug

VF SafetyLabelHydrator looks up labels only for the requested tweet ids. A retweet wrapper has source_tweet_id after TES, but civic / FOSNR / misinfo labels live on the original. FosnrCivicIntegrityDropRule checks has_safety_label on the wrapper, so Following and in-network For You keep a retweet of a civic-integrity labeled post.

UTH says FOSNR_CIVIC_INTEGRITY restricts discoverability to the author's profile. Hate / abuse / violent-speech stay on TimelineHome for the same reason. This is not #109 (civic table move to OON). This is not #115 (Following quotes at TimelineHome). This is not #119 (home-mixer primary lookup by wrapper id). This is not #121 / #139 (primary VF or wrapper label Err).

When the original is not in the same VF batch, the source label read was never issued. When it is issued and returns Err or omits the id, this change fails closed (omit wrapper → unresolved_author Drop). Confirmed-empty original stays unlabeled.

Five-line proof

  • Entry: HydrationPipeline::hydrate / apply_source_tweet_safety_labels (TES source_tweet_id)
  • Sink: FosnrCivicIntegrityDropRuleVFFilter Action::Drop / PossiblyUndesirable
  • Break: wrapper label map never included the original; civic drop never fired
  • Viewer effect: followed user's retweet of a civic-labeled post served on Following and in-network For You
  • Twin: AdsBrandSafetyVfHydrator already uses retweeted_tweet_id.unwrap_or(tweet_id)

Survey (#96#142)

Tests

  • retweet_inherits_confirmed_civic_label_from_original
  • retweet_source_label_err_fails_closed (fails open on unmodified main: source never fetched)
  • confirmed_unlabeled_original_does_not_fail_closed
  • civic_integrity_retweet_with_source_label_drops / golden corpus Home + Recs
  • union_adds_civic_without_dropping_existing

cargo test cannot run. Public dump has no VF crate manifest.

Fork PR: none

VF hydrated safety labels only for the requested wrapper id. A civic-integrity
label on the original never reached FosnrCivicIntegrityDropRule, so Following
and in-network For You kept the retweet. Fetch the source tweet's labels, union
them onto the wrapper, and fail closed when that read is Err or omitted.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
@Pitchfork-and-Torch
Pitchfork-and-Torch marked this pull request as ready for review September 7, 2026 05:26
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.

2 participants