What a Knowledge Graph Found Across Five Authoritarian Systems, One Million Soviet Records, and the Six Categories of Political Prosecution That Keep Coming Back
The article numbers changed. The charging categories were reconstructed.
This analysis asked whether the Russian state's political prosecution system preserves structural continuity with the Soviet system it officially replaced. We built a formal knowledge graph from two datasets spanning 100 years, applied identical computational methods to both, connected them through a hand-built semantic vocabulary, and then ran the same pipeline on Belarus, Cuba, and Myanmar to test whether the patterns are Russian, post-Soviet, or universal to authoritarianism.
The 1996 RF Criminal Code represented a legal rupture with Soviet-style explicitly political criminalization. The Soviet speech offenses (Art. 70 anti-Soviet agitation, Art. 190-1 fabrications, Art. 142 religious instruction) were not carried forward. But ordinary national-security offenses were retained from the start: Art. 205 (terrorism), Art. 275 (treason), Art. 276 (espionage), Art. 278 (violent seizure of power), Art. 279 (armed rebellion), Art. 282 (incitement of hatred, in narrower form than today) were present in the 1996 code as originally enacted. Over the following twenty-five years, these residual security offenses were broadened and new extremism, organizational, protest, separatism, historical-memory, and wartime-expression provisions were added or repurposed in ways that recreated much of the functional repertoire formerly supplied by Soviet political offenses.
The Soviet system bundled all six functional categories into one undifferentiated charging community (Louvain Q=0.29); the modern Russian system separates them into three specialized clusters (Q=0.473). An institutional mechanism is one candidate explanation for the rigid separation: Russian criminal procedure (Art. 151 UPK RF, podsledstvennost) partitions investigative jurisdiction by statute. Terrorism and treason (Arts. 205, 275) belong to the FSB Investigative Directorate and are tried in military courts. Extremist speech (Arts. 280, 282, 207.3, 354.1) belongs to the Investigative Committee (SKR) and is tried in civilian district courts. Protest offenses (Arts. 212, 318) are split between SKR and the Ministry of Internal Affairs. Because investigators are evaluated under departmental quota metrics (the palochnaya sistema) and rarely share cases across agency silos, the charge co-occurrence graph plausibly splits along jurisdictional lines (Solomon, 1996; Paneyakh, 2014; Hendley, 2017). This is a hypothesis the modularity structure is consistent with, not one the graph alone proves.
Belarus (Q=0.16) looks more like the Soviet system than modern Russia does. Myanmar independently developed the same speech/terrorism separation. Cuba's charge-stacking strategy produces an entirely different topology. The six functional categories recur across all five authoritarian systems examined here, which span different historical periods and legal traditions. Five hand-selected cases cannot establish this as a universal property of authoritarianism; what they can show is that these specific state-defined threat domains produce recurrent patterns of criminalization across all five systems in this comparison.
The Soviet system executed 170,838 people by formal state decree, approximately 85-90% by extrajudicial NKVD troiki and dvoiki under Order 00447 and the National Operations, the remainder by Military Tribunals and the Military Collegium of the Supreme Court. Russia has maintained a moratorium on judicial executions since the 1990s; capital punishment remains in the Criminal Code (Art. 59), with its application blocked by Constitutional Court ruling. The post-Soviet state rehabilitated 577,938 victims under the 1991 Law on Rehabilitation of Victims of Political Repression; there is no analogous formal mechanism in the modern system for persons convicted under post-Soviet political prosecution articles. Memorial, the organization that documented the Soviet crimes, was liquidated by the Supreme Court in late 2021 and awarded the Nobel Peace Prize in 2022.
Several deaths of modern Russian opposition figures and critics are commonly cited together, but they have different evidentiary and legal status: the Litvinenko case (2006) produced a UK public inquiry finding that the operation was "probably approved" by Putin and Patrushev; the Politkovskaya (2006) and Nemtsov (2015) murders resulted in convictions of the perpetrators but unresolved questions over commissioning; Navalny (2024) died in state custody at IK-3 under circumstances that have generated credible state-responsibility allegations but no adjudicated finding. These are different kinds of evidence and should not be bundled together as a single category.
Within the modern system, 48 prosecutions in the OVD-Info dataset targeted children as young as 14. The substantive Criminal Code provisions applied to these minors are the same as those applied to adults. Russian criminal procedure contains Chapter 50 (UPK RF), which establishes special rules for proceedings against minors (detention, counsel, legal representatives, questioning, severance, circumstances to establish). Whether those statutory safeguards were observed in these 48 cases is a separate empirical question requiring case-file analysis.
The offshore financial infrastructure (Consulco International, incorporated 1993) that facilitates state-adjacent asset concealment was established in the immediate post-Soviet period, though our probabilistic matching of Panama Papers officers against sanctions lists returned no confirmed Soviet-to-modern connections. The prosecution system and the financial system are two views of the same apparatus: the state criminalizes its citizens' engagement with foreign structures while its own officers operate within them.
The Soviet dataset (Memorial, 1917-1991) contains 1,056,670 records of political repression victims, streamed from an archive of 18,973 JSON files. Charges were extracted from unstructured Russian free-text biographies using regex parsing. Article numbers could be extracted from 218,096 records (20.6%). The remaining records include large bodies of administrative and extrajudicial repression (troika proceedings, deportations, special settlements, operational-order cases) but absence of an extractable article number does not itself demonstrate that no criminal provision was involved: alternative explanations include biography brevity, archival incompleteness, pre-1934 article numbering changes, abbreviation conventions, and parsing failures. Accordingly, 20.6% is the observed coded subset, not an estimate that 79.4% of Soviet repression occurred outside criminal law. The modern Russian dataset (OVD-Info, 2012-2025) contains 7,132 prosecutions encoded as 217,814 RDF triples in a BFO-aligned OWL ontology. The two datasets were connected through 20 hand-built SKOS mappings linking RSFSR Criminal Code articles to their modern RF equivalents across six functional categories: speech, organizational, terrorism, treason, protest, and religious.
We then applied the same Louvain community detection algorithm to charge co-occurrence in both datasets. The question was whether the same charging logic produces the same community structure under a completely different legal code. The question was answered at multiple levels.
At the structural level: the categories survived but the architecture differentiated. The Soviet system produced one dominant community of 70 articles (Q=0.29), where speech, terrorism, organizational, and protest charges all appeared together on the same defendants. The modern Russian system separates them into three specialized clusters (Q=0.473): speech crimes in one track, terrorism in another, organizational prosecution in a third. Excluding the Great Terror years (1937-38, 487,277 records) does not change the Soviet structure, confirming the finding is robust and not an artifact of assembly-line charging.
At the comparative level: the six functional categories are not uniquely Russian. Belarus (12,199 prosecutions, Q=0.16) has the same categories with even lower differentiation than the Soviet system. Myanmar (31,824 arrests, Q=0.25) independently developed the same speech/terrorism separation Russia has, using two parallel legal instruments. Cuba (2,130 prisoners, 17 fragmented communities) stacks charges instead of simplifying them, producing an entirely different graph topology. The six functional categories recur across all five authoritarian systems examined here, which span different historical periods and legal traditions. What distinguishes Russia is not inheritance of specific Soviet articles (the 1996 code represented a legal rupture that was partially reconstructed) but the high-modularity bureaucratic specialization (Q=0.473) that developed over the subsequent twenty-five years. Belarus and the Central Asian republics (Kazakhstan, Uzbekistan, Tajikistan, Turkmenistan) also retained or reconstructed the same six categories, often copy-pasting Russia's extremism statutes via CIS model legislation. But Belarus operates at Q=0.16 (undifferentiated), not Q=0.473 (specialized). What distinguishes Russia is not that it uniquely reconstructed the categories, but that it uniquely developed a high-modularity bureaucratic specialization in the subsequent decades.
At the temporal level: the continuity was not inherited. It was convergent. The RF Criminal Code was deliberately cleaned of political prosecution tools in 1996. Between 1996 and 2004, during the period of maximum Western institutional leverage (ECHR membership, Council of Europe, WTO negotiations), the code largely lacked instruments for political prosecution. As those constraints fell away, each crisis produced a legislative response that independently recreated a Soviet-era category: extremism amendments after the apartment bombings (2002), terrorism expansion after Beslan (2006), protest restrictions after Bolotnaya (2012), separatism after Crimea (2014), wartime speech crimes after the invasion (2022). The wartime articles were enacted seven days after Russia's Council of Europe representation was suspended (February 25 to March 4, 2022).
At the institutional level: the legal codes are the visible output; the security services are a plausible mechanism of transmission. The FSB is institutionally descended from Soviet security organs (KGB and its predecessors) and considers itself their direct successor. Specific desk-level or unit-level organizational genealogy from the KGB's Fifth Directorate (dissident speech) to the FSB's Center for Information Security (TsIB, which handles some modern internet-era political speech work) would require archival/organizational evidence beyond what is cited here. Institutional continuity exists at the level of the security-service apparatus; the operational culture that applied Article 58 and the operational culture that applies Article 280 are embedded in the same lineage, even if specific units and personnel cannot be directly traced across the 1991 break.
At the severity level: the Soviet system was the most egregious by every metric the data supports. 170,838 people were executed by formal state decree (judicial and extrajudicial), 16.2% of all records. Extrajudicial troiki operated under pre-assigned regional execution quotas with no defense counsel, processing dozens of cases per session. The dekulakization campaign displaced 1.8 million people by administrative order. The scale is incomparable to any other system in this analysis. Myanmar's junta executed four political activists in July 2022 (Kyaw Min Yu, Phyo Zeya Thaw, Hla Myo Aung, Aung Thura Zaw) following military tribunal death sentences, demonstrating that formal state execution of political prisoners is not confined to the Soviet case in this comparison, though the volumes are categorically different. Myanmar is currently the most lethal active system (5,600+ killed since the 2021 coup), mostly through military violence rather than court sentences. Russia maintains a moratorium on judicial execution (capital punishment remains in Art. 59 of the Criminal Code; Constitutional Court ruling blocks application). Several deaths of modern Russian opposition figures and critics have been attributed to the state with varying evidentiary status (see opening paragraph for the Litvinenko/Politkovskaya/Nemtsov/Navalny distinctions). The prosecution system documented here is the visible layer, designed to perform legality. Guriev and Treisman call this the "spin dictator" model: the appearance of law is the product.
At the human level: 48 prosecutions in the modern Russian dataset targeted children as young as 14. The substantive Criminal Code provisions applied are the same as for adults. Russian criminal procedure contains Chapter 50 (UPK RF), which establishes special rules for proceedings against minors (detention, counsel, legal representatives, questioning, severance, specific circumstances to establish). Whether those statutory safeguards were observed in these 48 cases, and whether terrorism and national-security prosecutions of minors are compatible with Russia's CRC and ICCPR obligations, are empirical questions requiring case-file analysis. 12 of the 48 are currently imprisoned. Six face charges that raise potential incompatibility with non-derogable ICCPR rights (Art. 18, freedom of conscience). Memorial documented 427 child prosecutions since the invasion using separate methodology, suggesting OVD-Info's 48 is the floor. The Soviet system rehabilitated 577,938 victims under the 1991 Law on Rehabilitation, which Satter characterized as bureaucratic restoration rather than genuine reckoning. There is no analogous formal rehabilitation mechanism in the modern system for persons convicted under post-Soviet political prosecution articles. The organization that documented the Soviet crimes was liquidated by the Supreme Court in late 2021 and awarded the Nobel Peace Prize in 2022.
At the financial level: the same offshore infrastructure serves both eras. Consulco International, the Cypriot firm that services sanctioned oligarchs and FSB-connected entities (3,168 shell entities in the Panama Papers), was incorporated in 1993, two years after the Soviet collapse. The state criminalizes its citizens' engagement with foreign economic structures while its own officers use those same structures to conceal assets. Our Fellegi-Sunter probabilistic matching of Panama Papers officers against OpenSanctions (5,246 officers vs 266,211 sanctioned names) returned zero confirmed matches linking Soviet-era shells to currently sanctioned Russians. The relevant dataset (ICIJ Cyprus Confidential) is not publicly available for bulk analysis. The structural argument is supported by investigative journalism. The graph analysis did not independently confirm it. We state this because negative findings are findings.
The Soviet dataset (Memorial, 1917-1991) contains 1,056,670 records of victims of political repression, streamed from a 308 MB archive of 18,973 JSON files hosted on S3. Each record is a free-text Russian biography with no structured charge field. We wrote regex parsers to extract RSFSR Criminal Code article numbers (after "ст."), charge descriptions (after "обв.:"), sentences (after "Приговор:"), arrest dates, birth years, execution markers ("расстрелян," "ВМН"), and rehabilitation status from unstructured text. 218,096 records (20.6%) yielded article numbers. The remaining records include substantial bodies of administrative and extrajudicial repression (OGPU/NKVD troiki, dekulakization and special settlement orders, national operations under Order 00447, dvoiki deportations), but the parsing miss rate is not itself evidence that no criminal provision was involved in those cases: alternative explanations include biography brevity, archival incompleteness, pre-1934 article renumbering (1922, 1926, 1960 codes), abbreviation conventions (КРД, СОЭ, ЕК-26), and parsing failures on malformed source text. 20.6% should be read as the observed coded subset, not as an estimate that exactly 79.4% of Soviet repression occurred outside criminal law. 170,838 people were executed (16.2% of all records). 577,938 were formally rehabilitated (54.7%). Article 58-10 (anti-Soviet agitation and propaganda) appeared in 105,402 cases, making it the single most common charge across 74 years of Soviet political prosecution.
The modern dataset (OVD-Info, 2012-2025) contains 7,132 politically motivated criminal prosecutions, encoded as 217,814 RDF triples in a BFO-aligned OWL ontology with a SKOS charge vocabulary mapped to ICCPR provisions. We ran Louvain community detection on charge co-occurrence (which Criminal Code articles appear together on the same person), permutation-tested structural breaks across candidate years, computed ICCPR violation counts per prosecution, identified 48 child prosecutions (approximately 45 unique persons, youngest age 14), extracted geographic clustering from prosecution locations, mapped co-defendant relationships, and defined OWL classes for inferencing (ChildPoliticalPrisoner, FaciallyIncompatibleChildDetention, CrossBoundaryProsecution, TerrorismChild).
The bridge is a hand-built SKOS vocabulary of 20 mappings linking RSFSR Criminal Code articles to their modern RF equivalents across six functional categories: speech (Art. 58-10 to Art. 280/354.1), organizational (Art. 72 to Art. 282.1/282.2), terrorism (Art. 58-8 to Art. 205), treason (Art. 64 to Art. 275), protest (Art. 190-3 to Art. 212/318), and religious (Art. 227 to Art. 205.5). Three SKOS relation strengths encode the precision of each mapping: exactMatch for near-verbatim statutory language (Art. 68 sabotage (diversiya) to Art. 281 sabotage), closeMatch for functional equivalents (Art. 58-10 agitation to Art. 280 extremist calls), and relatedMatch for thematic parallels (Art. 88 currency violations to Art. 284.2 calls for sanctions, the weakest mapping).
The comparison. We ran Louvain community detection on charge co-occurrence in both datasets. The Soviet system produced 4 communities with low modularity (Q=0.29): one dominant community of 70 articles containing speech, organizational, terrorism, and uprising charges all bundled together. The modern system produced 6 communities with higher modularity (Q=0.473): speech crimes in one cluster (Art. 280, 282, 354.1, 207.3), terrorism in another (Art. 205, 205.3, 205.4, 222), organizational prosecution in a third (Art. 282.2, 205.5, 275), and protest charges in a fourth (Art. 212, 318). The Soviet system's single undifferentiated community split into three specialized modern clusters when traced through the SKOS mappings. The dominant co-occurrence pair shifted from speech + organization (Soviet: Art. 58-10 + 58-11, 1,619 cases) to terror training + terror organization (modern: Art. 205.3 + 205.4, 227 cases).
The rupture and the reconstruction. The RF Criminal Code enacted on 1 January 1997 represented a legal rupture with Soviet-style explicitly political criminalization. Art. 58 had been abolished in 1960 during de-Stalinization; the 1996 code did not carry forward its 1960-era successors (Art. 70 anti-Soviet agitation, Art. 190-1 fabrications, Art. 142 religious instruction). But ordinary national-security offenses were present from the start: the 1996 code as originally enacted contained Art. 205 (terrorism), Art. 275 (treason), Art. 276 (espionage), Art. 278 (violent seizure of power), Art. 279 (armed rebellion), Art. 280 (public calls for extremist activity, in narrower form) and Art. 282 (incitement of hatred, in narrower form). What was absent from the 1996 code was not national-security law as such, but the explicitly Soviet-style political offenses. Over the following twenty-five years, those residual offenses were broadened and new provisions (Art. 282.1/282.2 extremist organization, 2002; Art. 212.1 repeated protest, 2014; Art. 280.1 separatism, 2014; Art. 354.1 rehabilitation of Nazism, 2014; Art. 207.3 and 280.3 wartime speech, 2022) were added or repurposed in ways that recreated much of the functional repertoire formerly supplied by Soviet political offenses. Each wave coincided with a specific political crisis (2002 extremism amendments after the apartment bombings and Second Chechen War; 2006 terrorism expansion after Beslan; 2014 protest and separatism restrictions after Bolotnaya Square and the Crimea annexation; 2017 Jehovah's Witnesses designation after years of administrative pressure; 2022 wartime speech articles after the invasion). The expansion occurred alongside Russia's deteriorating relationship with European legal institutions: PACE suspended Russian delegation voting rights in April 2014, Russia was expelled from the Council of Europe on 16 March 2022, and ECHR jurisdiction over Russian acts ceased on 16 September 2022. The temporal association does not establish that weakening external constraints caused the legislation; domestic security policy, regime consolidation, specific political crises, and the 24 February 2022 invasion of Ukraine provide competing and interacting explanations. The March 4 wartime legislation was eight days after the invasion and seven days after the PACE suspension of Russian delegation rights; the invasion is the more immediate explanation. The strongest defensible claim is that specific legal instruments used for political repression were progressively broadened or reconstructed after the late 1990s, not that six categories disappeared and returned.
The children. 48 prosecutions against approximately 45 children under age 18 (CRC definition). 12 currently imprisoned. The youngest was 14 (terrorism and terror financing). 35 prosecutions occurred after the February 2022 invasion, a fivefold increase in annual rate. The substantive Criminal Code articles applied to these minors are the same as those applied to adults. Russian criminal procedure contains Chapter 50 (UPK RF), which modifies ordinary procedure for persons under 18 (detention rules, mandatory counsel, legal representatives, questioning conditions, severance of cases, specific circumstances the investigation must establish). The empirical question is whether those safeguards were respected in these 48 cases, and whether terrorism and national-security prosecutions of minors are compatible with Russia's CRC and ICCPR obligations. Children are overrepresented in terrorism charges (Art. 205: 9.2% for minors vs 2.8% for adults) and wartime speech charges (Art. 354.1: 15.8% vs 2.7%). Six child prosecutions raise potential incompatibility with non-derogable ICCPR rights (Art. 18, freedom of conscience). 17 probable co-defendant groups contain both minors and adults, with age gaps up to 60 years. Memorial documented 427 child prosecutions since the invasion (separate methodology), suggesting the OVD-Info figure is the floor.
The connection. The political prosecution pipeline and the offshore financial analysis (FSB officer cross-reference against ICIJ Panama/Pandora Papers, UK Companies House, Cyprus company registry) are not separate workstreams. Consulco International, the most significant intermediary in the offshore analysis (3,168 entities, services to sanctioned oligarchs), was incorporated in 1993, two years after the Soviet collapse. The Cypriot corporate services infrastructure that modern Russian intelligence officers use to conceal assets was established in the early 1990s as Soviet-era capital sought offshore destinations. Soviet Art. 88 criminalized citizens' engagement with foreign economic systems while the KGB operated through the same systems via front companies. Modern Art. 284.2 criminalizes calls for sanctions while Art. 354.1 (rehabilitation of Nazism) is applied to anti-war expression, and FSB officers use offshore structures in the same sanctioned jurisdictions. The legal prosecution of economic disloyalty and the economic infrastructure for capital flight are two sides of the same system, connected through the same island: Cyprus.
Memorial (1917-1991)
numbers extracted
(16.2% of records)
Soviet to modern
Temporal distribution of Soviet political prosecutions.
Why the modern number appears lower
The 7,132 modern prosecutions and the 1,056,670 Soviet records are not comparable as measures of repressive volume. The modern number is artificially low for three structural reasons identified by OVD-Info's data and legal team in a September 2026 meeting:
FSB cases operate outside the court system. The Federal Security Service conducts investigations and detentions that never enter the public court record. If no lawyer or family member contacts OVD-Info, the case is invisible. The FSB may detain, interrogate, and release without any court filing. These cases never reach OVD-Info's database.
Terrorism and treason case materials are classified. Under Russian law, cases involving Art. 205 (terrorism) and Art. 275 (treason) are heard behind closed doors by military courts. Case files are sealed. OVD-Info learns about them only when the lawyer, the family, or a journalist breaks the silence.
Occupied territories are not covered. Crimea (since 2014) and the occupied regions of Donetsk, Luhansk, Zaporizhzhia, and Kherson are largely invisible to OVD-Info's monitoring. Freedom House rates Russian-occupied territories at negative one on its freedom scale.
The 7,132 records are the cases that broke through all three barriers. The actual volume of modern political prosecution is unknown but substantially higher. Memorial documented 427 child cases alone since the 2022 invasion, compared to OVD-Info's 48. The Louvain comparison in this report analyzes the structure of what is visible, not the full scale of what exists. The Soviet dataset has the opposite bias: Memorial's records are disproportionately drawn from rehabilitation proceedings, meaning the dataset overrepresents cases the state eventually acknowledged as unjust and underrepresents those it never reviewed.
Russia maintains a judicial-execution moratorium.
Myanmar executed 4 political activists in July 2022.
Dominant charge comparison across eras.
In the Soviet dataset, Article 58-10 ("anti-Soviet agitation and propaganda") accounts for 105,402 cases. It is the single most common political prosecution charge across 74 years. In the modern dataset, Article 354.1 ("rehabilitation of Nazism," enacted 2014, expanded and applied at scale after March 2022) is the fastest-growing charge. Both criminalize speech the state considers disloyal.
SKOS vocabulary: 20 functional equivalences across Criminal Code versions.
The RSFSR Criminal Code (1960) was replaced by the RF Criminal Code (1996). Every article was renumbered. The following SKOS mappings link Soviet-era articles to their modern functional equivalents. Three relation strengths: exactMatch (near-verbatim statutory language), closeMatch (same conduct criminalized), relatedMatch (thematic parallel).
Louvain community structure: 4 Soviet communities vs 6 modern.
Louvain community detection on charge co-occurrence reveals different organizational structures. The Soviet system clustered speech, organizational, and terrorism charges in one large community. The modern system separates them into specialized clusters.
Art. 58-10 (agitation) + Art. 58-11 (organizational) + Art. 58-8 (terrorism) + Art. 58-2 (uprising)
Speech, organizational activity, terrorism, and armed uprising all cluster together. The Soviet system did not differentiate. One catch-all category: "counter-revolutionary."
Top pair: 58-10 + 58-11 (agitation + organization): 1,619 cases charged together
Terrorism (17 articles): Art. 205, 205.3, 205.4, 222
Organizational (9 articles): Art. 282.2, 205.5, 275
Protest (4 articles): Art. 212, 318
The modern system separates speech crimes from terrorism from organizational crimes. Different investigators, different courts, different sentences.
Top pair: 205.3 + 205.4 (terror training + terror org): 227 cases
Cross-era SKOS mapping: which modern communities inherit Soviet articles.
When we follow the SKOS mappings from Soviet articles to their modern equivalents and check which Louvain community those modern articles land in, the Soviet system's single "counter-revolutionary" community splits into four modern communities. The table below tracks each Soviet article through the mapping: which Soviet community was it in, what modern article does it map to, and which modern community did that article land in? "SPLIT" means the Soviet community broke apart. "PRESERVED" means articles that clustered together in the Soviet system still cluster together in the modern one.
| Soviet article | Soviet community | Modern equivalent | Modern community | Structure |
|---|---|---|---|---|
| 58-10 (agitation) | All in one Soviet Community 2 (70 articles together) | 280 (extremist calls) | Speech cluster | SPLIT |
| 58-11 (organizational) | 282.1 / 282.2 | Organizational cluster | ||
| 58-8 (terrorism) | 205 (terrorism) | Terrorism cluster | SPLIT | |
| 58-2 (uprising) | 212 (mass riots) | Protest cluster | SPLIT | |
| 64 (treason) | Separate (Community 1) | 275 (treason) | Organizational cluster | PRESERVED |
| 190-3 (group actions) | All in one (Community 2) | 212 + 318 | Protest cluster | PRESERVED |
The input changed. The output categories did not.
The Soviet repression system was partially crowd-sourced. Citizens denounced neighbors, workers denounced managers, students denounced teachers (Fitzpatrick, 1999). The charge (58-10, 58-11) was often applied after the fact to justify an arrest that was socially motivated. The modern system is centralized: the FSB identifies targets through digital surveillance (Telegram monitoring, social media scraping, keyword detection), then selects the appropriate article. The Soviet system's low modularity (Q=0.29) may reflect the messiness of denunciations: accusers said "he is an agitator AND a saboteur AND he meets with foreigners," producing multi-category charge sheets. The modern system's higher modularity (Q=0.473) may reflect centralized targeting: the FSB decides whether someone is a speech case or a terrorism case before the investigation begins, producing cleaner, more specialized charge profiles.
Interpretation A (design): The Soviet system's low modularity was deliberate. Stalin's prosecutors were instructed to use Article 58 broadly because it allowed any political case to be constructed from any combination of sub-articles. The undifferentiated structure was a feature, not a flaw: maximum prosecutorial flexibility.
Interpretation B (constraint): The modern system's higher modularity reflects legal constraints, not refinement. The RF Constitution (1993) and the European Convention on Human Rights (ratified 1998, withdrawn 2022) imposed procedural requirements the Soviet system did not face. The state created multiple narrow articles (205, 280, 282, 354.1) because a single catch-all article would trigger constitutional challenges. The differentiation is a workaround for constraints, not an improvement in design.
Both interpretations fit the data. This report documents the structural difference. It does not claim to know which interpretation is correct.
| Country | Records | Communities | Q (modularity) | Dominant cluster | Structure |
|---|---|---|---|---|---|
| Soviet Union | 1,056,670 | 4 | 0.29 (0.30 excl. 1937-38) | Art. 58 catch-all (70 articles) | One undifferentiated blob |
| Modern Russia | 7,132 | 6 | 0.473 | Speech (25), Terror (17), Org (9) | Three specialized clusters |
| Belarus | 12,199 | 4 | 0.16 | Protest Art. 342 (21 articles) | One dominant blob (like Soviet) |
| Cuba | 2,130 | 17 | high fragmentation | Desacato bundle (18 charges) | One dominant + many singletons |
| Myanmar | 31,824 | 14 | 0.25 | Counter-Terrorism Law (46 sections) | Two clusters: Penal Code vs CTL |
Belarus (Q=0.16): The lowest modularity of any system. One massive protest cluster (Art. 342: organizing/participating in group actions, 3,788 cases) dominates, with speech crimes (Art. 368, 369, 130) and extremist-organization charges (Art. 361 variants) in separate communities. The structure resembles the Soviet system more than the modern Russian one: low differentiation, one dominant community. Lukashenko's Criminal Code uses nearly identical functional categories to Russia's (Art. 293 = mass riots, Art. 130 = incitement, Art. 361 = extremist activity), and the community structure is similarly undifferentiated.
Cuba (17 communities): Highly fragmented. One dominant bundle (Desórdenes públicos + Desacato + Atentado + Resistencia: the "street bundle" identified in Report I) accounts for most cases. The remaining 16 communities are singletons or near-singletons. Cuba stacks charges; Russia simplifies them. Different prosecutorial strategies produce different graph topologies.
Myanmar (Q=0.25): Two major clusters: Penal Code charges (especially S. 505A: incitement, 8,014 cases) and Counter-Terrorism Law charges (S. 52-a, 50-j: 14,312 cases combined). The military junta uses two legal instruments in parallel: ordinary criminal law and a dedicated counter-terrorism framework. This dual structure is closer to modern Russia (which also separates speech from terrorism) than to the Soviet system or Belarus.
Which system is the most egregious?
The community detection comparison measures structure, not severity. Structure tells you how a system organizes its charges. It does not tell you what happens to the people it charges. The data supports a clear ranking.
The Soviet system was the most egregious by every metric the data supports. Three features distinguish it from the other four systems:
State execution at industrial scale. 170,838 people were executed by court or troika sentence in the Memorial dataset. That is 16.2% of all records. Myanmar's junta executed four political activists in July 2022 (Kyaw Min Yu, Phyo Zeya Thaw, Hla Myo Aung, Aung Thura Zaw) following military tribunal death sentences, so formal state execution of political prisoners is not confined to the Soviet case in this comparison; the volumes are categorically different. The majority of Myanmar's 5,600+ post-coup killings have come through military violence rather than court sentences. Russia maintains a judicial-execution moratorium (capital punishment remains in Art. 59 of the Criminal Code; Constitutional Court ruling blocks application). Belarus and Cuba imprison. The Soviet system's practice of execution by law was unmatched in scale.
Extrajudicial processing at mass scale. Article numbers could be extracted from 20.6% of Memorial records; the remaining 79.4% is the parsing miss rate, not a direct measure of extrajudicial processing. Historians agree that enormous Soviet repression was in fact administrative or extrajudicial: NKVD troiki (panels of three officials) under Order 00447 operated with pre-assigned regional execution quotas (the Leningrad region was allocated 4,000 executions in the first category), processing cases in batches of dozens per session, with no defense counsel, no right of appeal, no public record. Dekulakization and the National Operations (Polish 1937-38, German, Korean deportation) used administrative mechanisms rather than ordinary criminal process. But the exact share of Soviet repression that was extrajudicial cannot be derived from an article-number regex. The modern Russian system, for all its abuses, maintains the formal architecture of a legal system (charges, trials, appeals, sentences) in cases that go to court. Where the modern system operates outside the Criminal Code, it uses administrative tools: foreign-agent designations, NGO liquidations, tax inspections, professional sanctions, and administrative fines under KoAP (e.g. Art. 20.2 for protest violations).
Scale of administrative deportation. The dekulakization campaign (1930-31) displaced approximately 1.8 million people through administrative order, not court process. Entire families were loaded onto cattle cars and deposited in special settlements in Siberia, Central Asia, and the Far North. No other system in this comparison conducted population displacement at this scale as a tool of political repression.
Dominant co-occurrence pairs across eras.
The Soviet top pair (58-10 + 58-11) links speech to organization. The modern top pair (205.3 + 205.4) links two terrorism sub-articles. The dominant pairing shifted from speech + organization to terror training + terror organization. The modern system charges political offenses through the terrorism framework rather than through a dedicated political crimes article.
1996: a legal rupture, residual security offenses, and reconstruction.
The RF Criminal Code enacted on 1 January 1997 was drafted by a commission that included reformers who sought to drop the explicitly Soviet-style political offenses. Art. 58 had already been abolished in 1960; the 1996 code did not carry forward its late-Soviet successors (Art. 70 anti-Soviet agitation, Art. 72 anti-Soviet organization, Art. 190-1 fabrications). Ordinary national-security provisions were retained from the start (Arts. 205, 275, 276, 278, 279, 280, 282 among others), though several were narrower in their 1996 form than they are today. The code as originally enacted did not contain Art. 282.1/282.2, Art. 212.1, Art. 280.1, Art. 354.1, Art. 207.3, Art. 280.3, or the expanded terrorism sub-articles. These were added in waves over the following two decades:
| Year | Amendment | Soviet equivalent |
|---|---|---|
| 2002 | Art. 282.1, 282.2 (extremist community/organization) | Art. 72 (anti-Soviet organization) |
| 2006 | Expanded Art. 205 terrorism framework | Art. 58-8 (terrorist acts) |
| 2014 | Art. 212.1 (repeated protest violations, FZ 258-FZ, 21 July 2014) | Art. 190-3 (group actions) |
| 2014 | Art. 280.1 (separatism) | Art. 58-2 (armed uprising, partial) |
| 2017 | Jehovah's Witnesses designated extremist under Art. 282.2 | Art. 227 (religious encroachment) |
| 2022 (March) | Art. 207.3 (military fake news), Art. 280.3 (discrediting army), Art. 354.1 expanded (rehabilitation of Nazism, enacted 2014, new parts added 2022) | Art. 190-1 (false fabrications), Art. 58-10 (agitation) |
The continuity documented in this report was not inherited unchanged from the Soviet code. The 1996 code represented a legal rupture with Soviet-style explicitly political criminalization: specifically, the overtly political offenses of the late Soviet period (Art. 70 anti-Soviet agitation, Art. 190-1 fabrications, Art. 142 religious instruction) were not carried forward. But ordinary national-security provisions were retained from the start (Arts. 205, 275, 276, 278, 279, 280, 282). Over the next twenty-five years, those residual provisions were broadened and new provisions were added or repurposed in ways that recreated much of the Soviet functional repertoire. Each wave corresponded to a specific political crisis. The underlying pattern is incremental expansion and political repurposing of a non-Soviet code, not simple abolition and recreation of six Soviet categories. The SKOS mappings capture functional equivalence across article numbers; the mapping does not imply that modern articles were directly derived from Soviet ones.
Rehabilitation: 577,938 Soviet cases vs zero modern.
54.7% of the 1,056,670 Memorial records show formal rehabilitation. But the Memorial dataset itself is a fraction of total Soviet repression: estimates of the full victim count range from 12 to 20 million when including Gulag deaths, famine victims, and persons deported without formal sentencing (Conquest, 1990). The 577,938 rehabilitations are a fraction of a fraction. And the rehabilitation process excluded entire categories: those who died in the Gulag without court proceedings, those deported to special settlements without Article 58 charges (the 80% of Memorial records without article numbers), and those who died in the 1932-33 Ukrainian famine, which was never formally classified as political repression. Beginning under Khrushchev and continuing through the Gorbachev and Yeltsin eras, the Soviet and post-Soviet state acknowledged that these prosecutions were unjust, formally rehabilitated the victims, and in many cases restored their civil rights posthumously.
Entity resolution: political prosecution graph to offshore financial graph.
This report analyzes political prosecution. A companion report ("Lubyanka to Tortola") analyzes offshore financial concealment by FSB officers. These appear to be separate workstreams. They are not. They are two views of the same system.
The economic infrastructure that enabled Soviet-era capital flight (Communist Party accounts in Western banks, KGB front companies, Gosbank correspondent relationships through Cypriot and Maltese intermediaries) was never dismantled after the collapse. It was privatized. The same Cypriot, Maltese, and BVI structures documented in the FSB-Panama analysis were originally established to manage Soviet-era hard currency flows.
Soviet Art. 88 criminalized illegal currency transactions. Modern Art. 284.2 (enacted March 2022) criminalizes calls for sanctions against Russia. The state prosecuted citizens for engaging with foreign economic systems while simultaneously using those same systems (through KGB front companies and Party accounts) to manage hard currency. The modern system replicates this duality: it prosecutes citizens under Art. 284.2 (sanctions) and Art. 354.1 (Nazism rehabilitation, applied to anti-war expression) while its intelligence officers use offshore structures in the same jurisdictions (Cyprus, BVI, Malta) that the sanctions target.
While using the same foreign financial system through KGB front companies, Gosbank correspondents, and Communist Party accounts in Western banks
While using the same offshore jurisdictions (Cyprus, BVI, Malta) through Vassiliades, Consulco, and Alcogal to conceal state-adjacent assets
Sources and references.
Primary data
| Source | Records | Access |
|---|---|---|
| Memorial, "Victims of Political Terror in the USSR" (base.memo.ru) | 2.6M+ (1,056,670 in this analysis) | GitHub: ivbeg/memoru; bulk JSON |
| OVD-Info, Political Prosecution Database | 7,132 | Public Airtable export (CSV) |
| ICIJ Offshore Leaks Database (offshoreleaks.icij.org) | 810,000+ entities | Public bulk download |
| UK Companies House, PSC Register | 15.6M | Bulk snapshot (May 2026) |
| Cyprus Department of Registrar of Companies (efiling.drcor.mcit.gov.cy) | manual search | Public registry |
| Ukrainian GUR, FSB Officer List (gur.gov.ua) | 619 officers | Official government publication |
| OpenSanctions (opensanctions.org) | 400,000+ entities | Public FTM JSON |
Legal codes
RSFSR Criminal Code (1926). Replaced by RSFSR Criminal Code (1960). Replaced by RF Criminal Code No. 63-FZ (13 June 1996, effective 1 January 1997). Amendments: Federal Law No. 114-FZ (25 July 2002, extremism); Federal Law No. 153-FZ (27 July 2006, terrorism expansion); Federal Law No. 65-FZ (8 June 2012, protest restrictions); Federal Law No. 280-FZ (28 December 2013, separatism); Federal Law No. 32-FZ (4 March 2022, military fake news, discrediting armed forces, rehabilitation of Nazism). Law of the Russian Federation No. 1761-1 (18 October 1991, rehabilitation of victims of political repressions).
Historians of the Soviet era
Conquest, Robert. The Great Terror: A Reassessment. Oxford University Press, 1990. The first comprehensive account of Stalin's purges, originally published 1968.
Fitzpatrick, Sheila. Everyday Stalinism: Ordinary Life in Extraordinary Times. Oxford University Press, 1999. Social history of the Soviet Union from below; examines how citizens navigated the repressive system.
Getty, J. Arch. Origins of the Great Purges: The Soviet Communist Party Reconsidered, 1933-1938. Cambridge University Press, 1985. Revisionist challenge to the totalitarian model; demonstrated bureaucratic chaos and localized nature of the terror.
Getty, J. Arch, and Oleg V. Naumov. The Road to Terror: Stalin and the Self-Destruction of the Bolsheviks, 1932-1939. Yale University Press, 1999. Declassified Politburo documents on the purge mechanism.
Kotkin, Stephen. Stalin: Paradoxes of Power, 1878-1928. Penguin Press, 2014. Vol. 1 of the definitive biography; institutional power and statecraft.
Kotkin, Stephen. Stalin: Waiting for Hitler, 1929-1941. Penguin Press, 2017. Vol. 2; covers collectivization, the Great Terror, and the lead-up to war.
Pipes, Richard. Russia Under the Bolshevik Regime. Knopf, 1993. Totalitarian model: the Soviet Union as continuation of Russian imperial autocracy.
Plokhy, Serhii. The Last Empire: The Final Days of the Soviet Union. Basic Books, 2014. Definitive account of the USSR's collapse.
Satter, David. It Was a Long Time Ago, and It Never Happened Anyway: Russia and the Communist Past. Yale University Press, 2012. Russia's failure to confront Soviet crimes; rehabilitation as bureaucratic substitute for genuine reckoning.
Snyder, Timothy. Bloodlands: Europe Between Hitler and Stalin. Basic Books, 2010. The overlapping atrocities of the Soviet and Nazi regimes in Eastern Europe; geographic framing of mass violence.
Smith, Kathleen E. Moscow 1956: Silenced Spring. Harvard University Press, 2017. Khrushchev-era thaw and the limits of de-Stalinization.
Viola, Lynne. The Unknown Gulag: The Lost World of Stalin's Special Settlements. Oxford University Press, 2007. Administrative deportation and special settlements; the extrajudicial repression this analysis cannot capture.
Note on Imperial precedents: The categories of political prosecution documented here may predate the Soviet period. Article 58 of the RSFSR code descended from Tsarist laws on political crimes (Ulozhenie o Nakazaniyakh, 1845; revised 1903). The continuity may be 180 years, not 100. This analysis does not extend to the Imperial period, but Pipes (1974, 1993) argued that Russian autocratic governance, including the criminalization of political dissent, is a continuous tradition spanning centuries. The Imperial precedents are outside the scope of this analysis but are noted for completeness.
Contemporary Russian politics and security
Galeotti, Mark. The Vory: Russia's Super Mafia. Yale University Press, 2018. Russian organized crime and its intersection with state power.
Galeotti, Mark. Putin's Wars: From Chechnya to Ukraine. Osprey Publishing, 2022. Russian military strategy and security services.
Hill, Fiona, and Clifford G. Gaddy. Mr. Putin: Operative in the Kremlin. Brookings Institution Press, 2013. Putin's worldview and strategic thinking; the operational logic behind legal instruments.
McFaul, Michael. From Cold War to Hot Peace: An American Ambassador in Putin's Russia. Houghton Mifflin Harcourt, 2018. U.S.-Russia relations and the closure of democratic space.
Stoner, Kathryn. Russia Resurrected: Its Power and Purpose in a New Global Order. Oxford University Press, 2021. Russia's resurgence as a global power despite economic weakness.
Economics and political economy
Aslund, Anders. Russia's Crony Capitalism: The Path from Market Economy to Kleptocracy. Yale University Press, 2019. Post-Soviet economic transition and the creation of the oligarchy.
Dawisha, Karen. Putin's Kleptocracy: Who Owns Russia? Simon and Schuster, 2014. The economic infrastructure of Putin's inner circle; KGB-to-oligarch pipelines.
Guriev, Sergei, and Daniel Treisman. Spin Dictators: The Changing Face of Tyranny in the 21st Century. Princeton University Press, 2022. How modern autocracies use information control rather than mass repression.
Belton, Catherine. Putin's People: How the KGB Took Back Russia and Then Took on the West. Farrar, Straus and Giroux, 2020. KGB front companies, Gosbank correspondents, and the privatization of Soviet-era financial infrastructure. Documents the continuity between Soviet and modern offshore structures that this analysis identifies independently through graph analysis.
Soldatov, Andrei, and Irina Borogan. The New Nobility: The Restoration of Russia's Security State and the Enduring Legacy of the KGB. PublicAffairs, 2010. Documents the institutional continuity between the KGB and the modern FSB at the apparatus level: training traditions, organizational culture, personnel pathways. Does not establish unit-level genealogy from the Fifth Directorate to the TsIB.
Method
Blondel, Vincent D., et al. "Fast unfolding of communities in large networks." Journal of Statistical Mechanics: Theory and Experiment 2008.10 (2008): P10008. The Louvain algorithm used in this analysis.
Fellegi, Ivan P., and Alan B. Sunter. "A theory for record linkage." Journal of the American Statistical Association 64.328 (1969): 1183-1210. Probabilistic entity matching used in the FSB-Panama analysis.
Forman, Robin. "Bochner's method for cell complexes and combinatorial Ricci curvature." Discrete and Computational Geometry 29.3 (2003): 323-374. Curvature analysis used to identify concealment topology in the offshore graph.
Miles, Alistair, and Sean Bechhofer. "SKOS Simple Knowledge Organization System Reference." W3C Recommendation (2009). The vocabulary standard used for charge-to-ICCPR and Soviet-to-modern mappings.
Hitzler, Pascal, et al. "OWL 2 Web Ontology Language Primer." W3C Recommendation (2012). The ontology language used for class definitions and inferencing.
Human rights instruments
International Covenant on Civil and Political Rights (ICCPR). Adopted 16 December 1966, entered into force 23 March 1976. USSR ratified 1973. Russian Federation succeeded 1991.
UN Convention on the Rights of the Child (CRC). Adopted 20 November 1989, entered into force 2 September 1990. USSR ratified 1990. Art. 1: "a child means every human being below the age of eighteen years."
UN Human Rights Committee, General Comment No. 29: States of Emergency (Art. 4), CCPR/C/21/Rev.1/Add.11, 31 August 2001. Defines non-derogable rights and the scope of Art. 4(2).
UN Human Rights Committee, General Comment No. 35: Liberty and Security of Person (Art. 9), CCPR/C/GC/35, 16 December 2014. Standards for pretrial detention of juveniles.
Journalism and reporting
ICIJ, "Cyprus Confidential." November 2023. 3.6 million leaked documents from Cypriot financial services firms; 67 of 105 Russian billionaires used Cyprus firms.
ICIJ, "Panama Papers." April 2016. 11.5 million leaked documents from Mossack Fonseca.
ICIJ, "Pandora Papers." October 2021. 11.9 million documents from 14 offshore service providers.
BBC Russian Service, RFE/RL, Moscow Times, CNN, Novaya Gazeta Europe, Mediazona, OVD-Info: reporting on individual child prosecution cases cited in the companion Report IV.
Memorial International. Political prisoner lists and case assessments, 1989-2021 (liquidated by Russian court order, 28 December 2021). Data preserved by partner organizations.
Technical execution: how the analysis was built.
Ontology construction
The knowledge graph was built in Python using rdflib (v7.0) for RDF triple construction and serialization. The ontology follows BFO (Basic Formal Ontology) alignment with OWL 2 DL expressivity. The SKOS charge vocabulary was hand-built using rdflib's SKOS namespace bindings. SHACL validation shapes enforce cardinality constraints on prosecution records (every Persecution must have at least one chargeArticle (sh:minCount 1) and one persecutionStartYear). The merged ontology (217,814 triples) is serialized as Turtle (.ttl) and queried locally using rdflib's SPARQL engine. No external triplestore is used. The entire pipeline runs on a single laptop from six Python scripts (01 through 06) executed sequentially against the public OVD-Info CSV export.
Graph analytics
NetworkX (v3.3) provides the graph data structure for both charge co-occurrence and offshore entity networks. Louvain community detection uses python-louvain (Blondel et al., 2008) at resolution parameter 1.0 with stability testing across 100 random seeds (NMI > 0.96). Structural break detection uses a custom permutation test: for each candidate break year, the observed modularity difference between pre/post partitions is compared against a null distribution generated by randomly permuting year labels while preserving charge structure (5,000 permutations per candidate year). Fellegi-Sunter probabilistic entity matching uses rapidfuzz (v3.14) for candidate generation and a custom scoring function with surname IDF weighting derived from the combined name corpus.
Forman-Ricci curvature
The bibliography references Forman-Ricci curvature analysis (Forman, 2003). This method was applied in the companion FSB-Panama offshore report, not in the Soviet-modern comparison. In the offshore graph, Forman-Ricci curvature identifies edges with negative curvature as structural bottlenecks: nodes that bridge otherwise disconnected communities. Severum Holdings (curvature -19, betweenness 0.294, degree 21) was identified as the most central concealment node through this method. Curvature analysis was not applied to the charge co-occurrence graphs because charge co-occurrence graphs are dense (high edge density within communities) and curvature is most informative on sparse networks with clear bridging structure. The method is described here because the bibliography cites the foundational paper.
Data streaming
The Memorial dataset (308 MB compressed, 18,973 JSON files, 1,056,670 records) is streamed from S3 into memory as a gzipped zip archive. Charge extraction uses regex parsing of unstructured Russian free-text biographies (patterns: "ст." for article numbers, "обв.:" for charge descriptions, "Приговор:" for sentences). OpenSanctions (4.3M FTM entities) is streamed from S3 and parsed line by line. The Panama Papers N-Triples file (83.9 MB compressed, 13.1M triples) requires three sequential streaming passes: Pass 1 identifies Soviet-era entity URIs by incorporation date, Pass 2 extracts names and relationships for those URIs only, Pass 3 resolves connected officer names. This multi-pass architecture keeps memory usage under 500 MB on commodity hardware.
Entity resolution: prosecution graph to offshore graph
The political prosecution graph and the offshore financial graph are connected through two mechanisms. First, OpenSanctions serves as a shared reference: sanctioned officials appear in both the OVD-Info prosecution dataset (as perpetrators or associated figures) and the ICIJ offshore datasets (as officers, shareholders, or beneficial owners of shell entities). Fellegi-Sunter probabilistic scoring with surname IDF weighting identifies candidate matches across datasets. Second, corporate registry records (UK Companies House PSC register, Cyprus Department of Registrar) provide deterministic links: a named individual (e.g., Christodoulos Vassiliades) appears in both the ICIJ offshore graph and the Cyprus company registry with matching registration numbers (HE 244054). The connection between prosecution and offshore infrastructure is structural (the same state apparatus that prosecutes dissidents also generates the officials whose assets require concealment), not transactional (this analysis does not trace financial flows between the two graphs).
Paneyakh, Ella (2014). "Faking Performance Together: Systems of Performance Evaluation in Russian Enforcement Agencies." Post-Soviet Affairs 30(2-3).
Hendley, Kathryn (2017). Everyday Law in Russia. Cornell University Press.
Getty, J. Arch and Naumov, Oleg V. (1999). The Road to Terror: Stalin and the Self-Destruction of the Bolsheviks, 1932-1939. Yale University Press.
Kuhn, Philip A. (1990). Soulstealers: The Chinese Sorcery Scare of 1768. Harvard University Press.
Modern data: OVD-Info political prosecution database, 7,132 records.
Method: Louvain community detection (Blondel et al., 2008) on charge co-occurrence graphs.
SKOS mappings: 20 Soviet-to-modern functional equivalences (analyst judgments).
RSFSR Criminal Code (1960). RF Criminal Code (1996). Same algorithm. 80 years apart.
© 2026 Trace Origin LLC