George Jackson Bifurcation Model ================================ The George Jackson model describes how economic crisis routes consciousness toward either **class solidarity** or **national identity** (fascism), depending on the presence of solidarity networks. Named after the revolutionary theorist George Jackson, this model captures a critical insight: material conditions alone do not determine revolutionary outcomes—organizational infrastructure matters. Theoretical Foundation ---------------------- When wages fall and material conditions deteriorate, agitation energy increases. But where does this energy go? **Without SOLIDARITY edges:** Energy routes toward national/racial identity → Fascism (+1 ideology) **With SOLIDARITY edges:** Energy routes toward class consciousness → Revolution (-1 ideology) This creates a **bifurcation** in ideological space: .. mermaid:: flowchart TB A[Agitation Energy] --> B{SOLIDARITY
Edge Present?} B -->|No| C[FASCISM
+ideology +1.0] B -->|Yes| D[REVOLUTION
-ideology -1.0] C --> E[National/Racial
Identity] D --> F[Class
Consciousness] The Ideology Axis ----------------- Babylon models ideology on a continuous scale: .. list-table:: Ideology Scale :header-rows: 1 :widths: 20 80 * - Value - Meaning * - -1.0 - Revolutionary class consciousness * - 0.0 - Apolitical / acquiescent * - +1.0 - National/racial identity (fascism) The scale represents not moral value but **organizational allegiance**: - Negative values → International proletarian solidarity - Positive values → National/imperial identification Consciousness Drift Formula --------------------------- Consciousness drift is calculated each tick: .. math:: \Delta I = k \cdot A \cdot D Where: - :math:`\Delta I` = Change in ideology - :math:`k` = Drift sensitivity coefficient (from GameDefines) - :math:`A` = Agitation level (from material conditions) - :math:`D` = Direction (+1 or -1, determined by SOLIDARITY presence) **Agitation Level:** Agitation increases when: - Wages fall below subsistence - Wealth declines over time - Imperial rent extraction intensifies **Direction Determination:** .. code-block:: python def determine_direction(class_node, graph): """Determine ideological direction from solidarity network.""" solidarity_edges = [ e for e in graph.edges(class_node) if graph.edges[e]["edge_type"] == EdgeType.SOLIDARITY ] if solidarity_edges: return -1 # Class consciousness else: return +1 # National identity Empirical Validation -------------------- The George Jackson model has been validated through parameter sweep analysis with the following findings: **Key Parameter: solidarity_decay_base** .. list-table:: Sweep Results :header-rows: 1 :widths: 20 40 40 * - Decay Rate - Outcome - Ideology Range * - 0.90 - Revolution (tick ~30) - [-1.0, -0.8] * - 0.95 - Stalemate - [-0.5, 0.5] * - 0.99 - Fascism (tick ~50) - [0.8, 1.0] The solidarity decay rate determines whether class networks persist long enough to route agitation toward revolution. Historical Parallel ------------------- The model captures the historical pattern observed by George Jackson and other revolutionary theorists: 1. **Weimar Germany (1929-1933)** - Economic crisis (wages fell) - Weak KPD solidarity networks - Agitation routed → National Socialism 2. **Russia (1905-1917)** - Economic crisis (wages fell) - Strong Bolshevik organizational networks - Agitation routed → October Revolution 3. **USA (2008-2016)** - Economic crisis (wages stagnated) - Weak labor/socialist networks - Agitation routed → Trump/MAGA nationalism Implementation -------------- The bifurcation logic is implemented in the ConsciousnessSystem: .. code-block:: python # src/babylon/engine/systems/ideology.py class ConsciousnessSystem: def process(self, graph, services, context): for node_id, data in graph.nodes(data=True): if data.get("_node_type") != "social_class": continue # Calculate agitation from material conditions agitation = self._calculate_agitation(node_id, data, graph) # Determine direction from solidarity network direction = self._determine_direction(node_id, graph) # Apply consciousness drift drift = self.drift_sensitivity * agitation * direction new_ideology = clamp(data["ideology"] + drift, -1.0, 1.0) graph.nodes[node_id]["ideology"] = new_ideology Key Parameters -------------- The following ``GameDefines`` parameters control bifurcation behavior: .. list-table:: Configuration Parameters :header-rows: 1 :widths: 30 20 50 * - Parameter - Default - Effect * - ``consciousness.drift_sensitivity_k`` - 0.1 - How fast ideology changes * - ``consciousness.agitation_threshold`` - 0.3 - Minimum agitation to trigger drift * - ``solidarity.decay_base`` - 0.95 - How fast SOLIDARITY edges decay * - ``solidarity.transmission_rate`` - 0.1 - How fast consciousness spreads Strategic Implications ---------------------- For revolutionary movements in the simulation: 1. **Build SOLIDARITY edges early** Without organizational infrastructure, crisis will route to fascism. 2. **Maintain solidarity networks** Higher decay rates favor fascism; strong networks favor revolution. 3. **Crisis is necessary but not sufficient** Material degradation creates agitation, but organization determines its direction. See Also -------- - :doc:`/concepts/survival-calculus` - How agents choose acquiescence vs revolution - :doc:`/concepts/topology` - SOLIDARITY edge dynamics - :doc:`/concepts/percolation-theory` - Network condensation and resilience - :doc:`/reference/formulas` - Complete formula reference - :doc:`/reference/configuration` - GameDefines parameters - :py:mod:`babylon.engine.systems.ideology` - Implementation details