babylon.engine.systems.struggle
Struggle system for the Babylon simulation - The Agency Layer.
Implements the “George Floyd Dynamic”: State Violence (The Spark) + Accumulated Agitation (The Fuel) = Insurrection (The Explosion).
This system solves the “Spectator Problem” where entities suffer but don’t react. It gives political agency to oppressed classes by modeling:
The Spark: Police brutality (EXCESSIVE_FORCE) is a stochastic function of Repression
The Combustion: A spark becomes an UPRISING if population is agitated and hopeless
The Result: Uprisings destroy wealth but permanently increase solidarity infrastructure
Key Insight: The explosion is what builds the solidarity bridges that enable consciousness transmission in subsequent ticks. Revolution is built through shared struggle, not spontaneous awakening.
Target Social Roles: - PERIPHERY_PROLETARIAT: Exploited workers in the global periphery - LUMPENPROLETARIAT: Outside formal economy, precarious existence
These classes face the highest repression and have the most agency in creating revolutionary conditions through collective action.
Classes
Agency Layer - The Struggle System ("George Floyd Dynamic"). |
- class babylon.engine.systems.struggle.StruggleSystem[source]
Bases:
objectAgency Layer - The Struggle System (“George Floyd Dynamic”).
This system runs AFTER SurvivalSystem (needs P values) and BEFORE ContradictionSystem. It gives agency to oppressed classes through the Stochastic Riot mechanic:
Calculate EXCESSIVE_FORCE probability:
spark_prob = repression * spark_scaleRoll for spark occurrence
Check uprising condition:
(Spark OR P(S|R) > P(S|A)) AND agitation > thresholdExecute uprising:
Economic damage:
wealth *= (1 - destruction_rate)Solidarity gain: Increase solidarity_strength on incoming SOLIDARITY edges
Class consciousness gain: All nodes in uprising gain consciousness
Emit events for narrative layer
The solidarity built in Tick N enables SolidaritySystem transmission in Tick N+1.
- name = 'Struggle'