content-ruleset.yml
1 ruleset_id: moderation 2 version: "7" 3 ruleset_type: moderation 4 source_spec: poc-spec-v7 5 name: POC Spec v7 Moderation Ruleset 6 description: Deterministic and probabilistic moderation rules (spam, abuse, security). 7 rules: 8 - id: D-TRUST-01 9 type: moderation 10 output: binary 11 command: node /rules/scripts/D-TRUST-01.js 12 requirements: [] 13 name: submitter signature valid 14 description: Reject if submitter signature is invalid or missing. 15 spec_ref: 8.1.3 16 - id: D-TRUST-02 17 type: moderation 18 output: binary 19 command: node /rules/scripts/D-TRUST-02.js 20 requirements: [] 21 name: submitter not banned 22 description: Reject if submitter is on a signed banlist. 23 spec_ref: 8.1.3 24 - id: D-TRUST-03 25 type: moderation 26 output: binary 27 command: node /rules/scripts/D-TRUST-03.js 28 requirements: [] 29 name: already accepted 30 description: Reject duplicate entries already accepted. 31 spec_ref: 8.1.3 32 - id: D-TRUST-04 33 type: moderation 34 output: binary 35 command: node /rules/scripts/D-TRUST-04.js 36 requirements: [] 37 name: already rejected 38 description: Reject entries already rejected by quorum. 39 spec_ref: 8.1.3 40 - id: D-TRUST-05 41 type: moderation 42 output: binary 43 command: node /rules/scripts/D-TRUST-05.js 44 requirements: [] 45 name: anti replay 46 description: Reject replays with identical nonce and payload. 47 spec_ref: 8.1.3 48 - id: D-TRUST-06 49 type: moderation 50 output: binary 51 command: node /rules/scripts/D-TRUST-06.js 52 requirements: [] 53 name: appeal in progress 54 description: Quarantine entries with an active appeal flag. 55 spec_ref: 8.1.3 56 - id: D-TRUST-07 57 type: moderation 58 output: binary 59 command: node /rules/scripts/D-TRUST-07.js 60 requirements: [] 61 name: signed report present 62 description: Reject or flag if a signed report exists for the infohash. 63 spec_ref: 8.1.3 64 - id: D-CONTENT-01 65 type: moderation 66 output: binary 67 command: node /rules/scripts/D-CONTENT-01.js 68 requirements: [] 69 name: blocked hash 70 description: Reject if infohash matches a blocked list. 71 spec_ref: 8.1.4 72 - id: D-CONTENT-02 73 type: moderation 74 output: binary 75 command: node /rules/scripts/D-CONTENT-02.js 76 requirements: [] 77 name: malware signatures 78 description: Reject if file hashes match known malware. 79 spec_ref: 8.1.4 80 - id: D-CONTENT-03 81 type: moderation 82 output: binary 83 command: node /rules/scripts/D-CONTENT-03.js 84 requirements: [] 85 name: illegal content hashes 86 description: Reject if infohash matches illegal content lists. 87 spec_ref: 8.1.4 88 - id: D-CONTENT-04 89 type: moderation 90 output: binary 91 command: node /rules/scripts/D-CONTENT-04.js 92 requirements: [] 93 name: content rating required 94 description: Reject or quarantine if required rating is missing. 95 spec_ref: 8.1.4 96 - id: D-CONTENT-05 97 type: moderation 98 output: binary 99 command: node /rules/scripts/D-CONTENT-05.js 100 requirements: [] 101 name: relay SFW only 102 description: Reject NSFW content on SFW-only relays. 103 spec_ref: 8.1.4 104 - id: D-CONTENT-06 105 type: moderation 106 output: binary 107 command: node /rules/scripts/D-CONTENT-06.js 108 requirements: [] 109 name: personal data detected 110 description: Reject or flag if personal data appears in text fields. 111 spec_ref: 8.1.4 112 - id: D-KW-01 113 type: moderation 114 output: binary 115 command: node /rules/scripts/D-KW-01.js 116 requirements: [] 117 name: blacklist keyword match 118 description: Reject on exact keyword match after normalization. 119 spec_ref: 8.1.5 120 - id: D-KW-02 121 type: moderation 122 output: binary 123 command: node /rules/scripts/D-KW-02.js 124 requirements: [] 125 name: homoglyph variants 126 description: Reject on homoglyph keyword variants. 127 spec_ref: 8.1.5 128 - id: D-KW-03 129 type: moderation 130 output: binary 131 command: node /rules/scripts/D-KW-03.js 132 requirements: [] 133 name: URL pattern 134 description: Reject or flag if URLs are forbidden in title or description. 135 spec_ref: 8.1.5 136 - id: D-KW-04 137 type: moderation 138 output: binary 139 command: node /rules/scripts/D-KW-04.js 140 requirements: [] 141 name: deterministic spam pattern 142 description: Reject on deterministic spam patterns and tag stuffing. 143 spec_ref: 8.1.5 144 - id: D-ABUSE-01 145 type: moderation 146 output: binary 147 command: node /rules/scripts/D-ABUSE-01.js 148 requirements: [] 149 name: rate limit 150 description: Reject when submitter exceeds rate limits. 151 spec_ref: 8.1.7 152 - id: D-ABUSE-02 153 type: moderation 154 output: binary 155 command: node /rules/scripts/D-ABUSE-02.js 156 requirements: [] 157 name: proof of work 158 description: Reject when required proof of work is missing. 159 spec_ref: 8.1.7 160 - id: D-ABUSE-03 161 type: moderation 162 output: binary 163 command: node /rules/scripts/D-ABUSE-03.js 164 requirements: [] 165 name: anti sybil 166 description: Quarantine when reputation or stake requirements fail. 167 spec_ref: 8.1.7 168 - id: D-NET-05 169 type: moderation 170 output: binary 171 command: node /rules/scripts/D-NET-05.js 172 requirements: [] 173 name: poisoning detected 174 description: Reject when invalid pieces are served by peers. 175 spec_ref: 8.1.2 176 - id: P-NSFW-01 177 type: moderation 178 output: probability 179 command: node /rules/scripts/P-NSFW-01.js 180 requirements: [] 181 name: nsfw text score 182 description: Probability score from title and description. 183 spec_ref: 8.1.6 184 - id: P-NSFW-02 185 type: moderation 186 output: probability 187 command: node /rules/scripts/P-NSFW-02.js 188 requirements: [] 189 name: nsfw media score 190 description: Probability score from media samples. 191 spec_ref: 8.1.6 192 - id: P-SPAM-01 193 type: moderation 194 output: probability 195 command: node /rules/scripts/P-SPAM-01.js 196 requirements: [] 197 name: spam score 198 description: Probability of spam patterns and marketing text. 199 spec_ref: 8.1.6 200 - id: P-SCAM-01 201 type: moderation 202 output: probability 203 command: node /rules/scripts/P-SCAM-01.js 204 requirements: [] 205 name: scam score 206 description: Probability of scam or phishing patterns. 207 spec_ref: 8.1.6 208 - id: P-MALWARE-01 209 type: moderation 210 output: probability 211 command: node /rules/scripts/P-MALWARE-01.js 212 requirements: [] 213 name: malware score 214 description: Probability of malware based on heuristics. 215 spec_ref: 8.1.6 216 - id: P-COPYRIGHT-01 217 type: moderation 218 output: probability 219 command: node /rules/scripts/P-COPYRIGHT-01.js 220 requirements: [] 221 name: copyright risk 222 description: Probability of copyright infringement risk. 223 spec_ref: 8.1.6 224 - id: P-HATE-01 225 type: moderation 226 output: probability 227 command: node /rules/scripts/P-HATE-01.js 228 requirements: [] 229 name: hate or harassment 230 description: Probability of hate or harassment content. 231 spec_ref: 8.1.6 232 - id: P-PRIVACY-01 233 type: moderation 234 output: probability 235 command: node /rules/scripts/P-PRIVACY-01.js 236 requirements: [] 237 name: personal data probability 238 description: Probability of personal data exposure. 239 spec_ref: 8.1.6 240 - id: P-EVASION-01 241 type: moderation 242 output: probability 243 command: node /rules/scripts/P-EVASION-01.js 244 requirements: [] 245 name: evasion score 246 description: Probability of obfuscation or leet variants. 247 spec_ref: 8.1.6 248 - id: P-REPUT-01 249 type: moderation 250 output: probability 251 command: node /rules/scripts/P-REPUT-01.js 252 requirements: [] 253 name: bad actor reputation 254 description: Probability score based on submitter reputation. 255 spec_ref: 8.1.6 256 - id: P-NET-02 257 type: moderation 258 output: probability 259 command: node /rules/scripts/P-NET-02.js 260 requirements: [] 261 name: poisoning risk 262 description: Probability score of poisoning attempts on peers. 263 spec_ref: 8.1.2 264 - id: P-ABUSE-01 265 type: moderation 266 output: probability 267 command: node /rules/scripts/P-ABUSE-01.js 268 requirements: [] 269 name: spray attack score 270 description: Probability of mass submission or spray attacks. 271 spec_ref: 8.1.7 272 - id: P-ABUSE-02 273 type: moderation 274 output: probability 275 command: node /rules/scripts/P-ABUSE-02.js 276 requirements: [] 277 name: brigading score 278 description: Probability of coordinated curator brigading. 279 spec_ref: 8.1.7 280 # Fake and Honeypot Detection Rules 281 - id: D-FAKE-01 282 type: moderation 283 output: binary 284 command: node /rules/scripts/D-FAKE-01.js 285 requirements: [] 286 name: honeypot detection 287 description: Reject known honeypot or fake infohashes from tracker databases. 288 spec_ref: 8.1.8 289 - id: D-FAKE-02 290 type: moderation 291 output: binary 292 command: node /rules/scripts/D-FAKE-02.js 293 requirements: [] 294 name: size mismatch 295 description: Reject when claimed size drastically differs from actual. 296 spec_ref: 8.1.8 297 - id: D-FAKE-03 298 type: moderation 299 output: binary 300 command: node /rules/scripts/D-FAKE-03.js 301 requirements: [] 302 name: password protected trap 303 description: Reject when archives require password not disclosed. 304 spec_ref: 8.1.8 305 # Release Validation Rules 306 - id: D-RELEASE-01 307 type: moderation 308 output: binary 309 command: node /rules/scripts/D-RELEASE-01.js 310 requirements: [] 311 name: release group validation 312 description: Validate release group against known scene or p2p groups. 313 spec_ref: 8.1.9 314 - id: D-RELEASE-02 315 type: moderation 316 output: binary 317 command: node /rules/scripts/D-RELEASE-02.js 318 requirements: [] 319 name: pre-time validation 320 description: Flag when release appears before official availability. 321 spec_ref: 8.1.9 322 - id: D-RELEASE-03 323 type: moderation 324 output: binary 325 command: node /rules/scripts/D-RELEASE-03.js 326 requirements: [] 327 name: nuke status check 328 description: Reject releases marked as nuked in scene databases. 329 spec_ref: 8.1.9 330 # Tracking Detection Rules 331 - id: D-TRACK-01 332 type: moderation 333 output: binary 334 command: node /rules/scripts/D-TRACK-01.js 335 requirements: [] 336 name: tracking pixel detection 337 description: Reject when content contains known tracking mechanisms. 338 spec_ref: 8.1.10 339 - id: D-TRACK-02 340 type: moderation 341 output: binary 342 command: node /rules/scripts/D-TRACK-02.js 343 requirements: [] 344 name: watermark detection 345 description: Flag when content has identifying watermarks. 346 spec_ref: 8.1.10 347 # Language and Metadata Rules 348 - id: D-LANG-01 349 type: moderation 350 output: binary 351 command: node /rules/scripts/D-LANG-01.js 352 requirements: [] 353 name: language mismatch 354 description: Reject when claimed language does not match content. 355 spec_ref: 8.1.11 356 # Duplicate Detection Rules 357 - id: D-DUP-01 358 type: moderation 359 output: binary 360 command: node /rules/scripts/D-DUP-01.js 361 requirements: [] 362 name: cross-hash duplicate 363 description: Reject when content duplicates existing entry with different hash. 364 spec_ref: 8.1.12 365 # Age Restriction Rules 366 - id: D-AGE-01 367 type: moderation 368 output: binary 369 command: node /rules/scripts/D-AGE-01.js 370 requirements: [] 371 name: age-restricted verification 372 description: Require age tags for adult content categories. 373 spec_ref: 8.1.13 374 # Takedown Compliance Rules 375 - id: D-DMCA-01 376 type: moderation 377 output: binary 378 command: node /rules/scripts/D-DMCA-01.js 379 requirements: [] 380 name: takedown compliance 381 description: Reject infohashes with pending DMCA or takedown notices. 382 spec_ref: 8.1.14 383 # Probabilistic Content Rules 384 - id: P-FAKE-01 385 type: moderation 386 output: probability 387 command: node /rules/scripts/P-FAKE-01.js 388 requirements: [] 389 name: fake probability 390 description: Probability of being fake based on uploader history and metadata. 391 spec_ref: 8.1.8 392 - id: P-RELEASE-01 393 type: moderation 394 output: probability 395 command: node /rules/scripts/P-RELEASE-01.js 396 requirements: [] 397 name: release legitimacy 398 description: Probability of being legitimate release vs repack or fake. 399 spec_ref: 8.1.9 400 - id: P-TRACK-01 401 type: moderation 402 output: probability 403 command: node /rules/scripts/P-TRACK-01.js 404 requirements: [] 405 name: tracking risk 406 description: Probability of containing tracking or fingerprinting. 407 spec_ref: 8.1.10 408 - id: P-FRESH-01 409 type: moderation 410 output: probability 411 command: node /rules/scripts/P-FRESH-01.js 412 requirements: [] 413 name: freshness score 414 description: Probability content is current and maintained vs abandoned. 415 spec_ref: 8.1.15