3819 lines
149 KiB
Scala
3819 lines
149 KiB
Scala
package com.twitter.visibility.rules
|
|
|
|
import com.twitter.visibility.configapi.params.RuleParam
|
|
import com.twitter.visibility.configapi.params.RuleParams
|
|
import com.twitter.visibility.models.ContentId
|
|
import com.twitter.visibility.rules.ConversationControlRules._
|
|
import com.twitter.visibility.rules.FollowerRelations.AuthorMutesViewerRule
|
|
import com.twitter.visibility.rules.FollowerRelations.ProtectedViewerRule
|
|
import com.twitter.visibility.rules.PolicyLevelRuleParams.ruleParams
|
|
import com.twitter.visibility.rules.PublicInterestRules._
|
|
import com.twitter.visibility.rules.SafeSearchTweetRules._
|
|
import com.twitter.visibility.rules.SafeSearchUserRules.SafeSearchNsfwAvatarImageUserLabelRule
|
|
import com.twitter.visibility.rules.SafeSearchUserRules._
|
|
import com.twitter.visibility.rules.SpaceRules._
|
|
import com.twitter.visibility.rules.ToxicityReplyFilterRules.ToxicityReplyFilterDropNotificationRule
|
|
import com.twitter.visibility.rules.ToxicityReplyFilterRules.ToxicityReplyFilterRule
|
|
import com.twitter.visibility.rules.UnsafeSearchTweetRules._
|
|
import com.twitter.visibility.rules.UserUnavailableStateTombstoneRules._
|
|
|
|
abstract class VisibilityPolicy(
|
|
val tweetRules: Seq[Rule] = Nil,
|
|
val userRules: Seq[Rule] = Nil,
|
|
val cardRules: Seq[Rule] = Nil,
|
|
val quotedTweetRules: Seq[Rule] = Nil,
|
|
val dmRules: Seq[Rule] = Nil,
|
|
val dmConversationRules: Seq[Rule] = Nil,
|
|
val dmEventRules: Seq[Rule] = Nil,
|
|
val spaceRules: Seq[Rule] = Nil,
|
|
val userUnavailableStateRules: Seq[Rule] = Nil,
|
|
val twitterArticleRules: Seq[Rule] = Nil,
|
|
val deletedTweetRules: Seq[Rule] = Nil,
|
|
val mediaRules: Seq[Rule] = Nil,
|
|
val communityRules: Seq[Rule] = Nil,
|
|
val policyRuleParams: Map[Rule, PolicyLevelRuleParams] = Map.empty) {
|
|
|
|
def forContentId(contentId: ContentId): Seq[Rule] =
|
|
contentId match {
|
|
case ContentId.TweetId(_) => tweetRules
|
|
case ContentId.UserId(_) => userRules
|
|
case ContentId.CardId(_) => cardRules
|
|
case ContentId.QuotedTweetRelationship(_, _) => quotedTweetRules
|
|
case ContentId.NotificationId(_) => userRules
|
|
case ContentId.DmId(_) => dmRules
|
|
case ContentId.BlenderTweetId(_) => userRules ++ tweetRules
|
|
case ContentId.SpaceId(_) => spaceRules
|
|
case ContentId.SpacePlusUserId(_) => spaceRules ++ userRules
|
|
case ContentId.DmConversationId(_) => dmConversationRules
|
|
case ContentId.DmEventId(_) => dmEventRules
|
|
case ContentId.UserUnavailableState(_) => userUnavailableStateRules
|
|
case ContentId.TwitterArticleId(_) => twitterArticleRules
|
|
case ContentId.DeleteTweetId(_) => deletedTweetRules
|
|
case ContentId.MediaId(_) => mediaRules
|
|
case ContentId.CommunityId(_) => communityRules
|
|
}
|
|
|
|
private[visibility] def allRules: Seq[Rule] =
|
|
(tweetRules ++ userRules ++ cardRules ++ quotedTweetRules ++ dmRules ++ spaceRules ++ dmConversationRules ++ dmEventRules ++ twitterArticleRules ++ deletedTweetRules ++ mediaRules ++ communityRules)
|
|
}
|
|
|
|
object VisibilityPolicy {
|
|
val baseTweetRules = Seq(
|
|
DropCommunityTweetsRule,
|
|
DropCommunityTweetCommunityNotVisibleRule,
|
|
DropProtectedCommunityTweetsRule,
|
|
DropHiddenCommunityTweetsRule,
|
|
DropAuthorRemovedCommunityTweetsRule,
|
|
SpamTweetLabelRule,
|
|
PdnaTweetLabelRule,
|
|
BounceTweetLabelRule,
|
|
DropExclusiveTweetContentRule,
|
|
DropTrustedFriendsTweetContentRule
|
|
)
|
|
|
|
val baseTweetTombstoneRules = Seq(
|
|
TombstoneCommunityTweetsRule,
|
|
TombstoneCommunityTweetCommunityNotVisibleRule,
|
|
TombstoneProtectedCommunityTweetsRule,
|
|
TombstoneHiddenCommunityTweetsRule,
|
|
TombstoneAuthorRemovedCommunityTweetsRule,
|
|
SpamTweetLabelTombstoneRule,
|
|
PdnaTweetLabelTombstoneRule,
|
|
BounceTweetLabelTombstoneRule,
|
|
TombstoneExclusiveTweetContentRule,
|
|
TombstoneTrustedFriendsTweetContentRule,
|
|
)
|
|
|
|
val baseMediaRules = Seq(
|
|
)
|
|
|
|
val baseQuotedTweetTombstoneRules = Seq(
|
|
BounceQuotedTweetTombstoneRule
|
|
)
|
|
|
|
def union[T](rules: Seq[Rule]*): Seq[Rule] = {
|
|
if (rules.isEmpty) {
|
|
Seq.empty[Rule]
|
|
} else {
|
|
rules.reduce((a, b) => a ++ b.filterNot(a.contains))
|
|
}
|
|
}
|
|
}
|
|
|
|
case class PolicyLevelRuleParams(
|
|
ruleParams: Seq[RuleParam[Boolean]],
|
|
force: Boolean = false) {}
|
|
|
|
object PolicyLevelRuleParams {
|
|
def ruleParams(ruleParams: RuleParam[Boolean]*): PolicyLevelRuleParams = {
|
|
PolicyLevelRuleParams(ruleParams)
|
|
}
|
|
|
|
def ruleParams(force: Boolean, ruleParams: RuleParam[Boolean]*): PolicyLevelRuleParams = {
|
|
PolicyLevelRuleParams(ruleParams, force)
|
|
}
|
|
}
|
|
|
|
case object FilterAllPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropAllRule),
|
|
userRules = Seq(DropAllRule),
|
|
cardRules = Seq(DropAllRule),
|
|
quotedTweetRules = Seq(DropAllRule),
|
|
dmRules = Seq(DropAllRule),
|
|
dmConversationRules = Seq(DropAllRule),
|
|
dmEventRules = Seq(DropAllRule),
|
|
spaceRules = Seq(DropAllRule),
|
|
userUnavailableStateRules = Seq(DropAllRule),
|
|
twitterArticleRules = Seq(DropAllRule),
|
|
deletedTweetRules = Seq(DropAllRule),
|
|
mediaRules = Seq(DropAllRule),
|
|
communityRules = Seq(DropAllRule),
|
|
)
|
|
|
|
case object FilterNonePolicy extends VisibilityPolicy()
|
|
|
|
object ConversationsAdAvoidanceRules {
|
|
val tweetRules = Seq(
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwTextTweetLabelAvoidRule,
|
|
AvoidHighToxicityModelScoreRule,
|
|
AvoidReportedTweetModelScoreRule,
|
|
NsfwHighPrecisionUserLabelAvoidTweetRule,
|
|
TweetNsfwUserAdminAvoidRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
)
|
|
|
|
val policyRuleParams = Map[Rule, PolicyLevelRuleParams](
|
|
NsfwHighRecallTweetLabelAvoidRule -> ruleParams(
|
|
RuleParams.EnableNewAdAvoidanceRulesParam
|
|
),
|
|
NsfwHighPrecisionTweetLabelAvoidRule -> ruleParams(
|
|
RuleParams.EnableNewAdAvoidanceRulesParam
|
|
),
|
|
NsfwTextTweetLabelAvoidRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
AvoidHighToxicityModelScoreRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
AvoidReportedTweetModelScoreRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
NsfwHighPrecisionUserLabelAvoidTweetRule -> ruleParams(
|
|
RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
TweetNsfwUserAdminAvoidRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
DoNotAmplifyTweetLabelAvoidRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
NsfaHighPrecisionTweetLabelAvoidRule -> ruleParams(RuleParams.EnableNewAdAvoidanceRulesParam),
|
|
)
|
|
}
|
|
|
|
case object FilterDefaultPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule
|
|
)
|
|
)
|
|
|
|
case object LimitedEngagementBaseRules
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
StaleTweetLimitedActionsRule,
|
|
LimitRepliesByInvitationConversationRule,
|
|
LimitRepliesCommunityConversationRule,
|
|
LimitRepliesFollowersConversationRule,
|
|
CommunityTweetCommunityNotFoundLimitedActionsRule,
|
|
CommunityTweetCommunityDeletedLimitedActionsRule,
|
|
CommunityTweetCommunitySuspendedLimitedActionsRule,
|
|
CommunityTweetMemberRemovedLimitedActionsRule,
|
|
CommunityTweetHiddenLimitedActionsRule,
|
|
CommunityTweetMemberLimitedActionsRule,
|
|
CommunityTweetNonMemberLimitedActionsRule,
|
|
DynamicProductAdLimitedEngagementTweetLabelRule,
|
|
TrustedFriendsTweetLimitedEngagementsRule
|
|
)
|
|
)
|
|
|
|
case object WritePathLimitedActionsEnforcementPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule
|
|
) ++
|
|
LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TestPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
TestRule
|
|
)
|
|
)
|
|
|
|
case object CardsServicePolicy
|
|
extends VisibilityPolicy(
|
|
cardRules = Seq(
|
|
DropProtectedAuthorPollCardRule,
|
|
DropCardUriRootDomainDenylistRule
|
|
),
|
|
spaceRules = Seq(
|
|
SpaceHighToxicityScoreNonFollowerDropRule,
|
|
SpaceHatefulHighRecallAllUsersDropRule,
|
|
SpaceViolenceHighRecallAllUsersDropRule,
|
|
ViewerIsSoftUserDropRule
|
|
),
|
|
)
|
|
|
|
case object CardPollVotingPolicy
|
|
extends VisibilityPolicy(
|
|
cardRules = Seq(
|
|
DropProtectedAuthorPollCardRule,
|
|
DropCommunityNonMemberPollCardRule
|
|
)
|
|
)
|
|
|
|
case object UserTimelineRules {
|
|
val UserRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
}
|
|
|
|
case object TimelineLikedByRules {
|
|
val UserRules = Seq(
|
|
CompromisedNonFollowerWithUqfRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
LowQualityNonFollowerWithUqfRule,
|
|
ReadOnlyNonFollowerWithUqfRule,
|
|
SpamHighRecallNonFollowerWithUqfRule
|
|
)
|
|
}
|
|
|
|
case object FollowingAndFollowersUserListPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object FriendsFollowingListPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object ListOwnershipsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object ListRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = RecommendationsPolicy.userRules ++ Seq(
|
|
DropNsfwUserAuthorRule,
|
|
NsfwHighRecallRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule
|
|
)
|
|
)
|
|
|
|
case object ListSearchBaseRules {
|
|
|
|
val NonExperimentalSafeSearchMinimalPolicyUserRules: Seq[Rule] =
|
|
SafeSearchMinimalPolicy.userRules.filterNot(_.isExperimental)
|
|
|
|
val MinimalPolicyUserRules: Seq[Rule] = NonExperimentalSafeSearchMinimalPolicyUserRules
|
|
|
|
val BlockMutePolicyUserRules = Seq(
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule
|
|
)
|
|
|
|
val StrictPolicyUserRules = Seq(
|
|
SafeSearchAbusiveUserLabelRule,
|
|
SafeSearchAbusiveHighRecallUserLabelRule,
|
|
SafeSearchCompromisedUserLabelRule,
|
|
SafeSearchDoNotAmplifyNonFollowersUserLabelRule,
|
|
SafeSearchDuplicateContentUserLabelRule,
|
|
SafeSearchLowQualityUserLabelRule,
|
|
SafeSearchNotGraduatedNonFollowersUserLabelRule,
|
|
SafeSearchNsfwHighPrecisionUserLabelRule,
|
|
SafeSearchNsfwAvatarImageUserLabelRule,
|
|
SafeSearchNsfwBannerImageUserLabelRule,
|
|
SafeSearchReadOnlyUserLabelRule,
|
|
SafeSearchSearchBlacklistUserLabelRule,
|
|
SafeSearchNsfwTextUserLabelRule,
|
|
SafeSearchSpamHighRecallUserLabelRule,
|
|
SafeSearchDownrankSpamReplyAuthorLabelRule,
|
|
SafeSearchNsfwTextAuthorLabelRule,
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
DropNsfwUserAuthorViewerOptInFilteringOnSearchRule,
|
|
)
|
|
}
|
|
|
|
object SensitiveMediaSettingsTimelineHomeBaseRules {
|
|
val policyRuleParams = Map[Rule, PolicyLevelRuleParams](
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaHomeTimelineRulesParam),
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaHomeTimelineRulesParam),
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaHomeTimelineRulesParam),
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaHomeTimelineRulesParam),
|
|
NsfwCardImageAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsHomeTimelineRulesParam)
|
|
)
|
|
}
|
|
|
|
object SensitiveMediaSettingsConversationBaseRules {
|
|
val policyRuleParams = Map[Rule, PolicyLevelRuleParams](
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaConversationRulesParam),
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaConversationRulesParam),
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaConversationRulesParam),
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaConversationRulesParam),
|
|
NsfwCardImageAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsConversationRulesParam)
|
|
)
|
|
}
|
|
|
|
object SensitiveMediaSettingsProfileTimelineBaseRules {
|
|
val policyRuleParams = Map[Rule, PolicyLevelRuleParams](
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaProfileTimelineRulesParam),
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaProfileTimelineRulesParam),
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaProfileTimelineRulesParam),
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaProfileTimelineRulesParam),
|
|
NsfwCardImageAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsProfileTimelineRulesParam)
|
|
)
|
|
}
|
|
|
|
object SensitiveMediaSettingsTweetDetailBaseRules {
|
|
val policyRuleParams = Map[Rule, PolicyLevelRuleParams](
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaTweetDetailRulesParam),
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaTweetDetailRulesParam),
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaTweetDetailRulesParam),
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaTweetDetailRulesParam),
|
|
NsfwCardImageAllUsersTweetLabelRule -> ruleParams(
|
|
RuleParams.EnableLegacySensitiveMediaTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam),
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule -> ruleParams(
|
|
RuleParams.EnableNewSensitiveMediaSettingsInterstitialsTweetDetailRulesParam)
|
|
)
|
|
}
|
|
|
|
case object ListSearchPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = ListSearchBaseRules.MinimalPolicyUserRules ++
|
|
ListSearchBaseRules.BlockMutePolicyUserRules ++
|
|
ListSearchBaseRules.StrictPolicyUserRules
|
|
)
|
|
|
|
case object ListSubscriptionsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object ListMembershipsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object AllSubscribedListsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object ListHeaderPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object NewUserExperiencePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfaHighRecallTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
UntrustedUrlTweetLabelRule,
|
|
DownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
AutomationTweetLabelRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
),
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
AbusiveHighRecallRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
DownrankSpamReplyNonAuthorRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object DESHomeTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
DropAllCommunityTweetsRule
|
|
) ++
|
|
VisibilityPolicy.baseTweetRules,
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object DesQuoteTweetTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule
|
|
) ++ ElevatedQuoteTweetTimelinePolicy.tweetRules.diff(Seq(DropStaleTweetsRule)),
|
|
userRules = Seq(
|
|
ProtectedAuthorDropRule
|
|
),
|
|
policyRuleParams = ElevatedQuoteTweetTimelinePolicy.policyRuleParams
|
|
)
|
|
|
|
case object DESRealtimeSpamEnrichmentPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
LowQualityTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
DropAllCommunityTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule
|
|
)
|
|
)
|
|
|
|
case object DESRealtimePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropAllCommunityTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
DropAllCollabInvitationTweetsRule
|
|
),
|
|
userRules = Seq(
|
|
DropAllProtectedAuthorRule,
|
|
DropProtectedViewerIfPresentRule
|
|
)
|
|
)
|
|
|
|
case object DESRetweetingUsersPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
),
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object DESTweetLikingUsersPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
),
|
|
userRules = TimelineLikedByRules.UserRules
|
|
)
|
|
|
|
case object DESUserBookmarksPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
) ++
|
|
(VisibilityPolicy.baseTweetRules
|
|
++ Seq(DropAllCommunityTweetsRule)
|
|
++ TimelineProfileRules.tweetRules),
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object DESUserLikedTweetsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
) ++
|
|
(
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
DropAllCommunityTweetsRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
),
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object DESUserMentionsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
DropAllCommunityTweetsRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object DESUserTweetsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
) ++
|
|
(VisibilityPolicy.baseTweetRules
|
|
++ Seq(DropAllCommunityTweetsRule)
|
|
++ TimelineProfileRules.tweetRules),
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object DevPlatformComplianceStreamPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
SpamAllUsersTweetLabelRule,
|
|
PdnaAllUsersTweetLabelRule,
|
|
BounceAllUsersTweetLabelRule,
|
|
AbusePolicyEpisodicTweetLabelComplianceTweetNoticeRule,
|
|
)
|
|
)
|
|
|
|
case object DesTweetDetailPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
) ++ BaseTweetDetailPolicy.tweetRules
|
|
)
|
|
|
|
case object DevPlatformGetListTweetsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropStaleTweetsRule) ++ DesTweetDetailPolicy.tweetRules
|
|
)
|
|
|
|
case object FollowerConnectionsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
SpammyFollowerRule
|
|
)
|
|
)
|
|
|
|
case object SuperFollowerConnectionsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
SpammyFollowerRule
|
|
)
|
|
)
|
|
|
|
case object LivePipelineEngagementCountsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object LiveVideoTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
AbusiveHighRecallTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
LiveLowQualityTweetLabelRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
),
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
CompromisedRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwHighRecallRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
LiveLowQualityRule,
|
|
EngagementSpammerRule,
|
|
EngagementSpammerHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object MagicRecsPolicyOverrides {
|
|
val replacements: Map[Rule, Rule] = Map()
|
|
def union(rules: Seq[Rule]*): Seq[Rule] = rules
|
|
.map(ar => ar.map(x => replacements.getOrElse(x, x)))
|
|
.reduce((a, b) => a ++ b.filterNot(a.contains))
|
|
}
|
|
|
|
case object MagicRecsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = MagicRecsPolicyOverrides.union(
|
|
RecommendationsPolicy.tweetRules.filterNot(_ == SafetyCrisisLevel3DropRule),
|
|
NotificationsIbisPolicy.tweetRules,
|
|
Seq(
|
|
NsfaHighRecallTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwTextHighPrecisionTweetLabelDropRule),
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule
|
|
),
|
|
Seq(
|
|
DeactivatedAuthorRule,
|
|
SuspendedAuthorRule,
|
|
TweetNsfwUserDropRule,
|
|
TweetNsfwAdminDropRule
|
|
)
|
|
),
|
|
userRules = MagicRecsPolicyOverrides.union(
|
|
RecommendationsPolicy.userRules,
|
|
NotificationsRules.userRules
|
|
)
|
|
)
|
|
|
|
case object MagicRecsV2Policy
|
|
extends VisibilityPolicy(
|
|
tweetRules = MagicRecsPolicyOverrides.union(
|
|
MagicRecsPolicy.tweetRules,
|
|
NotificationsWriterTweetHydratorPolicy.tweetRules
|
|
),
|
|
userRules = MagicRecsPolicyOverrides.union(
|
|
MagicRecsPolicy.userRules,
|
|
NotificationsWriterV2Policy.userRules
|
|
)
|
|
)
|
|
|
|
case object MagicRecsAggressivePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = MagicRecsPolicy.tweetRules,
|
|
userRules = MagicRecsPolicy.userRules
|
|
)
|
|
|
|
case object MagicRecsAggressiveV2Policy
|
|
extends VisibilityPolicy(
|
|
tweetRules = MagicRecsV2Policy.tweetRules,
|
|
userRules = MagicRecsV2Policy.userRules
|
|
)
|
|
|
|
case object MinimalPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
TsViolationRule
|
|
)
|
|
)
|
|
|
|
case object ModeratedTweetsTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = TweetDetailPolicy.tweetRules.diff(
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ReportedTweetInterstitialRule)),
|
|
policyRuleParams = TweetDetailPolicy.policyRuleParams
|
|
)
|
|
|
|
case object MomentsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AuthorBlocksViewerUnspecifiedRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object NearbyTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = SearchBlenderRules.tweetRelevanceRules,
|
|
userRules = SearchBlenderRules.userBaseRules
|
|
)
|
|
|
|
private object NotificationsRules {
|
|
val tweetRules: Seq[Rule] =
|
|
DropStaleTweetsRule +: VisibilityPolicy.baseTweetRules
|
|
|
|
val userRules: Seq[Rule] = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
AbusiveHighRecallRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
EngagementSpammerHighRecallNonFollowerWithUqfRule,
|
|
DownrankSpamReplyNonFollowerWithUqfRule
|
|
)
|
|
}
|
|
|
|
case object NotificationsIbisPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveUqfNonFollowerTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
ToxicityReplyFilterDropNotificationRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
LowQualityMentionTweetLabelRule,
|
|
UntrustedUrlUqfNonFollowerTweetLabelRule,
|
|
DownrankSpamReplyUqfNonFollowerTweetLabelRule,
|
|
SafetyCrisisAnyLevelDropRule,
|
|
DoNotAmplifyDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
),
|
|
userRules = NotificationsRules.userRules ++ Seq(
|
|
DoNotAmplifyNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object NotificationsReadPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = NotificationsRules.tweetRules,
|
|
userRules = NotificationsRules.userRules
|
|
)
|
|
|
|
case object NotificationsTimelineDeviceFollowPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
CompromisedRule
|
|
)
|
|
)
|
|
|
|
case object NotificationsWritePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = NotificationsRules.tweetRules,
|
|
userRules = NotificationsRules.userRules
|
|
)
|
|
|
|
case object NotificationsWriterV2Policy
|
|
extends VisibilityPolicy(
|
|
userRules =
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
DeactivatedViewerRule,
|
|
SuspendedViewerRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAndDoesNotFollowAuthorRule,
|
|
ViewerIsUnmentionedRule,
|
|
NoConfirmedEmailRule,
|
|
NoConfirmedPhoneRule,
|
|
NoDefaultProfileImageRule,
|
|
NoNewUsersRule,
|
|
NoNotFollowedByRule,
|
|
OnlyPeopleIFollowRule
|
|
) ++
|
|
NotificationsRules.userRules
|
|
)
|
|
|
|
case object NotificationsWriterTweetHydratorPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = NotificationsRules.tweetRules ++
|
|
Seq(
|
|
LowQualityTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
DuplicateMentionUqfTweetLabelRule,
|
|
LowQualityMentionTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
ToxicityReplyFilterDropNotificationRule,
|
|
AbusiveUqfNonFollowerTweetLabelRule,
|
|
UntrustedUrlUqfNonFollowerTweetLabelRule,
|
|
DownrankSpamReplyUqfNonFollowerTweetLabelRule,
|
|
ViewerHasMatchingMutedKeywordForNotificationsRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object NotificationsPlatformPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = NotificationsWriterTweetHydratorPolicy.tweetRules,
|
|
userRules = NotificationsWriterV2Policy.userRules
|
|
)
|
|
|
|
case object NotificationsPlatformPushPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = NotificationsIbisPolicy.tweetRules,
|
|
userRules = Seq(ViewerMutesAuthorRule)
|
|
++ NotificationsIbisPolicy.userRules
|
|
)
|
|
|
|
case object QuoteTweetTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
DropStaleTweetsRule,
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
UntrustedUrlTweetLabelRule,
|
|
DownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
AutomationTweetLabelRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
AbusiveHighRecallRule,
|
|
DownrankSpamReplyNonAuthorRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object ElevatedQuoteTweetTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
TweetDetailPolicy.tweetRules.diff(
|
|
Seq(
|
|
MutedKeywordForQuotedTweetTweetDetailInterstitialRule,
|
|
ReportedTweetInterstitialRule)),
|
|
policyRuleParams = TweetDetailPolicy.policyRuleParams
|
|
)
|
|
|
|
case object EmbedsPublicInterestNoticePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
)
|
|
)
|
|
|
|
case object RecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
DoNotAmplifyDropRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
),
|
|
userRules = Seq(
|
|
DropNsfwAdminAuthorRule,
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
RecommendationsBlacklistRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwNearPerfectAuthorRule,
|
|
NsfwBannerImageRule,
|
|
NsfwAvatarImageRule,
|
|
EngagementSpammerRule,
|
|
EngagementSpammerHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object RecosVideoPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
),
|
|
userRules = Seq(NsfwTextNonAuthorDropRule)
|
|
)
|
|
|
|
case object RepliesGroupingPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
LowQualityTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
DeciderableSpamHighRecallAuthorLabelDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAdPlacementAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
LowQualityHighRecallRule,
|
|
CompromisedRule,
|
|
DeciderableSpamHighRecallRule
|
|
)
|
|
)
|
|
|
|
case object ReturningUserExperiencePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfaHighRecallTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
NsfwTextHighPrecisionTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
UntrustedUrlTweetLabelRule,
|
|
DownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
AutomationTweetLabelRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
AbusiveHighRecallRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
DownrankSpamReplyNonAuthorRule,
|
|
NsfwTextNonAuthorDropRule,
|
|
DropNsfwUserAuthorRule,
|
|
NsfwHighRecallRule
|
|
)
|
|
)
|
|
|
|
case object ReturningUserExperienceFocalTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ViewerMutesAuthorInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object RevenuePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusiveTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule
|
|
)
|
|
)
|
|
|
|
case object SafeSearchMinimalPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
) ++ VisibilityPolicy.baseTweetRules ++ Seq(
|
|
LowQualityTweetLabelDropRule,
|
|
HighProactiveTosScoreTweetLabelDropSearchRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SearchBlacklistHighRecallTweetLabelDropRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
) ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
++ SearchBlenderRules.tweetAvoidRules,
|
|
userRules = Seq(
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
DuplicateContentRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
SearchLikelyIvsLabelNonFollowerDropUserRule
|
|
)
|
|
)
|
|
|
|
case object SearchHydrationPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialSearchRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object SearchBlenderRules {
|
|
val limitedEngagementBaseRules: Seq[Rule] = LimitedEngagementBaseRules.tweetRules
|
|
|
|
val tweetAvoidRules: Seq[Rule] =
|
|
Seq(
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
SearchAvoidTweetNsfwAdminRule,
|
|
SearchAvoidTweetNsfwUserRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
)
|
|
|
|
val basicBlockMuteRules: Seq[Rule] = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule
|
|
)
|
|
|
|
val tweetRelevanceRules: Seq[Rule] =
|
|
Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
DropStaleTweetsRule,
|
|
) ++ VisibilityPolicy.baseTweetRules ++ Seq(
|
|
SafeSearchAbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
HighProactiveTosScoreTweetLabelDropSearchRule,
|
|
HighPSpammyTweetScoreSearchTweetLabelDropRule,
|
|
HighSpammyTweetContentScoreSearchTopTweetLabelDropRule,
|
|
HighSpammyTweetContentScoreTrendsTopTweetLabelDropRule,
|
|
SafeSearchNsfwHighPrecisionTweetLabelRule,
|
|
SafeSearchGoreAndViolenceHighPrecisionTweetLabelRule,
|
|
SafeSearchNsfwReportedHeuristicsTweetLabelRule,
|
|
SafeSearchGoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
SafeSearchNsfwCardImageTweetLabelRule,
|
|
SafeSearchNsfwHighRecallTweetLabelRule,
|
|
SafeSearchNsfwVideoTweetLabelRule,
|
|
SafeSearchNsfwTextTweetLabelRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
SafeSearchGoreAndViolenceTweetLabelRule,
|
|
SafeSearchUntrustedUrlTweetLabelRule,
|
|
SafeSearchDownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SearchBlacklistHighRecallTweetLabelDropRule,
|
|
SmyteSpamTweetLabelDropSearchRule,
|
|
CopypastaSpamAllViewersSearchTweetLabelRule,
|
|
) ++ basicBlockMuteRules ++
|
|
Seq(
|
|
SafeSearchAutomationNonFollowerTweetLabelRule,
|
|
SafeSearchDuplicateMentionNonFollowerTweetLabelRule,
|
|
SafeSearchBystanderAbusiveTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
SearchIpiSafeSearchWithoutUserInQueryDropRule,
|
|
SearchEdiSafeSearchWithoutUserInQueryDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
UnsafeSearchNsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwCardImageAllUsersTweetLabelRule,
|
|
) ++
|
|
limitedEngagementBaseRules ++
|
|
tweetAvoidRules
|
|
|
|
VisibilityPolicy.baseTweetRules ++ Seq(
|
|
SafeSearchAbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
HighProactiveTosScoreTweetLabelDropSearchRule,
|
|
HighSpammyTweetContentScoreSearchLatestTweetLabelDropRule,
|
|
HighSpammyTweetContentScoreTrendsLatestTweetLabelDropRule,
|
|
SafeSearchNsfwHighPrecisionTweetLabelRule,
|
|
SafeSearchGoreAndViolenceHighPrecisionTweetLabelRule,
|
|
SafeSearchNsfwReportedHeuristicsTweetLabelRule,
|
|
SafeSearchGoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
SafeSearchNsfwCardImageTweetLabelRule,
|
|
SafeSearchNsfwHighRecallTweetLabelRule,
|
|
SafeSearchNsfwVideoTweetLabelRule,
|
|
SafeSearchNsfwTextTweetLabelRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
SafeSearchGoreAndViolenceTweetLabelRule,
|
|
SafeSearchUntrustedUrlTweetLabelRule,
|
|
SafeSearchDownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SearchBlacklistHighRecallTweetLabelDropRule,
|
|
SmyteSpamTweetLabelDropSearchRule,
|
|
CopypastaSpamNonFollowerSearchTweetLabelRule,
|
|
) ++
|
|
basicBlockMuteRules ++
|
|
Seq(
|
|
SafeSearchAutomationNonFollowerTweetLabelRule,
|
|
SafeSearchDuplicateMentionNonFollowerTweetLabelRule,
|
|
SafeSearchBystanderAbusiveTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
SearchIpiSafeSearchWithoutUserInQueryDropRule,
|
|
SearchEdiSafeSearchWithoutUserInQueryDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
UnsafeSearchNsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ limitedEngagementBaseRules ++ tweetAvoidRules
|
|
|
|
val userBaseRules: Seq[ConditionWithUserLabelRule] = Seq(
|
|
SafeSearchAbusiveUserLabelRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
SearchLikelyIvsLabelNonFollowerDropUserRule,
|
|
SafeSearchNsfwHighPrecisionUserLabelRule,
|
|
SafeSearchNsfwAvatarImageUserLabelRule,
|
|
SafeSearchNsfwBannerImageUserLabelRule,
|
|
SafeSearchAbusiveHighRecallUserLabelRule,
|
|
SafeSearchDownrankSpamReplyAuthorLabelRule,
|
|
SafeSearchNotGraduatedNonFollowersUserLabelRule,
|
|
SafeSearchNsfwTextAuthorLabelRule
|
|
)
|
|
|
|
val userRules: Seq[ConditionWithUserLabelRule] = userBaseRules
|
|
|
|
val userRelevanceBaseRules = userBaseRules ++ basicBlockMuteRules
|
|
|
|
val userRelevanceRules = userRelevanceBaseRules
|
|
|
|
val userRecencyBaseRules = userBaseRules.filterNot(
|
|
Seq(DoNotAmplifyNonFollowerRule, SearchLikelyIvsLabelNonFollowerDropUserRule).contains
|
|
) ++ basicBlockMuteRules
|
|
|
|
val searchQueryMatchesTweetAuthorRules: Seq[ConditionWithUserLabelRule] =
|
|
userBaseRules
|
|
|
|
val basicBlockMutePolicyRuleParam: Map[Rule, PolicyLevelRuleParams] =
|
|
SearchBlenderRules.basicBlockMuteRules
|
|
.map(rule => rule -> ruleParams(RuleParams.EnableSearchBasicBlockMuteRulesParam)).toMap
|
|
}
|
|
|
|
case object SearchBlenderUserRulesPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = SearchBlenderRules.userRules
|
|
)
|
|
|
|
case object SearchLatestUserRulesPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = SearchLatestPolicy.userRules
|
|
)
|
|
|
|
case object UserSearchSrpPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule,
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
SafeSearchAbusiveUserLabelRule,
|
|
SafeSearchHighRecallUserLabelRule,
|
|
SafeSearchNsfwNearPerfectAuthorRule,
|
|
SafeSearchNsfwHighPrecisionUserLabelRule,
|
|
SafeSearchNsfwAvatarImageUserLabelRule,
|
|
SafeSearchNsfwBannerImageUserLabelRule,
|
|
SafeSearchAbusiveHighRecallUserLabelRule,
|
|
SafeSearchNsfwTextAuthorLabelRule
|
|
)
|
|
)
|
|
|
|
case object UserSearchTypeaheadPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
SafeSearchAbusiveUserLabelRule,
|
|
SafeSearchHighRecallUserLabelRule,
|
|
SafeSearchNsfwNearPerfectAuthorRule,
|
|
SafeSearchNsfwHighPrecisionUserLabelRule,
|
|
SafeSearchNsfwAvatarImageUserLabelRule,
|
|
SafeSearchNsfwBannerImageUserLabelRule,
|
|
SafeSearchAbusiveHighRecallUserLabelRule,
|
|
SafeSearchNsfwTextAuthorLabelRule
|
|
),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object SearchMixerSrpMinimalPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule
|
|
)
|
|
)
|
|
|
|
case object SearchMixerSrpStrictPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule,
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
NsfwNearPerfectAuthorRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwHighRecallRule,
|
|
NsfwSensitiveRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule
|
|
) ++ SearchBlenderRules.searchQueryMatchesTweetAuthorRules
|
|
.diff(Seq(SafeSearchNotGraduatedNonFollowersUserLabelRule))
|
|
)
|
|
|
|
case object SearchPeopleSrpPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = SearchBlenderRules.searchQueryMatchesTweetAuthorRules
|
|
)
|
|
|
|
case object SearchPeopleTypeaheadPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = SearchBlenderRules.searchQueryMatchesTweetAuthorRules
|
|
.diff(
|
|
Seq(
|
|
SafeSearchNotGraduatedNonFollowersUserLabelRule
|
|
)),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object SearchPhotoPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = SearchBlenderRules.tweetRelevanceRules,
|
|
userRules = SearchBlenderRules.userRelevanceRules,
|
|
policyRuleParams = SearchBlenderRules.basicBlockMutePolicyRuleParam
|
|
)
|
|
|
|
case object SearchTrendTakeoverPromotedTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object SearchVideoPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = SearchBlenderRules.tweetRelevanceRules,
|
|
userRules = SearchBlenderRules.userRelevanceRules,
|
|
policyRuleParams = SearchBlenderRules.basicBlockMutePolicyRuleParam
|
|
)
|
|
|
|
case object SearchLatestPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = SearchBlenderRules.tweetRecencyRules,
|
|
userRules = SearchBlenderRules.userRecencyBaseRules,
|
|
policyRuleParams = SearchBlenderRules.basicBlockMutePolicyRuleParam
|
|
)
|
|
|
|
case object SearchTopPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = SearchBlenderRules.tweetRelevanceRules,
|
|
userRules = Seq(SpammyUserModelHighPrecisionDropTweetRule) ++
|
|
SearchBlenderRules.basicBlockMuteRules ++
|
|
SearchBlenderRules.searchQueryMatchesTweetAuthorRules,
|
|
policyRuleParams = SearchBlenderRules.basicBlockMutePolicyRuleParam
|
|
)
|
|
|
|
case object SearchTopQigPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = BaseQigPolicy.tweetRules ++
|
|
Seq(
|
|
UnsafeSearchGoreAndViolenceHighPrecisionAllUsersTweetLabelDropRule,
|
|
UnsafeSearchGoreAndViolenceReportedHeuristicsAllUsersTweetLabelDropRule,
|
|
UnsafeSearchNsfwCardImageAllUsersTweetLabelDropRule,
|
|
UnsafeSearchNsfwReportedHeuristicsAllUsersTweetLabelDropRule,
|
|
UnsafeSearchNsfwHighPrecisionAllUsersTweetLabelDropRule
|
|
) ++
|
|
SearchTopPolicy.tweetRules.diff(
|
|
Seq(
|
|
SearchIpiSafeSearchWithoutUserInQueryDropRule,
|
|
SearchEdiSafeSearchWithoutUserInQueryDropRule,
|
|
HighSpammyTweetContentScoreTrendsTopTweetLabelDropRule,
|
|
UnsafeSearchNsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
UnsafeSearchGoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwCardImageAllUsersTweetLabelRule,
|
|
UnsafeSearchNsfwReportedHeuristicsAllUsersTweetLabelRule
|
|
) ++
|
|
SearchTopPolicy.tweetRules.intersect(BaseQigPolicy.tweetRules)),
|
|
userRules = BaseQigPolicy.userRules ++ Seq(
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
NsfwNearPerfectAuthorRule,
|
|
) ++ SearchTopPolicy.userRules.diff(
|
|
SearchTopPolicy.userRules.intersect(BaseQigPolicy.userRules)),
|
|
policyRuleParams = SearchBlenderRules.basicBlockMutePolicyRuleParam
|
|
)
|
|
|
|
case object SafeSearchStrictPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
) ++ VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
HighProactiveTosScoreTweetLabelDropSearchRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
UntrustedUrlTweetLabelRule,
|
|
DownrankSpamReplyTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SearchBlacklistHighRecallTweetLabelDropRule,
|
|
AutomationTweetLabelRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
++ SearchBlenderRules.tweetAvoidRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
AbusiveHighRecallRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
SearchLikelyIvsLabelNonFollowerDropUserRule,
|
|
DownrankSpamReplyNonAuthorRule,
|
|
NsfwTextNonAuthorDropRule,
|
|
)
|
|
)
|
|
|
|
case object StickersTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
DuplicateContentRule,
|
|
EngagementSpammerRule,
|
|
EngagementSpammerHighRecallRule,
|
|
NsfwSensitiveRule,
|
|
SpamHighRecallRule,
|
|
AbusiveHighRecallRule
|
|
)
|
|
)
|
|
|
|
case object StratoExtLimitedEngagementsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseTweetRules ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object InternalPromotedContentPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object StreamServicesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule
|
|
),
|
|
userRules = Seq(NsfwTextNonAuthorDropRule)
|
|
)
|
|
|
|
case object SuperLikePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule
|
|
),
|
|
userRules = Seq(NsfwTextNonAuthorDropRule)
|
|
)
|
|
|
|
case object TimelineFocalTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TimelineBookmarkPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
DropCommunityTweetsRule,
|
|
DropCommunityTweetCommunityNotVisibleRule,
|
|
DropProtectedCommunityTweetsRule,
|
|
DropHiddenCommunityTweetsRule,
|
|
DropAuthorRemovedCommunityTweetsRule,
|
|
SpamTweetLabelRule,
|
|
PdnaTweetLabelRule,
|
|
BounceOuterTweetTombstoneRule,
|
|
BounceQuotedTweetTombstoneRule,
|
|
DropExclusiveTweetContentRule,
|
|
DropTrustedFriendsTweetContentRule,
|
|
) ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
ViewerBlocksAuthorInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorInnerQuotedTweetInterstitialRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedTweetRule,
|
|
TombstoneDeletedQuotedTweetRule
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
UserUnavailableTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
)
|
|
|
|
case object TimelineListsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
DropStaleTweetsRule,
|
|
) ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TimelineFavoritesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
DropStaleTweetsRule,
|
|
)
|
|
++ TimelineProfileRules.baseTweetRules
|
|
++ Seq(
|
|
DynamicProductAdDropTweetLabelRule,
|
|
NsfwHighPrecisionTombstoneInnerQuotedTweetLabelRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
ViewerMutesAuthorInterstitialRule,
|
|
ViewerBlocksAuthorInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
DeactivatedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
OffBoardedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ErasedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ProtectedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsProfileTimelineBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object ProfileMixerFavoritesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropExclusiveTweetContentRule,
|
|
DropOuterCommunityTweetsRule,
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule
|
|
)
|
|
)
|
|
|
|
case object TimelineMediaPolicy
|
|
extends VisibilityPolicy(
|
|
TimelineProfileRules.baseTweetRules
|
|
++ Seq(
|
|
NsfwHighPrecisionTombstoneInnerQuotedTweetLabelRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
ViewerMutesAuthorInnerQuotedTweetInterstitialRule,
|
|
ViewerBlocksAuthorInnerQuotedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
DeactivatedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
OffBoardedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ErasedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ProtectedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsProfileTimelineBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object ProfileMixerMediaPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropStaleTweetsRule,
|
|
DropExclusiveTweetContentRule
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule
|
|
)
|
|
)
|
|
|
|
object TimelineProfileRules {
|
|
|
|
val baseTweetRules: Seq[Rule] = Seq(
|
|
TombstoneCommunityTweetsRule,
|
|
TombstoneCommunityTweetCommunityNotVisibleRule,
|
|
TombstoneProtectedCommunityTweetsRule,
|
|
TombstoneHiddenCommunityTweetsRule,
|
|
TombstoneAuthorRemovedCommunityTweetsRule,
|
|
SpamQuotedTweetLabelTombstoneRule,
|
|
SpamTweetLabelRule,
|
|
PdnaQuotedTweetLabelTombstoneRule,
|
|
PdnaTweetLabelRule,
|
|
BounceTweetLabelTombstoneRule,
|
|
TombstoneExclusiveQuotedTweetContentRule,
|
|
DropExclusiveTweetContentRule,
|
|
DropTrustedFriendsTweetContentRule
|
|
)
|
|
|
|
val tweetRules: Seq[Rule] =
|
|
Seq(
|
|
DynamicProductAdDropTweetLabelRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
NsfwTextTweetLabelAvoidRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
|
|
val tweetTombstoneRules: Seq[Rule] =
|
|
Seq(
|
|
DynamicProductAdDropTweetLabelRule,
|
|
NsfwHighPrecisionInnerQuotedTweetLabelRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
ViewerMutesAuthorInnerQuotedTweetInterstitialRule,
|
|
ViewerBlocksAuthorInnerQuotedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
}
|
|
|
|
case object TimelineProfilePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
DropStaleTweetsRule,
|
|
)
|
|
++ TimelineProfileRules.baseTweetRules
|
|
++ TimelineProfileRules.tweetTombstoneRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
DeactivatedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
OffBoardedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ErasedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ProtectedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsProfileTimelineBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object TimelineProfileAllPolicy
|
|
extends VisibilityPolicy(
|
|
TimelineProfileRules.baseTweetRules
|
|
++ TimelineProfileRules.tweetTombstoneRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
DeactivatedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
OffBoardedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ErasedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ProtectedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsProfileTimelineBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object TimelineProfileSuperFollowsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
DropOuterCommunityTweetsRule
|
|
) ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
TimelineProfileRules.tweetRules
|
|
)
|
|
|
|
case object TimelineReactiveBlendingPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TimelineHomePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseQuotedTweetTombstoneRules ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NullcastedTweetRule,
|
|
DropOuterCommunityTweetsRule,
|
|
DynamicProductAdDropTweetLabelRule,
|
|
MutedRetweetsRule,
|
|
DropAllAuthorRemovedCommunityTweetsRule,
|
|
DropAllHiddenCommunityTweetsRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwHighPrecisionTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceHighPrecisionDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwCardImageTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwUserTweetFlagDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwAdminTweetFlagDropRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
)
|
|
++
|
|
LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
DeciderableAuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
OffboardedAuthorRule,
|
|
DropTakendownUserRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsTimelineHomeBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object BaseTimelineHomePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseQuotedTweetTombstoneRules ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NullcastedTweetRule,
|
|
DropOuterCommunityTweetsRule,
|
|
DynamicProductAdDropTweetLabelRule,
|
|
MutedRetweetsRule,
|
|
DropAllAuthorRemovedCommunityTweetsRule,
|
|
DropAllHiddenCommunityTweetsRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
)
|
|
++
|
|
LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
DeciderableAuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
OffboardedAuthorRule,
|
|
DropTakendownUserRule
|
|
)
|
|
)
|
|
|
|
case object TimelineHomeHydrationPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseQuotedTweetTombstoneRules ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwHighPrecisionTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceHighPrecisionDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwCardImageTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwUserTweetFlagDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwAdminTweetFlagDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
policyRuleParams = SensitiveMediaSettingsTimelineHomeBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object TimelineHomeLatestPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseQuotedTweetTombstoneRules ++
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NullcastedTweetRule,
|
|
DropOuterCommunityTweetsRule,
|
|
DynamicProductAdDropTweetLabelRule,
|
|
MutedRetweetsRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwHighPrecisionTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceHighPrecisionDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropRule,
|
|
SensitiveMediaTweetDropRules.AdultMediaNsfwCardImageTweetLabelDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwUserTweetFlagDropRule,
|
|
SensitiveMediaTweetDropRules.OtherSensitiveMediaNsfwAdminTweetFlagDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
)
|
|
++
|
|
LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
DeciderableAuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
OffboardedAuthorRule,
|
|
DropTakendownUserRule
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsTimelineHomeBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object TimelineModeratedTweetsHydrationPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object SignalsReactionsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AuthorBlocksViewerDropRule
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object SignalsTweetReactingUsersPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules :+
|
|
NsfwVideoTweetLabelDropRule :+
|
|
NsfwTextAllUsersTweetLabelDropRule,
|
|
userRules = Seq(
|
|
CompromisedNonFollowerWithUqfRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
LowQualityNonFollowerWithUqfRule,
|
|
ReadOnlyNonFollowerWithUqfRule,
|
|
SpamHighRecallNonFollowerWithUqfRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object SocialProofPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = FilterDefaultPolicy.tweetRules,
|
|
userRules = Seq(
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule
|
|
)
|
|
)
|
|
|
|
case object TimelineLikedByPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules :+
|
|
NsfwVideoTweetLabelDropRule :+
|
|
NsfwTextAllUsersTweetLabelDropRule,
|
|
userRules = TimelineLikedByRules.UserRules :+ NsfwTextNonAuthorDropRule
|
|
)
|
|
|
|
case object TimelineRetweetedByPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules :+
|
|
NsfwVideoTweetLabelDropRule :+
|
|
NsfwTextAllUsersTweetLabelDropRule,
|
|
userRules = Seq(
|
|
CompromisedNonFollowerWithUqfRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
LowQualityNonFollowerWithUqfRule,
|
|
ReadOnlyNonFollowerWithUqfRule,
|
|
SpamHighRecallNonFollowerWithUqfRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object TimelineSuperLikedByPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules :+
|
|
NsfwVideoTweetLabelDropRule :+
|
|
NsfwTextAllUsersTweetLabelDropRule,
|
|
userRules = Seq(
|
|
CompromisedNonFollowerWithUqfRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
LowQualityNonFollowerWithUqfRule,
|
|
ReadOnlyNonFollowerWithUqfRule,
|
|
SpamHighRecallNonFollowerWithUqfRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object TimelineContentControlsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = TopicsLandingPageTopicRecommendationsPolicy.tweetRules,
|
|
userRules = TopicsLandingPageTopicRecommendationsPolicy.userRules
|
|
)
|
|
|
|
case object TimelineConversationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusiveNonFollowerTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
BystanderAbusiveNonFollowerTweetLabelRule,
|
|
UntrustedUrlAllViewersTweetLabelRule,
|
|
DownrankSpamReplyAllViewersTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
AbusiveHighRecallNonFollowerTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
LowQualityHighRecallRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
DownrankSpamReplyAllViewersRule,
|
|
),
|
|
policyRuleParams = SensitiveMediaSettingsConversationBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object TimelineFollowingActivityPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusiveTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TimelineInjectionPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SafetyCrisisLevel2DropRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
DoNotAmplifyDropRule,
|
|
HighProactiveTosScoreTweetLabelDropRule
|
|
),
|
|
userRules = Seq(
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object TimelineMentionsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
LowQualityTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
DuplicateMentionUqfTweetLabelRule,
|
|
LowQualityMentionTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
ToxicityReplyFilterDropNotificationRule,
|
|
AbusiveUqfNonFollowerTweetLabelRule,
|
|
UntrustedUrlUqfNonFollowerTweetLabelRule,
|
|
DownrankSpamReplyUqfNonFollowerTweetLabelRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
AbusiveHighRecallRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
EngagementSpammerHighRecallNonFollowerWithUqfRule,
|
|
DownrankSpamReplyNonFollowerWithUqfRule
|
|
)
|
|
)
|
|
|
|
case object TweetEngagersPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules,
|
|
userRules = Seq(
|
|
CompromisedNonFollowerWithUqfRule,
|
|
EngagementSpammerNonFollowerWithUqfRule,
|
|
LowQualityNonFollowerWithUqfRule,
|
|
ReadOnlyNonFollowerWithUqfRule,
|
|
SpamHighRecallNonFollowerWithUqfRule
|
|
)
|
|
)
|
|
|
|
case object TweetWritesApiPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object QuotedTweetRulesPolicy
|
|
extends VisibilityPolicy(
|
|
quotedTweetRules = Seq(
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
OffboardedAuthorRule,
|
|
SuspendedAuthorRule,
|
|
AuthorBlocksOuterAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerMutesAndDoesNotFollowAuthorRule,
|
|
ProtectedQuoteTweetAuthorRule
|
|
)
|
|
)
|
|
|
|
case object TweetDetailPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAdPlacementAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
MutedKeywordForQuotedTweetTweetDetailInterstitialRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules,
|
|
policyRuleParams = SensitiveMediaSettingsTweetDetailBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object BaseTweetDetailPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelAvoidRule,
|
|
NsfwHighRecallTweetLabelAvoidRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAdPlacementAllUsersTweetLabelRule,
|
|
DoNotAmplifyTweetLabelAvoidRule,
|
|
NsfaHighPrecisionTweetLabelAvoidRule,
|
|
MutedKeywordForQuotedTweetTweetDetailInterstitialRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TweetDetailWithInjectionsHydrationPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
MutedKeywordForQuotedTweetTweetDetailInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object TweetDetailNonTooPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropAllExclusiveTweetsRule,
|
|
DropAllTrustedFriendsTweetsRule,
|
|
) ++ BaseTweetDetailPolicy.tweetRules
|
|
)
|
|
|
|
case object RecosWritePathPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AbusiveTweetLabelRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule
|
|
),
|
|
userRules = Seq(NsfwTextNonAuthorDropRule)
|
|
)
|
|
|
|
case object BrandSafetyPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
NsfaHighRecallTweetLabelInterstitialRule
|
|
),
|
|
userRules = Seq(NsfwTextNonAuthorDropRule)
|
|
)
|
|
|
|
case object VideoAdsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object AppealsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
)
|
|
)
|
|
|
|
case object TimelineConversationsDownrankingPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
HighToxicityScoreDownrankAbusiveQualitySectionRule,
|
|
UntrustedUrlConversationsTweetLabelRule,
|
|
DownrankSpamReplyConversationsTweetLabelRule,
|
|
DownrankSpamReplyConversationsAuthorLabelRule,
|
|
HighProactiveTosScoreTweetLabelDownrankingRule,
|
|
SafetyCrisisLevel3SectionRule,
|
|
SafetyCrisisLevel4SectionRule,
|
|
DoNotAmplifySectionRule,
|
|
DoNotAmplifySectionUserRule,
|
|
NotGraduatedConversationsAuthorLabelRule,
|
|
HighSpammyTweetContentScoreConvoDownrankAbusiveQualityRule,
|
|
HighCryptospamScoreConvoDownrankAbusiveQualityRule,
|
|
CopypastaSpamAbusiveQualityTweetLabelRule,
|
|
HighToxicityScoreDownrankLowQualitySectionRule,
|
|
HighPSpammyTweetScoreDownrankLowQualitySectionRule,
|
|
RitoActionedTweetDownrankLowQualitySectionRule,
|
|
HighToxicityScoreDownrankHighQualitySectionRule,
|
|
)
|
|
)
|
|
|
|
case object TimelineConversationsDownrankingMinimalPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
HighProactiveTosScoreTweetLabelDownrankingRule
|
|
)
|
|
)
|
|
|
|
case object TimelineHomeRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.tweetRules.filter(
|
|
_ != NsfwHighPrecisionTweetLabelRule
|
|
),
|
|
Seq(
|
|
SafetyCrisisLevel2DropRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
HighProactiveTosScoreTweetLabelDropRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
),
|
|
BaseTimelineHomePolicy.tweetRules,
|
|
),
|
|
userRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.userRules,
|
|
BaseTimelineHomePolicy.userRules
|
|
)
|
|
)
|
|
|
|
case object TimelineHomeTopicFollowRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.union(
|
|
Seq(
|
|
SearchBlacklistTweetLabelRule,
|
|
GoreAndViolenceTopicHighRecallTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
),
|
|
RecommendationsPolicy.tweetRules
|
|
.filterNot(
|
|
Seq(
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
).contains),
|
|
BaseTimelineHomePolicy.tweetRules
|
|
),
|
|
userRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.userRules,
|
|
BaseTimelineHomePolicy.userRules
|
|
)
|
|
)
|
|
|
|
case object TimelineScorerPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AllowAllRule
|
|
)
|
|
)
|
|
|
|
case object FollowedTopicsTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object TopicsLandingPageTopicRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.union(
|
|
Seq(
|
|
SearchBlacklistTweetLabelRule,
|
|
GoreAndViolenceTopicHighRecallTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule
|
|
),
|
|
RecommendationsPolicy.tweetRules,
|
|
BaseTimelineHomePolicy.tweetRules,
|
|
),
|
|
userRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.userRules,
|
|
BaseTimelineHomePolicy.userRules
|
|
) ++ Seq(
|
|
AuthorBlocksViewerDropRule
|
|
)
|
|
)
|
|
|
|
case object ExploreRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropOuterCommunityTweetsRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
GoreAndViolenceTopicHighRecallTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
DropTweetsWithGeoRestrictedMediaRule,
|
|
TweetNsfwUserDropRule,
|
|
TweetNsfwAdminDropRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
ViewerHasMatchingMutedKeywordForNotificationsRule,
|
|
) ++ VisibilityPolicy.union(
|
|
RecommendationsPolicy.tweetRules
|
|
),
|
|
userRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.userRules
|
|
) ++ Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule
|
|
)
|
|
)
|
|
|
|
case object TombstoningPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
TombstoneIf.ViewerIsBlockedByAuthor,
|
|
TombstoneIf.AuthorIsProtected,
|
|
TombstoneIf.ReplyIsModeratedByRootAuthor,
|
|
TombstoneIf.AuthorIsSuspended,
|
|
TombstoneIf.AuthorIsDeactivated,
|
|
InterstitialIf.ViewerHardMutedAuthor
|
|
)
|
|
)
|
|
|
|
case object TweetReplyNudgePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
SpamAllUsersTweetLabelRule,
|
|
PdnaAllUsersTweetLabelRule,
|
|
BounceAllUsersTweetLabelRule,
|
|
TweetNsfwAdminDropRule,
|
|
TweetNsfwUserDropRule,
|
|
NsfwHighRecallAllUsersTweetLabelDropRule,
|
|
NsfwHighPrecisionAllUsersTweetLabelDropRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelDropRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelDropRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelDropRule,
|
|
NsfwCardImageAllUsersTweetLabelDropRule,
|
|
NsfwVideoAllUsersTweetLabelDropRule,
|
|
NsfwTextAllUsersTweetLabelDropRule,
|
|
),
|
|
userRules = Seq(
|
|
DropNsfwUserAuthorRule,
|
|
DropNsfwAdminAuthorRule,
|
|
NsfwTextAllUsersDropRule
|
|
)
|
|
)
|
|
|
|
case object HumanizationNudgePolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules
|
|
)
|
|
|
|
case object TrendsRepresentativeTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.tweetRules,
|
|
Seq(
|
|
AbusiveHighRecallTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
LowQualityTweetLabelDropRule,
|
|
HighProactiveTosScoreTweetLabelDropRule,
|
|
NsfaHighRecallTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
NsfwHighRecallAllUsersTweetLabelDropRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
PdnaAllUsersTweetLabelRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
UntrustedUrlAllViewersTweetLabelRule,
|
|
DownrankSpamReplyAllViewersTweetLabelRule,
|
|
HighPSpammyScoreAllViewerDropRule,
|
|
DoNotAmplifyAllViewersDropRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule,
|
|
CopypastaSpamAllViewersTweetLabelRule,
|
|
)
|
|
),
|
|
userRules = VisibilityPolicy.union(
|
|
RecommendationsPolicy.userRules,
|
|
Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
CompromisedRule,
|
|
RecommendationsBlacklistRule,
|
|
SpamHighRecallRule,
|
|
DuplicateContentRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwNearPerfectAuthorRule,
|
|
NsfwBannerImageRule,
|
|
NsfwAvatarImageRule,
|
|
EngagementSpammerRule,
|
|
EngagementSpammerHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
NsfwHighRecallRule,
|
|
TsViolationRule,
|
|
DownrankSpamReplyAllViewersRule,
|
|
NsfwTextNonAuthorDropRule
|
|
)
|
|
)
|
|
)
|
|
|
|
case object AdsCampaignPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(SuspendedAuthorRule),
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object AdsManagerPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
AdsManagerDenyListAllUsersTweetLabelRule,
|
|
)
|
|
)
|
|
|
|
case object AdsReportingDashboardPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = AdsManagerPolicy.tweetRules,
|
|
userRules = AdsCampaignPolicy.userRules
|
|
)
|
|
|
|
case object BirdwatchNoteAuthorPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
SuspendedAuthorRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule
|
|
)
|
|
)
|
|
|
|
case object BirdwatchNoteTweetsTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
MutedRetweetsRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerMutesAuthorRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object BirdwatchNeedsYourHelpNotificationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
ViewerHasMatchingMutedKeywordForNotificationsRule,
|
|
)
|
|
)
|
|
|
|
case object ForDevelopmentOnlyPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq.empty,
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object UserProfileHeaderPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq.empty,
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object UserScopedTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules,
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object TweetScopedTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserTimelineRules.UserRules,
|
|
tweetRules = Seq.empty
|
|
)
|
|
|
|
case object SoftInterventionPivotPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules
|
|
)
|
|
|
|
case object CuratedTrendsRepresentativeTweetPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
SuspendedAuthorRule,
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAndDoesNotFollowAuthorRule
|
|
)
|
|
)
|
|
|
|
case object CommunitiesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
RetweetDropRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
EmergencyDropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object TimelineHomeCommunitiesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.union(
|
|
Seq(
|
|
DropAllAuthorRemovedCommunityTweetsRule,
|
|
DropAllHiddenCommunityTweetsRule,
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
),
|
|
VisibilityPolicy.baseQuotedTweetTombstoneRules,
|
|
CommunitiesPolicy.tweetRules,
|
|
),
|
|
userRules = Seq(
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
)
|
|
)
|
|
|
|
case object TimelineHomePromotedHydrationPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
ViewerHasMatchingMutedKeywordForHomeTimelinePromotedTweetRule,
|
|
ViewerMutesAuthorHomeTimelinePromotedTweetRule,
|
|
ViewerBlocksAuthorHomeTimelinePromotedTweetRule
|
|
) ++ TimelineHomeHydrationPolicy.tweetRules,
|
|
policyRuleParams = TimelineHomeHydrationPolicy.policyRuleParams
|
|
)
|
|
|
|
case object SpacesPolicy
|
|
extends VisibilityPolicy(
|
|
SpaceDoNotAmplifyAllUsersDropRule,
|
|
SpaceNsfwHighPrecisionNonFollowerDropRule),
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule
|
|
)
|
|
)
|
|
|
|
case object SpacesSellerApplicationStatusPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
ViewerIsNotAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object SpacesParticipantsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropAllRule),
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object SpacesSharingPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = TweetDetailPolicy.tweetRules,
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
),
|
|
policyRuleParams = TweetDetailPolicy.policyRuleParams
|
|
)
|
|
|
|
case object SpaceFleetlinePolicy
|
|
extends VisibilityPolicy(
|
|
spaceRules = Seq(
|
|
SpaceDoNotAmplifyNonFollowerDropRule,
|
|
SpaceCoordHarmfulActivityHighRecallNonFollowerDropRule,
|
|
SpaceUntrustedUrlNonFollowerDropRule,
|
|
SpaceMisleadingHighRecallNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionAllUsersInterstitialRule
|
|
),
|
|
userRules = Seq(
|
|
TsViolationRule,
|
|
DoNotAmplifyNonFollowerRule,
|
|
NotGraduatedNonFollowerRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
UserAbusiveNonFollowerDropRule
|
|
)
|
|
)
|
|
|
|
case object SpaceNotificationsPolicy
|
|
extends VisibilityPolicy(
|
|
spaceRules = Seq(
|
|
SpaceHatefulHighRecallAllUsersDropRule,
|
|
SpaceViolenceHighRecallAllUsersDropRule,
|
|
SpaceDoNotAmplifyAllUsersDropRule,
|
|
SpaceCoordHarmfulActivityHighRecallAllUsersDropRule,
|
|
SpaceUntrustedUrlNonFollowerDropRule,
|
|
SpaceMisleadingHighRecallNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionAllUsersDropRule,
|
|
SpaceNsfwHighRecallAllUsersDropRule,
|
|
ViewerHasMatchingMutedKeywordInSpaceTitleForNotificationsRule
|
|
),
|
|
userRules = Seq(
|
|
ViewerMutesAuthorRule,
|
|
ViewerBlocksAuthorRule,
|
|
AuthorBlocksViewerDropRule,
|
|
TsViolationRule,
|
|
DoNotAmplifyUserRule,
|
|
AbusiveRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
RecommendationsBlacklistRule,
|
|
NotGraduatedRule,
|
|
SpamHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
UserBlinkWorstAllUsersDropRule,
|
|
UserNsfwNearPerfectNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionNonFollowerDropRule,
|
|
UserNsfwAvatarImageNonFollowerDropRule,
|
|
UserNsfwBannerImageNonFollowerDropRule
|
|
)
|
|
)
|
|
|
|
case object SpaceTweetAvatarHomeTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
spaceRules = Seq(
|
|
SpaceDoNotAmplifyNonFollowerDropRule,
|
|
SpaceCoordHarmfulActivityHighRecallNonFollowerDropRule,
|
|
SpaceUntrustedUrlNonFollowerDropRule,
|
|
SpaceMisleadingHighRecallNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionAllUsersDropRule,
|
|
SpaceNsfwHighPrecisionAllUsersInterstitialRule
|
|
),
|
|
userRules = Seq(
|
|
TsViolationRule,
|
|
DoNotAmplifyUserRule,
|
|
NotGraduatedNonFollowerRule,
|
|
AbusiveRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
RecommendationsBlacklistRule,
|
|
SpamHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
UserBlinkWorstAllUsersDropRule,
|
|
UserNsfwNearPerfectNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionNonFollowerDropRule,
|
|
UserNsfwAvatarImageNonFollowerDropRule,
|
|
UserNsfwBannerImageNonFollowerDropRule
|
|
)
|
|
)
|
|
|
|
case object SpaceHomeTimelineUprankingPolicy
|
|
extends VisibilityPolicy(
|
|
spaceRules = Seq(
|
|
SpaceDoNotAmplifyNonFollowerDropRule,
|
|
SpaceCoordHarmfulActivityHighRecallNonFollowerDropRule,
|
|
SpaceUntrustedUrlNonFollowerDropRule,
|
|
SpaceMisleadingHighRecallNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionNonFollowerDropRule,
|
|
SpaceNsfwHighPrecisionSafeSearchNonFollowerDropRule,
|
|
SpaceNsfwHighRecallSafeSearchNonFollowerDropRule
|
|
),
|
|
userRules = Seq(
|
|
TsViolationRule,
|
|
DoNotAmplifyUserRule,
|
|
NotGraduatedRule,
|
|
AbusiveRule,
|
|
SearchBlacklistRule,
|
|
SearchNsfwTextRule,
|
|
RecommendationsBlacklistRule,
|
|
SpamHighRecallRule,
|
|
AbusiveHighRecallRule,
|
|
UserBlinkWorstAllUsersDropRule,
|
|
UserNsfwNearPerfectNonFollowerDropRule,
|
|
UserNsfwAvatarImageNonFollowerDropRule,
|
|
UserNsfwBannerImageNonFollowerDropRule
|
|
)
|
|
)
|
|
|
|
case object SpaceJoinScreenPolicy
|
|
extends VisibilityPolicy(
|
|
spaceRules = Seq(
|
|
SpaceNsfwHighPrecisionAllUsersInterstitialRule
|
|
)
|
|
)
|
|
|
|
case object KitchenSinkDevelopmentPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules.diff(
|
|
Seq(
|
|
BounceTweetLabelRule,
|
|
DropExclusiveTweetContentRule,
|
|
DropTrustedFriendsTweetContentRule
|
|
)
|
|
) ++ Seq(
|
|
BounceTweetLabelTombstoneRule,
|
|
TombstoneExclusiveTweetContentRule,
|
|
TombstoneTrustedFriendsTweetContentRule)
|
|
++ Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ViewerReportsAuthorInterstitialRule,
|
|
ViewerMutesAuthorInterstitialRule,
|
|
ViewerBlocksAuthorInterstitialRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
ExperimentalNudgeLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorTombstoneRule,
|
|
SuspendedAuthorRule
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableRetweetTombstoneRule,
|
|
DeactivatedUserUnavailableRetweetTombstoneRule,
|
|
OffBoardedUserUnavailableRetweetTombstoneRule,
|
|
ErasedUserUnavailableRetweetTombstoneRule,
|
|
ProtectedUserUnavailableRetweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableRetweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableRetweetTombstoneRule,
|
|
ViewerMutesAuthorUserUnavailableRetweetTombstoneRule,
|
|
SuspendedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
DeactivatedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
OffBoardedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ErasedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
ProtectedUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule
|
|
),
|
|
mediaRules = VisibilityPolicy.baseMediaRules
|
|
)
|
|
|
|
case object CurationPolicyViolationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++ Seq(
|
|
DoNotAmplifyAllViewersDropRule,
|
|
),
|
|
userRules = Seq(
|
|
DoNotAmplifyUserRule,
|
|
TsViolationRule
|
|
)
|
|
)
|
|
|
|
case object GraphqlDefaultPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules
|
|
)
|
|
|
|
case object GryphonDecksAndColumnsSharingPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object UserSettingsPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(ViewerIsNotAuthorDropRule),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object BlockMuteUsersTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(SuspendedAuthorRule),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object TopicRecommendationsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
Seq(
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwTextHighPrecisionTweetLabelDropRule
|
|
)
|
|
++ RecommendationsPolicy.tweetRules,
|
|
userRules = RecommendationsPolicy.userRules
|
|
)
|
|
|
|
case object RitoActionedTweetTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseTweetTombstoneRules
|
|
++ Seq(
|
|
AuthorBlocksViewerTombstoneRule,
|
|
ProtectedAuthorTombstoneRule
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
)
|
|
|
|
case object EmbeddedTweetsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetTombstoneRules
|
|
++ Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
)
|
|
)
|
|
|
|
case object EmbedTweetMarkupPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropStaleTweetsRule) ++
|
|
VisibilityPolicy.baseTweetTombstoneRules
|
|
++ Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
)
|
|
|
|
case object ArticleTweetTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules =
|
|
VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
ViewerHasMatchingMutedKeywordForHomeTimelineRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++ LimitedEngagementBaseRules.tweetRules,
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ViewerBlocksAuthorRule,
|
|
ViewerMutesAuthorRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object ConversationFocalPrehydrationPolicy
|
|
extends VisibilityPolicy(
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
)
|
|
)
|
|
|
|
case object ConversationFocalTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetTombstoneRules
|
|
++ Seq(
|
|
DynamicProductAdDropTweetLabelRule,
|
|
AuthorBlocksViewerTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAdPlacementAllUsersTweetLabelRule,
|
|
MutedKeywordForQuotedTweetTweetDetailInterstitialRule,
|
|
ViewerMutesAuthorInnerQuotedTweetInterstitialRule,
|
|
ViewerBlocksAuthorInnerQuotedTweetInterstitialRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules
|
|
++ ConversationsAdAvoidanceRules.tweetRules,
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
UserUnavailableTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = ConversationsAdAvoidanceRules.policyRuleParams
|
|
++ SensitiveMediaSettingsConversationBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object ConversationReplyPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetTombstoneRules
|
|
++ Seq(
|
|
LowQualityTweetLabelTombstoneRule,
|
|
SpamHighRecallTweetLabelTombstoneRule,
|
|
DuplicateContentTweetLabelTombstoneRule,
|
|
DeciderableSpamHighRecallAuthorLabelTombstoneRule,
|
|
SmyteSpamTweetLabelTombstoneRule,
|
|
AuthorBlocksViewerTombstoneRule,
|
|
ToxicityReplyFilterRule,
|
|
DynamicProductAdDropTweetLabelRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwHighPrecisionTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceHighPrecisionDropSettingLeveTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwReportedHeuristicsTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.ViolentMediaGoreAndViolenceReportedHeuristicsDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.AdultMediaNsfwCardImageTweetLabelDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwUserTweetFlagDropSettingLevelTombstoneRule,
|
|
SensitiveMediaTweetDropSettingLevelTombstoneRules.OtherSensitiveMediaNsfwAdminTweetFlagDropSettingLevelTombstoneRule,
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
MutedKeywordForTweetRepliesInterstitialRule,
|
|
ReportedTweetInterstitialRule,
|
|
ViewerBlocksAuthorInterstitialRule,
|
|
ViewerMutesAuthorInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwHighPrecisionTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceHighPrecisionInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwReportedHeuristicsTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.ViolentMediaGoreAndViolenceReportedHeuristicsInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.AdultMediaNsfwCardImageTweetLabelInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwUserTweetFlagInterstitialRule,
|
|
SensitiveMediaTweetInterstitialRules.OtherSensitiveMediaNsfwAdminTweetFlagInterstitialRule,
|
|
GoreAndViolenceHighPrecisionAvoidAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAvoidAdPlacementAllUsersTweetLabelRule,
|
|
NsfwCardImageAvoidAdPlacementAllUsersTweetLabelRule,
|
|
)
|
|
++ LimitedEngagementBaseRules.tweetRules
|
|
++ ConversationsAdAvoidanceRules.tweetRules,
|
|
userRules = Seq(
|
|
LowQualityRule,
|
|
ReadOnlyRule,
|
|
LowQualityHighRecallRule,
|
|
CompromisedRule,
|
|
DeciderableSpamHighRecallRule
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedOuterTweetRule,
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
UserUnavailableTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = ConversationsAdAvoidanceRules.policyRuleParams
|
|
++ SensitiveMediaSettingsConversationBaseRules.policyRuleParams
|
|
)
|
|
|
|
case object AdsBusinessSettingsPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object UserMilestoneRecommendationPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = RecommendationsPolicy.userRules ++ Seq(
|
|
)
|
|
)
|
|
|
|
case object TrustedFriendsUserListPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(DropAllRule),
|
|
userRules = Seq(
|
|
ViewerBlocksAuthorRule
|
|
)
|
|
)
|
|
|
|
case object TwitterDelegateUserListPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(
|
|
ViewerBlocksAuthorRule,
|
|
ViewerIsAuthorDropRule,
|
|
DeactivatedAuthorRule,
|
|
AuthorBlocksViewerDropRule
|
|
),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object QuickPromoteTweetEligibilityPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = TweetDetailPolicy.tweetRules,
|
|
userRules = UserTimelineRules.UserRules,
|
|
policyRuleParams = TweetDetailPolicy.policyRuleParams
|
|
)
|
|
|
|
case object ReportCenterPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = ConversationFocalTweetPolicy.tweetRules.diff(
|
|
ConversationsAdAvoidanceRules.tweetRules
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneBounceDeletedOuterTweetRule,
|
|
TombstoneDeletedQuotedTweetRule,
|
|
TombstoneBounceDeletedQuotedTweetRule,
|
|
TombstoneDeletedOuterTweetRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
DeactivatedUserUnavailableTweetTombstoneRule,
|
|
OffBoardedUserUnavailableTweetTombstoneRule,
|
|
ErasedUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
AuthorBlocksViewerUserUnavailableInnerQuotedTweetTombstoneRule,
|
|
UserUnavailableTweetTombstoneRule,
|
|
ViewerBlocksAuthorUserUnavailableInnerQuotedTweetInterstitialRule,
|
|
ViewerMutesAuthorUserUnavailableInnerQuotedTweetInterstitialRule
|
|
),
|
|
policyRuleParams = ConversationFocalTweetPolicy.policyRuleParams
|
|
)
|
|
|
|
case object ConversationInjectedTweetPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetRules ++
|
|
Seq(
|
|
AbusePolicyEpisodicTweetLabelInterstitialRule,
|
|
EmergencyDynamicInterstitialRule,
|
|
NsfwHighPrecisionInterstitialAllUsersTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionAllUsersTweetLabelRule,
|
|
NsfwReportedHeuristicsAllUsersTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsAllUsersTweetLabelRule,
|
|
NsfwCardImageAllUsersTweetLabelRule,
|
|
) ++
|
|
LimitedEngagementBaseRules.tweetRules ++ Seq(
|
|
SkipTweetDetailLimitedEngagementTweetLabelRule
|
|
)
|
|
)
|
|
|
|
case object EditHistoryTimelinePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = ConversationReplyPolicy.tweetRules,
|
|
policyRuleParams = ConversationReplyPolicy.policyRuleParams,
|
|
deletedTweetRules = ConversationReplyPolicy.deletedTweetRules,
|
|
userUnavailableStateRules = ConversationReplyPolicy.userUnavailableStateRules)
|
|
|
|
case object UserSelfViewOnlyPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq(ViewerIsNotAuthorDropRule),
|
|
tweetRules = Seq(DropAllRule)
|
|
)
|
|
|
|
case object TwitterArticleComposePolicy
|
|
extends VisibilityPolicy(
|
|
twitterArticleRules = Seq(
|
|
ViewerIsNotAuthorDropRule
|
|
)
|
|
)
|
|
|
|
case object TwitterArticleProfileTabPolicy
|
|
extends VisibilityPolicy(
|
|
twitterArticleRules = Seq(
|
|
AuthorBlocksViewerDropRule
|
|
)
|
|
)
|
|
|
|
case object TwitterArticleReadPolicy
|
|
extends VisibilityPolicy(
|
|
twitterArticleRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
)
|
|
)
|
|
|
|
case object ContentControlToolInstallPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserProfileHeaderPolicy.userRules,
|
|
tweetRules = UserProfileHeaderPolicy.tweetRules
|
|
)
|
|
|
|
case object TimelineProfileSpacesPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = UserProfileHeaderPolicy.userRules,
|
|
tweetRules = UserProfileHeaderPolicy.tweetRules
|
|
)
|
|
|
|
case object TimelineFavoritesSelfViewPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = TimelineFavoritesPolicy.tweetRules.diff(Seq(DropStaleTweetsRule)),
|
|
policyRuleParams = TimelineFavoritesPolicy.policyRuleParams,
|
|
deletedTweetRules = TimelineFavoritesPolicy.deletedTweetRules,
|
|
userUnavailableStateRules = TimelineFavoritesPolicy.userUnavailableStateRules
|
|
)
|
|
|
|
case object BaseQigPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
AutomationTweetLabelRule,
|
|
DoNotAmplifyDropRule,
|
|
DownrankSpamReplyTweetLabelRule,
|
|
DuplicateContentTweetLabelDropRule,
|
|
DuplicateMentionTweetLabelRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
LikelyIvsLabelNonFollowerDropUserRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
PdnaTweetLabelRule,
|
|
SafetyCrisisLevel3DropRule,
|
|
SafetyCrisisLevel4DropRule,
|
|
SearchBlacklistHighRecallTweetLabelDropRule,
|
|
SearchBlacklistTweetLabelRule,
|
|
SmyteSpamTweetLabelDropRule,
|
|
SpamHighRecallTweetLabelDropRule,
|
|
),
|
|
userRules = Seq(
|
|
DuplicateContentRule,
|
|
EngagementSpammerHighRecallRule,
|
|
EngagementSpammerRule,
|
|
NsfwAvatarImageRule,
|
|
NsfwBannerImageRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwHighRecallRule,
|
|
NsfwSensitiveRule,
|
|
ReadOnlyRule,
|
|
RecommendationsBlacklistRule,
|
|
SearchBlacklistRule,
|
|
SpamHighRecallRule
|
|
))
|
|
|
|
case object NotificationsQigPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = BaseQigPolicy.tweetRules ++ Seq(
|
|
DropAllCommunityTweetsRule,
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
HighProactiveTosScoreTweetLabelDropSearchRule,
|
|
LowQualityTweetLabelDropRule,
|
|
NsfwHighPrecisionRule,
|
|
NsfwHighRecallRule,
|
|
NsfwNearPerfectAuthorRule,
|
|
NsfwSensitiveRule,
|
|
),
|
|
userRules = BaseQigPolicy.userRules ++ Seq(
|
|
AbusiveRule,
|
|
LowQualityRule,
|
|
CompromisedRule,
|
|
ViewerBlocksAuthorViewerOptInBlockingOnSearchRule,
|
|
ViewerMutesAuthorViewerOptInBlockingOnSearchRule,
|
|
DropNsfwAdminAuthorViewerOptInFilteringOnSearchRule,
|
|
NsfwNearPerfectAuthorRule
|
|
)
|
|
)
|
|
|
|
case object ShoppingManagerSpyModePolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = Seq(
|
|
DropAllRule
|
|
),
|
|
userRules = Seq(
|
|
SuspendedAuthorRule,
|
|
DeactivatedAuthorRule,
|
|
ErasedAuthorRule,
|
|
OffboardedAuthorRule
|
|
)
|
|
)
|
|
|
|
case object ZipbirdConsumerArchivesPolicy
|
|
extends VisibilityPolicy(
|
|
tweetRules = VisibilityPolicy.baseTweetTombstoneRules,
|
|
userRules = Seq(
|
|
AuthorBlocksViewerDropRule,
|
|
ProtectedAuthorDropRule,
|
|
SuspendedAuthorRule,
|
|
),
|
|
userUnavailableStateRules = Seq(
|
|
AuthorBlocksViewerUserUnavailableTweetTombstoneRule,
|
|
ProtectedUserUnavailableTweetTombstoneRule,
|
|
SuspendedUserUnavailableTweetTombstoneRule,
|
|
),
|
|
deletedTweetRules = Seq(
|
|
TombstoneDeletedTweetRule,
|
|
TombstoneBounceDeletedTweetRule,
|
|
)
|
|
)
|
|
|
|
case class MixedVisibilityPolicy(
|
|
originalPolicy: VisibilityPolicy,
|
|
additionalTweetRules: Seq[Rule])
|
|
extends VisibilityPolicy(
|
|
tweetRules = (additionalTweetRules ++ originalPolicy.tweetRules)
|
|
.sortWith(_.actionBuilder.actionSeverity > _.actionBuilder.actionSeverity),
|
|
userRules = originalPolicy.userRules,
|
|
cardRules = originalPolicy.cardRules,
|
|
quotedTweetRules = originalPolicy.quotedTweetRules,
|
|
dmRules = originalPolicy.dmRules,
|
|
dmConversationRules = originalPolicy.dmConversationRules,
|
|
dmEventRules = originalPolicy.dmEventRules,
|
|
spaceRules = originalPolicy.spaceRules,
|
|
userUnavailableStateRules = originalPolicy.userUnavailableStateRules,
|
|
twitterArticleRules = originalPolicy.twitterArticleRules,
|
|
deletedTweetRules = originalPolicy.deletedTweetRules,
|
|
mediaRules = originalPolicy.mediaRules,
|
|
communityRules = originalPolicy.communityRules,
|
|
policyRuleParams = originalPolicy.policyRuleParams
|
|
)
|
|
|
|
case object TweetAwardPolicy
|
|
extends VisibilityPolicy(
|
|
userRules = Seq.empty,
|
|
tweetRules =
|
|
VisibilityPolicy.baseTweetRules ++ Seq(
|
|
EmergencyDropRule,
|
|
NsfwHighPrecisionTweetLabelRule,
|
|
NsfwHighRecallTweetLabelRule,
|
|
NsfwReportedHeuristicsTweetLabelRule,
|
|
NsfwCardImageTweetLabelRule,
|
|
NsfwVideoTweetLabelDropRule,
|
|
NsfwTextTweetLabelDropRule,
|
|
GoreAndViolenceHighPrecisionTweetLabelRule,
|
|
GoreAndViolenceReportedHeuristicsTweetLabelRule,
|
|
GoreAndViolenceTweetLabelRule,
|
|
AbusePolicyEpisodicTweetLabelDropRule,
|
|
AbusiveTweetLabelRule,
|
|
BystanderAbusiveTweetLabelRule
|
|
)
|
|
)
|