Skip to content

Stop age-gating from requiring media on gore-and-violence labels - #163

Open
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:cursor/vf-gore-age-gate-no-media-c25c
Open

Stop age-gating from requiring media on gore-and-violence labels#163
Pitchfork-and-Torch wants to merge 1 commit into
xai-org:mainfrom
Pitchfork-and-Torch:cursor/vf-gore-age-gate-no-media-c25c

Conversation

@Pitchfork-and-Torch

Copy link
Copy Markdown

Bug

GoreAndViolenceInterstitialRule already fires without has_media(). Golden corpus case gore_and_violence_label_interstitials_in_network pins that with labeled(GORE_AND_VIOLENCE_HIGH_PRECISION) (no media).

SensitiveViewerUnderageDropRule, SensitiveViewerLoggedOutDropRule, and SensitiveViewerNoStatedAgeDropRule only treat gore as sensitive through graphic_base_condition, which requires media. NSFW_TEXT and NSFW_CARD_IMAGE already have a no-media branch. Gore was left out.

Policy order runs the age drops before the interstitial. When the drop misses, the interstitial wins. A 15-year-old or logged-out viewer gets a tap-through blur on a gore-labeled card/text post. The same viewers are hard-dropped for NSFW_CARD_IMAGE without media.

This is not #133 (gizmoduck age 0). This is not #159 (viewer-age lookup fail-open). This is not #134 (TES media read fail-closed). This is the rule predicate.

Five-line proof

  • Entry: nsfw_no_media_label_condition / graphic_base_condition in visibility-filtering/rules/tweet_rules.rs
  • Sink: SENSITIVE_VIEWER_DROPS on TimelineHome and TimelineHomeRecommendations (TIMELINE_HOME_SHARED_RULES)
  • Break: gore + !has_media() skipped the drop, then GoreAndViolenceInterstitialRule served Interstitial
  • Viewer effect: underage / logged-out / no-stated-age-in-gating-country can dismiss a gore interstitial instead of a hard drop
  • Twin: NSFW_TEXT and NSFW_CARD_IMAGE already drop without media; adult interstitial on gore without media is unchanged

Fix

Add GORE_AND_VIOLENCE_HIGH_PRECISION to nsfw_no_media_label_condition. Author self-view stays exempt. NSFW_HIGH_PRECISION without media stays Allow (hp_no_media).

Tests

  • sensitive_firing_candidates includes gore without media
  • Underage, logged-out, and no-stated-age drop gore without media
  • Author self-view still Allows
  • Golden corpus: underage_viewer_drops_gore_without_media, logged_out_viewer_drops_gore_without_media, no_stated_age_in_gating_country_drops_gore_without_media
  • Adult interstitial case gore_and_violence_label_interstitials_in_network unchanged

Standalone decision-table harness (same predicates): 12/12 passed.

cargo test cannot run. Public dump has no visibility-filtering crate manifest.

Leftover

NSFW_HIGH_PRECISION without media still Allows underage (hp_no_media). Ancillary Interstitial on quote/RT/ancestor remains #143 / #146. TES media read fail-closed remains #134.

Fork PR: none

GoreAndViolenceInterstitialRule already fires without media. The underage,
logged-out, and no-stated-age drops only treated gore as sensitive when
has_media() was true, so minors could tap through an interstitial that
NSFW_TEXT and NSFW_CARD_IMAGE already hard-drop.

Co-authored-by: Jon Bailey <Pitchfork-and-Torch@users.noreply.github.com>
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