Voyager 1's second filter (D42) for voyager 2. Hourly, in order (the first rule wins): dead (every probed first article gone), fake (a film, episode or music name whose content is a program: archive entries all executables, or the file itself by name or sniffed exe), repeated (the same first 16 KiB and size in 20+ releases), locked (passworded, no password known), unusable (random names, no inner name, no merge, no spot, a day after settling). Verdicts in release_verdicts (rule, version) hide releases from search (judged shows them); a verdict whose rule no longer matches is taken back. Nothing dropped yet. Service judge; releases:judge --once --dry counts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
25 lines
918 B
TypeScript
25 lines
918 B
TypeScript
import { BaseSchema } from '@adonisjs/lucid/schema'
|
|
|
|
/**
|
|
* The junk judge's verdicts (app/services/release_judge.ts): per release the rule that judged it, after its
|
|
* probes, and the rule set's version. Search leaves judged releases out. Hidden only for now (nothing dropped):
|
|
* a verdict whose rule no longer matches (a password found, a spot linked) is taken back by the next round.
|
|
*/
|
|
export default class extends BaseSchema {
|
|
async up() {
|
|
this.schema.raw(`
|
|
CREATE TABLE release_verdicts (
|
|
release_id bigint PRIMARY KEY,
|
|
rule varchar(16) NOT NULL,
|
|
verdict varchar(8) NOT NULL DEFAULT 'hidden',
|
|
rule_version integer NOT NULL,
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
|
)`)
|
|
this.schema.raw(`CREATE INDEX release_verdicts_rule_idx ON release_verdicts (rule)`)
|
|
}
|
|
|
|
async down() {
|
|
this.schema.raw(`DROP TABLE IF EXISTS release_verdicts`)
|
|
}
|
|
}
|