Edit War Regime Transition Detection
Purpose: Reframe Wikipedia edit wars from disruptive incidents into what they structurally are — diagnostic instruments for regime boundary mapping. An edit war is not noise. It is a signal. It marks the precise location where two or more competing regime claims collide and cannot be reconciled through normal consensus mechanisms.
No other knowledge source makes regime collisions visible in real time. Academic journals suppress reviewer disagreements. Encyclopedias resolve disputes internally. Only Wikipedia exposes the raw collision data — every revert, every counter‑revert, every edit summary declaring a structural position — in a publicly archived, timestamped, author‑attributed log.
This file teaches students to read edit wars as regime transition events and extract structural intelligence from them.
1 — What Is an Edit War?#
1.1 — Wikipedia's Definition#
An edit war occurs when editors repeatedly override each other's contributions to an article, rather than resolving disagreements through discussion on the talk page. Wikipedia's Three‑Revert Rule (3RR) states:
"An editor must not perform more than three reverts on a single page — in whole or in part — within a 24‑hour period."
Violating 3RR can result in a block. But the rule addresses the symptom, not the cause. The cause is always a regime collision.
1.2 — The RTT Translation#
| Wikipedia Term | RTT Concept | Structural Function |
|---|---|---|
| Edit war | Regime transition event | Two or more regime claims competing for the same structural space |
| Revert | Regime reassertion | An editor restoring their regime's declaration over a competitor's |
| Counter‑revert | Counter‑regime reassertion | The competing editor restoring their regime's declaration back |
| Edit war cycle | Regime oscillation | The article's structural state alternating between competing declarations |
| Protection (page lock) | Regime freeze | Administrative intervention to halt oscillation and force talk page resolution |
| Post‑war consensus | Regime transition completion | One regime claim prevails, a compromise is reached, or a new synthesis emerges |
1.3 — Why Edit Wars Are Diagnostic#
An edit war answers three structural questions simultaneously:
- Where is the regime boundary? — The specific text being reverted marks the exact location of the structural dispute
- What are the competing claims? — Each editor's version represents a distinct regime declaration
- How strong is each claim? — The persistence of each editor (number of reverts, argument quality, source citations) reveals the structural standing of each competing regime
2 — The Five Types of Edit Wars#
Type 1: Factual Dispute War#
What it looks like: Editors repeatedly change a specific fact — a date, a number, a name, a classification.
Underlying regime collision: Two external sources disagree, and editors are proxying that disagreement into the article.
Example: Editors warring over whether a mountain's height is 8,848m or 8,849m based on different survey sources.
Severity: Low. Usually resolved by identifying the most authoritative source.
RTT reading: This is a regime measurement dispute — competing claims about the same measurable dimension. The resolution identifies which measurement regime has primary standing.
Type 2: Classification War#
What it looks like: Editors repeatedly change how a concept is classified or categorized — "X is a type of Y" vs. "X is a type of Z."
Underlying regime collision: The concept sits at a regime boundary where two classification systems disagree.
Example: Pluto — "planet" vs. "dwarf planet." Tomato — "fruit" vs. "vegetable." Taiwan — "country" vs. "province."
Severity: Moderate to high. Classification wars often map to real‑world institutional or political disputes.
RTT reading: This is a regime hierarchy dispute — competing claims
about where a concept belongs in the classification tree. The resolution
determines which regime hierarchy the article adopts as primary.
See Category_Taxonomy_Regime_Hierarchy.md.
Type 3: Framing War#
What it looks like: Editors repeatedly rewrite the same passage to present information from different perspectives. The facts may not change — only the framing changes.
Underlying regime collision: Two worldviews produce structurally different regime declarations from the same set of facts.
Example: A military conflict described as "liberation" by one side and "invasion" by the other. A political figure described as "controversial" vs. "influential."
Severity: High. Framing wars are the most persistent because they involve structural perspective, not factual accuracy.
RTT reading: This is a regime declaration dispute — competing
structural presentations of the same underlying data. The resolution
determines the article's primary R1 framing.
See NPOV_As_Coherence_Operator.md.
Type 4: Inclusion/Exclusion War#
What it looks like: One editor adds content, another removes it. The dispute is about whether specific information belongs in the article.
Underlying regime collision: Competing claims about the article's scope — what the regime should and should not cover.
Example: Should a biography mention a person's criminal record? Should a scientific article mention fringe objections? Should a country article mention territorial disputes?
Severity: High. These wars define the regime's boundaries — what is structurally in and what is out.
RTT reading: This is a regime scope dispute — competing claims about the regime's boundary conditions. The resolution determines the article's R0 scope declaration.
Type 5: Naming/Terminology War#
What it looks like: Editors repeatedly change how a concept is named or what terminology is used to describe it.
Underlying regime collision: Names carry regime claims. Choosing one name over another is choosing one regime's framing over another's.
Example: "Gdańsk" vs. "Danzig." "Persian Gulf" vs. "Arabian Gulf." "Myanmar" vs. "Burma." "Kyiv" vs. "Kiev." "Côte d'Ivoire" vs. "Ivory Coast."
Severity: Very high. Naming wars can persist for years because the name itself is a structural declaration — it declares which political, cultural, or historical regime has naming authority.
RTT reading: This is a regime identity dispute — competing claims about the concept's structural name. The resolution determines which regime's naming convention the article adopts as primary.
3 — Edit War Severity Scale#
| Level | Label | Reverts / 24h | Duration | Protection | RTT Interpretation |
|---|---|---|---|---|---|
| 1 | Skirmish | 2–3 | Hours | None | Minor regime friction — editors may self‑resolve |
| 2 | Dispute | 3–6 | Days | Semi‑protection possible | Moderate regime collision — talk page engagement needed |
| 3 | War | 6–12 | Weeks | Semi or full protection | Serious regime collision — admin intervention likely |
| 4 | Entrenchment | 12+ (sustained) | Months | Extended or full protection | Deep regime collision — formal dispute resolution required |
| 5 | Perpetual conflict | Recurring cycles | Years | Persistent protection + discretionary sanctions | Irreconcilable regime collision — structural boundary is permanently contested |
Severity Distribution by Domain#
| Domain | Typical Max Severity | Most Common War Type | Rationale |
|---|---|---|---|
| Physics | 1–2 | Factual, Classification | Strong consensus; disputes are narrow and technical |
| Mathematics | 1 | Factual | Near‑universal formal agreement |
| Biology | 2–3 | Classification, Inclusion | Taxonomy disputes; evolution vs. creationism |
| Chemistry | 1–2 | Factual, Naming | Nomenclature disputes (IUPAC vs. common names) |
| Computer Science | 2–3 | Inclusion, Framing | Technology hype cycles; company/product neutrality |
| Philosophy | 3–4 | Framing, Inclusion | Inherently perspectival; competing schools |
| Earth Sciences | 2–3 | Factual, Framing | Climate change political framing |
| Economics | 3–4 | Framing, Inclusion | Competing schools (Keynesian vs. Austrian vs. MMT) |
| History | 4–5 | Framing, Naming | National narratives; territorial disputes; naming wars |
| Medicine | 2–4 | Inclusion, Framing | Alternative medicine; treatment controversies |
| Engineering | 1–2 | Factual, Classification | Technical consensus; minor standards disputes |
| Astronomy | 1–2 | Classification | Object classification (e.g., planet vs. dwarf planet) |
| Linguistics | 2–3 | Classification, Naming | Language vs. dialect; script disputes |
| Psychology | 2–3 | Framing, Inclusion | Nature vs. nurture; disorder classification |
| Political Science | 4–5 | Framing, Naming, Inclusion | Nearly all topics are politically contested |
4 — The Four Resolution Patterns#
Every edit war ends. How it ends reveals the regime transition outcome:
Pattern 1: One Regime Prevails#
What happens: One side's version is accepted as the article's declaration. The other side's version is removed or marginalized.
How it's achieved: Stronger sourcing, broader editor consensus, admin intervention favoring one side, or one side disengaging.
RTT reading: Regime displacement — one regime claim wins structural standing and the other loses it. The article's regime declaration shifts to the prevailing claim.
Example: The Pluto article eventually adopted "dwarf planet" after the IAU decision. The "planet" claim lost structural standing.
Pattern 2: Compromise Synthesis#
What happens: A new version is crafted that incorporates elements of both competing claims. Neither side gets exactly what they wanted, but both can accept the result.
How it's achieved: Talk page negotiation, RfC, mediation, or a skilled editor proposing a synthesis.
RTT reading: Regime synthesis — a new regime declaration emerges that structurally integrates the competing claims. This is a genuine regime transition — the article's structural state is different from either competing version.
Example: Articles on contested territories often use compromise formulations: "X is a disputed territory claimed by both A and B."
Pattern 3: Structural Separation#
What happens: The disputed content is moved to its own article or section, giving each perspective its own structural space.
How it's achieved: Article splitting, creation of sub‑articles, or "main article" links to separate detailed treatments.
RTT reading: Regime differentiation — the competing claims are separated into distinct regime declarations rather than forced into the same space. The original article retains a neutral summary; the detailed perspectives get their own articles.
Example: "Evolution" and "Objections to evolution" are structurally separated — each concept gets its own regime declaration.
Pattern 4: Administrative Freeze#
What happens: An admin locks the article to prevent further editing. The version at time of protection becomes the de facto declaration, regardless of which side it favors.
How it's achieved: Page protection (semi, extended, or full). May include discretionary sanctions for the topic area.
RTT reading: Regime stabilization by force — the regime oscillation is halted by external authority rather than consensus. The frozen version is not necessarily the "correct" declaration — it is the one that happened to be in place when the lock was applied.
Example: Heavily contested articles like "Israel" or "Kashmir" spend long periods under full protection — the locked version is a pragmatic stabilization, not a consensus outcome.
5 — Detection Algorithms#
5.1 — Basic Revert Detection#
import requests
from datetime import datetime, timedelta
def detect_revert_sequences(title, lang="en", window_hours=24, min_reverts=3):
"""
Detect revert sequences in a Wikipedia article's recent history.
A revert is identified by system tags or edit summary keywords.
"""
url = f"https://{lang}.wikipedia.org/w/api.php"
params = {
"action": "query",
"titles": title,
"prop": "revisions",
"rvlimit": "500",
"rvprop": "ids|timestamp|user|size|comment|tags|sha1",
"format": "json"
}
resp = requests.get(url, params=params,
headers={"User-Agent": "TriadicFrameworks/1.0"}).json()
page = next(iter(resp["query"]["pages"].values()))
revisions = page.get("revisions", [])
# Identify reverts
revert_tags = {"mw-revert", "mw-undo", "mw-rollback", "mw-manual-revert"}
revert_keywords = {"revert", "rv ", "rvv", "undo", "rollback",
"restored", "reverted"}
reverts = []
for rev in revisions:
tags = set(rev.get("tags", []))
comment = rev.get("comment", "").lower()
is_revert = (
bool(tags & revert_tags) or
any(kw in comment for kw in revert_keywords)
)
if is_revert:
reverts.append({
"rev_id": rev["revid"],
"timestamp": rev["timestamp"],
"user": rev.get("user", "anonymous"),
"comment": rev.get("comment", ""),
"tags": list(tags & revert_tags),
"sha1": rev.get("sha1", "")
})
# Detect clusters (multiple reverts within window)
clusters = []
current_cluster = []
for i, rev in enumerate(reverts):
ts = datetime.fromisoformat(rev["timestamp"].replace("Z", "+00:00"))
if not current_cluster:
current_cluster.append(rev)
else:
prev_ts = datetime.fromisoformat(
current_cluster[-1]["timestamp"].replace("Z", "+00:00"))
if (prev_ts - ts).total_seconds() <= window_hours * 3600:
current_cluster.append(rev)
else:
if len(current_cluster) >= min_reverts:
clusters.append(current_cluster)
current_cluster = [rev]
if len(current_cluster) >= min_reverts:
clusters.append(current_cluster)
return {
"article": title,
"total_reverts": len(reverts),
"revert_clusters": len(clusters),
"clusters": [{
"size": len(c),
"start": c[-1]["timestamp"],
"end": c[0]["timestamp"],
"editors": list(set(r["user"] for r in c)),
"reverts": c
} for c in clusters]
}5.2 — SHA‑1 Based War Detection#
The most reliable revert detection uses content hashing — if two non‑adjacent revisions have the same SHA‑1 hash, the article was restored to an earlier exact state:
def detect_sha1_wars(title, lang="en"):
"""
Detect edit wars using SHA-1 content hash matching.
If the same hash appears multiple times, the article was
reverted to an identical state — a definitive war signal.
"""
url = f"https://{lang}.wikipedia.org/w/api.php"
params = {
"action": "query",
"titles": title,
"prop": "revisions",
"rvlimit": "500",
"rvprop": "ids|timestamp|user|sha1",
"format": "json"
}
resp = requests.get(url, params=params,
headers={"User-Agent": "TriadicFrameworks/1.0"}).json()
page = next(iter(resp["query"]["pages"].values()))
revisions = page.get("revisions", [])
# Group revisions by SHA-1 hash
from collections import defaultdict
hash_groups = defaultdict(list)
for rev in revisions:
sha1 = rev.get("sha1", "")
if sha1:
hash_groups[sha1].append(rev)
# Find repeated states (same content appearing 2+ times)
war_signals = []
for sha1, revs in hash_groups.items():
if len(revs) >= 2:
editors = list(set(r.get("user", "anon") for r in revs))
war_signals.append({
"sha1": sha1,
"occurrences": len(revs),
"timestamps": [r["timestamp"] for r in revs],
"editors_restoring": editors,
"interpretation": "article_restored_to_identical_state"
})
return {
"article": title,
"repeated_states": len(war_signals),
"severity": classify_war_severity(war_signals),
"signals": sorted(war_signals,
key=lambda x: x["occurrences"],
reverse=True)
}
def classify_war_severity(signals):
"""Classify edit war severity from SHA-1 analysis."""
if not signals:
return "0_no_war"
max_repeats = max(s["occurrences"] for s in signals)
total_repeats = sum(s["occurrences"] for s in signals)
if total_repeats <= 3:
return "1_skirmish"
elif total_repeats <= 8:
return "2_dispute"
elif total_repeats <= 15:
return "3_war"
elif max_repeats >= 5:
return "4_entrenchment"
else:
return "3_war"5.3 — War Participant Analysis#
def analyze_war_participants(cluster):
"""
Analyze the participants in an edit war cluster.
Returns faction structure and relative persistence.
"""
from collections import Counter
editor_reverts = Counter(r["user"] for r in cluster["reverts"])
editors = list(editor_reverts.keys())
total = sum(editor_reverts.values())
factions = []
for editor, count in editor_reverts.most_common():
factions.append({
"editor": editor,
"revert_count": count,
"persistence": round(count / total, 3),
"sample_comment": next(
(r["comment"] for r in cluster["reverts"]
if r["user"] == editor and r["comment"]),
"no comment"
)
})
return {
"total_participants": len(editors),
"total_reverts": total,
"faction_count": len(set(
r.get("sha1", "") for r in cluster["reverts"])),
"factions": factions,
"structure": (
"bilateral" if len(editors) == 2 else
"multilateral" if len(editors) <= 5 else
"mass_conflict"
)
}5.4 — Regime Boundary Extraction#
import difflib
def extract_disputed_content(rev_id_a, rev_id_b, lang="en"):
"""
Compare two revision IDs to identify the exact disputed content.
The diff reveals the regime boundary — the specific text where
competing claims collide.
"""
url = f"https://{lang}.wikipedia.org/w/api.php"
def get_content(rev_id):
params = {
"action": "query",
"revids": str(rev_id),
"prop": "revisions",
"rvprop": "content",
"rvslots": "main",
"format": "json"
}
resp = requests.get(url, params=params,
headers={"User-Agent": "TriadicFrameworks/1.0"}).json()
page = next(iter(resp["query"]["pages"].values()))
return page["revisions"][0]["slots"]["main"]["*"]
content_a = get_content(rev_id_a).splitlines()
content_b = get_content(rev_id_b).splitlines()
diff = list(difflib.unified_diff(content_a, content_b,
lineterm="", n=3))
# Extract only changed lines
additions = [l[1:] for l in diff if l.startswith("+")
and not l.startswith("+++")]
removals = [l[1:] for l in diff if l.startswith("-")
and not l.startswith("---")]
return {
"revision_a": rev_id_a,
"revision_b": rev_id_b,
"lines_added": len(additions),
"lines_removed": len(removals),
"regime_claim_a": "\n".join(removals[:10]),
"regime_claim_b": "\n".join(additions[:10]),
"boundary_location": "see diff output for exact position",
"full_diff_lines": len(diff)
}5.5 — Historical War Pattern Analysis#
def historical_war_profile(title, lang="en"):
"""
Build a complete edit war profile for an article's full history.
Combines revert detection, SHA-1 analysis, and temporal clustering.
"""
revert_data = detect_revert_sequences(title, lang,
window_hours=72,
min_reverts=2)
sha1_data = detect_sha1_wars(title, lang)
# Check protection history
url = f"https://{lang}.wikipedia.org/w/api.php"
params = {
"action": "query",
"titles": title,
"prop": "info",
"inprop": "protection",
"format": "json"
}
resp = requests.get(url, params=params,
headers={"User-Agent": "TriadicFrameworks/1.0"}).json()
page = next(iter(resp["query"]["pages"].values()))
protections = page.get("protection", [])
return {
"article": title,
"revert_clusters": revert_data["revert_clusters"],
"sha1_repeated_states": sha1_data["repeated_states"],
"war_severity": sha1_data["severity"],
"current_protection": protections,
"is_protected": len(protections) > 0,
"war_history": {
"clusters": revert_data["clusters"][:5],
"sha1_signals": sha1_data["signals"][:5]
},
"regime_transition_assessment": assess_transition(
revert_data, sha1_data, protections)
}
def assess_transition(revert_data, sha1_data, protections):
"""Assess whether the article has undergone a regime transition."""
severity = sha1_data["severity"]
protected = len(protections) > 0
clusters = revert_data["revert_clusters"]
if severity == "0_no_war":
return "stable_regime — no transition detected"
elif severity == "1_skirmish" and not protected:
return "minor_friction — regime boundary tested but held"
elif severity in ("2_dispute", "3_war") and not protected:
return "regime_negotiation — boundary actively contested"
elif protected and clusters >= 2:
return "regime_transition_in_progress — admin intervention required"
elif severity in ("4_entrenchment",) or clusters >= 5:
return "chronic_regime_conflict — boundary permanently contested"
else:
return "indeterminate — insufficient data"6 — Worked Examples#
6.1 — Pluto (Classification War → Regime Displacement)#
| Dimension | Detail |
|---|---|
| War type | Classification (Type 2) |
| Period | August 2006 – March 2007 |
| Trigger | IAU reclassifies Pluto as dwarf planet on 24 August 2006 |
| Competing claims | Claim A: "Pluto is the ninth planet" — Claim B: "Pluto is a dwarf planet" |
| Peak severity | Level 4 (Entrenchment) — sustained revert cycles, semi‑protection applied |
| Resolution pattern | Regime displacement — "dwarf planet" prevailed as the IAU declaration gained structural standing |
| Duration | ~7 months of active conflict, then gradual stabilization |
| Post‑war state | Crystallized — article now stably declares "Pluto is a dwarf planet in the Kuiper belt" |
RTT reading: Pluto is a textbook externally triggered regime transition. The IAU decision changed the concept's regime classification, and the Wikipedia article's edit war is the visible trace of that transition playing out in the knowledge system. The war ended when the new classification gained sufficient structural standing to displace the old one.
Structural insight: The speed of resolution correlated with the clarity of the external authority's decision. The IAU ruling was unambiguous, so the edit war, while intense, resolved relatively quickly. Compare this to naming wars (Type 5) where no single external authority exists — those can persist for decades.
6.2 — Gdańsk/Danzig (Naming War → Compromise Synthesis)#
| Dimension | Detail |
|---|---|
| War type | Naming/Terminology (Type 5) |
| Period | 2003–2005 (peak), with recurring flare‑ups through 2015+ |
| Trigger | Disagreement over whether to use "Gdańsk" (Polish) or "Danzig" (German) for historical references |
| Competing claims | Claim A: "Always use Gdańsk — it's the current name" — Claim B: "Use Danzig for historical periods when the city was German‑speaking" |
| Peak severity | Level 5 (Perpetual conflict) — one of Wikipedia's most‑cited edit wars |
| Resolution pattern | Compromise synthesis — complex naming conventions established through multiple RfCs |
| Duration | 2+ years of intense conflict; ongoing maintenance |
| Post‑war state | Semi‑crystallized — naming conventions exist but are periodically challenged |
RTT reading: Gdańsk/Danzig is a regime identity dispute where naming carries deep political and historical regime claims. The compromise synthesis demonstrates that some regime collisions cannot be resolved by one side prevailing — they require structural architecture (naming conventions, context‑dependent usage rules) to manage the permanent boundary.
Structural insight: The article now has an elaborate talk page FAQ and naming convention section — these are crystallized coherence positions produced by the war. The war itself was costly, but it produced structural infrastructure that manages the ongoing regime tension.
6.3 — Abortion (Framing War → Administrative Freeze)#
| Dimension | Detail |
|---|---|
| War type | Framing (Type 3) + Inclusion/Exclusion (Type 4) |
| Period | Ongoing since early 2000s, with periodic escalations |
| Trigger | Fundamental worldview conflict between pro‑choice and pro‑life perspectives |
| Competing claims | Framing: "medical procedure" vs. "termination of human life" — Inclusion: which perspectives, statistics, and arguments to include |
| Peak severity | Level 5 (Perpetual conflict) — under discretionary sanctions |
| Resolution pattern | Administrative freeze — article under persistent protection + ArbCom discretionary sanctions |
| Duration | 20+ years of recurring conflict |
| Post‑war state | Managed instability — the article is functional but permanently contested |
RTT reading: Abortion represents an irreconcilable regime collision — the competing claims arise from fundamentally different worldview regimes that cannot be structurally synthesized. NPOV cannot produce a version that both camps consider neutral because they disagree on what neutrality means for this topic. The administrative freeze is regime stabilization by force — not consensus, but pragmatic management.
Structural insight: The abortion article demonstrates the limits of NPOV as a coherence operator. For most topics, NPOV can produce a stable structural frame that accommodates competing views. For irreconcilable worldview conflicts, NPOV can only manage the tension — it cannot resolve it. The edit war history is the visible trace of that permanent structural stress.
7 — Edit Wars Across Languages#
7.1 — The Same Concept, Different Wars#
The same topic can produce different edit wars on different language Wikipedias, because the editor population brings different regime perspectives:
| Topic | English Wikipedia War | Other Language War |
|---|---|---|
| Kashmir | Framing: India vs. Pakistan perspectives | Hindi/Urdu Wikipedias: even more intense, locally embedded |
| Crimea | Classification: Ukrainian vs. Russian territory | Russian Wikipedia: different framing entirely; Ukrainian Wikipedia: different classification |
| Sea of Japan | Naming: "Sea of Japan" vs. "East Sea" | Korean Wikipedia: "East Sea" is default; Japanese Wikipedia: "Sea of Japan" is default |
| Armenian Genocide | Classification: "genocide" vs. "events of 1915" | Turkish Wikipedia: radically different framing and classification |
7.2 — Cross‑Language War Comparison Method#
def cross_language_war_comparison(wikidata_qid, languages=None):
"""
Compare edit war intensity for the same concept across languages.
Uses Wikidata to find the article title in each language.
"""
if languages is None:
languages = ["en", "de", "fr", "ja", "ar", "ru", "zh", "es"]
# Get sitelinks from Wikidata
url = "https://www.wikidata.org/w/api.php"
params = {
"action": "wbgetentities",
"ids": wikidata_qid,
"props": "sitelinks",
"format": "json"
}
resp = requests.get(url, params=params,
headers={"User-Agent": "TriadicFrameworks/1.0"}).json()
sitelinks = resp["entities"][wikidata_qid].get("sitelinks", {})
results = {}
for lang in languages:
wiki_key = f"{lang}wiki"
if wiki_key in sitelinks:
title = sitelinks[wiki_key]["title"]
try:
war_data = detect_revert_sequences(title, lang,
window_hours=72,
min_reverts=2)
results[lang] = {
"title": title,
"total_reverts": war_data["total_reverts"],
"revert_clusters": war_data["revert_clusters"]
}
except Exception as e:
results[lang] = {"title": title, "error": str(e)}
return results7.3 — What Cross‑Language Comparison Reveals#
| Pattern | Interpretation |
|---|---|
| High wars in all languages | Universally contested regime — the collision is structural, not cultural |
| High wars in some languages, low in others | Culturally specific regime collision — the dispute is meaningful in some contexts but not others |
| Different war types across languages | Different regime boundaries are active — English may fight over framing while Korean fights over naming |
| War in English only | English Wikipedia's global editor base imports more perspectives, creating more collision surfaces |
8 — Edit Wars as Research Instruments#
8.1 — Regime Boundary Mapping#
Method:
- Identify articles with high revert rates in a domain
- For each, extract the disputed content using Section 5.4
- Classify the dispute by type (Section 2)
- Map the disputes onto the domain's knowledge structure
- The result is a regime boundary map — a visualization of where structural disputes concentrate within a domain
8.2 — Regime Transition Monitoring#
Method:
- Set up a watchlist of articles in a domain
- Monitor revert rates using periodic API calls
- When a revert cluster is detected, extract the competing claims
- Track the resolution pattern (Section 4) over time
- Completed transitions = the domain's regime landscape has shifted
8.3 — Consensus Archaeology#
Method:
- Find a long‑resolved edit war in a domain (check talk page archives)
- Extract the original competing claims from the revision history
- Identify the resolution pattern and final consensus
- The resolved war reveals how the community established a regime boundary — the process of structural decision‑making
8.4 — Predictive War Analysis#
Method:
- Monitor talk page dispute intensity (from
Talk_Page_Coherence_Surface.md) - When talk page disputes escalate past coherence gradient Level 3, flag the article for potential edit war
- Talk page escalation is a leading indicator of edit wars — disputes that fail to resolve on talk pages often erupt as edit wars
- Early detection enables preemptive mediation before structural damage occurs
9 — Cross‑Reference to Other Module Files#
| File | How Edit Wars Connect |
|---|---|
Talk_Page_Coherence_Surface.md |
Edit wars are the failure mode of talk page consensus — when talk cannot resolve a dispute, it erupts as warring in the article. Talk page escalation is a leading indicator |
NPOV_As_Coherence_Operator.md |
Many edit wars are NPOV disputes — Framing Wars (Type 3) map directly to NPOV failure modes. Irreconcilable wars reveal NPOV's structural limits |
Revision_History_Regime_Analysis.md |
Edit wars produce the most dramatic signals in revision history — revert spikes, size oscillations, elevated revert rates. This file provides the detection algorithms |
Featured_Article_Validation_Corridor.md |
Active or recent edit wars block FA validation — criterion 5 (Stability) requires no ongoing content disputes |
Category_Taxonomy_Regime_Hierarchy.md |
Classification Wars (Type 2) often involve category changes — the edit war and the category dispute are two surfaces of the same regime collision |
Wikidata_Ingestion_Format.md |
Wikidata edit wars (P31 disputes, label conflicts) are structurally equivalent — same collision, different surface |
Cross_Domain_Meta_Operators.md |
Operator 8 (Edit War as Regime Boundary Marker) is derived directly from this file |
Wikipedia_RTT_Structural_Mapping.md |
Edit wars are mapped in Section 2.2 as "regime transition events" and Section 2.6 as "regime collision alarms" |
10 — Student Exercises#
Exercise 1 — War Type Classification (15 minutes)#
- Browse Wikipedia's list of notable edit wars:
https://en.wikipedia.org/wiki/Wikipedia:Lamest_edit_wars - Pick 3 edit wars from different sections
- Classify each by type using Section 2 (Factual, Classification, Framing, Inclusion/Exclusion, or Naming)
- For each, write one sentence: "This is a [type] war because the competing claims are about [specific structural question]."
Exercise 2 — Live War Detection (25 minutes)#
- Pick an article you expect might have recent edit conflicts (try: a current political leader, a recent scientific controversy, or a currently disputed territory)
- Check the article's revision history for recent reverts (look for "undo" or "revert" in edit summaries)
- If you find reverts, classify the severity (Section 3) and the war type (Section 2)
- Check the talk page — is the dispute being discussed there?
- Answer: "This article [does/does not] show signs of active edit warring. The severity is [level] and the war type is [type]. The talk page [does/does not] have a related discussion thread."
Exercise 3 — Resolution Pattern Analysis (30 minutes)#
- Find a completed (resolved) edit war — check talk page archives for threads that discuss settled disputes
- Identify which resolution pattern from Section 4 was used (Regime Displacement, Compromise Synthesis, Structural Separation, or Administrative Freeze)
- Trace the resolution process: What arguments were decisive? Who mediated? How long did it take?
- Write two sentences: "This war was resolved through [pattern] because [reason]. The winning regime claim was [claim] and it prevailed because [structural advantage]."
Exercise 4 — Regime Boundary Extraction (30 minutes)#
- Find an article with a recent or ongoing edit war
- Use the article's revision history to find two competing revisions (the "before" and "after" of a revert)
- Compare the two versions using Wikipedia's built‑in diff tool (click "prev" next to any revision)
- Identify the exact text that is being disputed — this is the regime boundary
- Answer: "The regime boundary is located in the [section/paragraph] and concerns [specific text]. Claim A says [X] while Claim B says [Y]. The structural question is [what the dispute is really about at R0/R1 level]."
Exercise 5 — Cross‑Language War Comparison (30 minutes)#
- Pick a topic with known cross‑cultural sensitivity (try: a territorial dispute, a historical conflict, or a contested political classification)
- Check the article's recent revision history in English + 1 other language edition
- Compare: Does the same topic produce edit wars in both languages? Are the same dimensions being disputed?
- Answer: "The English Wikipedia fights about [X] while the [other language] Wikipedia fights about [Y]. This reveals that the regime collision is [universal/culturally specific] because [reason]."
This file is part of the Wikipedia Awareness Module in the TriadicFrameworks canon.