User:Triona/grafittispotter

Description
grafittispotter is a proposed countervandalism bot that will scan the content of article changes.

This is a preliminary design document.

Purpose
graffittispotter will be designed to aid in the rapid identification of vandalism.

Workflow
This is intended to be a score based system. Each test applies a modifier to a total score, and if the score from a single test exceeds that test's thresholds, adds a message to a list of warnings for that edit. If the final score exceeds warning thresholds, the edit is reported as possible vandalism with either the top three tests that flagged the edit, or all the tests that passed their individual test thresholds.


 * 1) reputation check - apply user reputation scores - if whitelist threshold met, skip further tests (aol ips, shared ips, and suspected proxies also identified at this step)
 * 2) Retrieve changed article.
 * 3) Retrieve original article.
 * 4) Retrieve user's talk page.
 * 5) Retrieve special rules applying to article. (for example, some keywords may be ok in a limited number of articles - "fuck" is allowed within fuck also, certian articles are vandalism magnets).
 * 6) probation check - is user obviously violating probation (editing articles they are banned from)?
 * 7) account age check - if an established account, check to see how old the account is and how many edits made.
 * 8) content deletion check - was signifigant material removed
 * 9) vocabulary check - is the vocabulary used in both old and new version consistant?
 * 10) repetition check - are there repeated words or phrases?
 * 11) badword check - are there known vandal words present?
 * 12) badphrase check - are there known vandal phrases?
 * 13) bayesian check - is the diff similar to known vandalism diffs?
 * 14) regexp check - are there matches against vandal regexp database?
 * 15) summary check - is the summary blank? does the summary contain offensive language?
 * 16) revert check - is the edit a clear revert, and is the user's reputation consistant with legitimate reverts.
 * 17) report phase - have the clear vandalism thresholds been reached?
 * 18) reputation update phase - update the user's reputatation if they are not clearly whitelisted or blacklisted and they have crossed the suspicious threshold. Also, decrease the previous editor's reputation if the edit is a revert by a sufficiently trusted user.

Possible Reputation Classes
Reputation clasess would help to establish a "base score" for the edit, and optionally, would turn some tests on or off for improved performance


 * Hard Whitelist - User has been manually whitelisted.
 * Admin Whitelist - User is an admin and isn't on any of the watchlists
 * Established Contributor - Registered User with a signifigant number of non-vandalism edits
 * Probation - User is on probation, and therefore tests can't be skipped
 * Normal - Registered users with no signifigant history
 * IP - unregistered users
 * Autowatched - users automatically added to watchlist because of their edit histories or warnings on their talk page.
 * Watched Normal - registered users with a manually-set watch flag
 * Watched IP - unregistered users with a manually-set watch flag
 * Watched Shared - Shared IP, could be legitimate or
 * Blacklisted - Users manually flagged for a History of abuse