Event taxonomy

Each Refract event describes what changed at a revision boundary. Events are deterministic — the same input always produces the same output.

Claim lifecycle

| Event type | Trigger | Example | |---|---|---|---| | sentence_first_seen | New sentence text appears | A sentence about a company appears for the first time | | sentence_removed | Existing sentence deleted entirely | A controversial paragraph is removed | | sentence_modified | Same sentence text changed (similarity threshold match) | Sentence rewording detected by word-overlap ratio | | sentence_reintroduced | Previously removed sentence returns | A deleted sentence is restored in a later edit |

Citation changes

Event type Trigger
citation_added New <ref> tag added
citation_removed Existing <ref> tag removed
citation_replaced One citation swapped for another in the same position

Template changes

Event type Trigger
template_added New {{template}} added (e.g., {{citation needed}}, {{NPOV}})
template_removed Template removed
template_parameter_changed Template parameters modified (e.g., date updated on a maintenance tag)

Section and page structure

Event type Trigger
section_reorganized Sections added, removed, or reordered
lead_promotion Content moves from body into the lead section
lead_demotion Content moves from lead into the body
page_moved Page renamed (detected via logevents API)

Links and categories

Event type Trigger
wikilink_added New [[internal link]] added
wikilink_removed Internal link removed
category_added New [[Category:...]] added
category_removed Category removed

Content conflict

Event type Trigger
revert_detected Edit summary matches revert pattern (e.g., "revert", "rv", "undo")
edit_cluster_detected 3+ edits within a configurable time window (default: 1 hour)

Talk page activity

Event type Trigger
talk_page_correlated Article revision has a nearby talk page revision (default: 7 days before, 3 days after)
talk_thread_opened New discussion thread created on talk page
talk_thread_archived Thread closed/archived
talk_reply_added Reply posted in an existing thread
talk_activity_spike Talk page edits exceed 3x the moving average on a given day

Access control

Event type Trigger
protection_changed Page protection level changed (protect, unprotect, modify)

Event envelope

All events share a common structure:

interface EvidenceEvent {
  eventType: EventType;       // one of the types above
  fromRevisionId: number;     // parent revision
  toRevisionId: number;       // revision where the change occurred
  section: string;            // section name
  before: string;             // text/state before
  after: string;              // text/state after
  deterministicFacts: DeterministicFact[]; // why this event was produced
  layer: EvidenceLayer;       // observed, policy_coded, model_interpretation, speculative, unknown
  timestamp: string;          // ISO 8601
}