babylon.models.enums.events

Simulation event-bus enums (event types, resolutions, outcomes).

Spec 058: extracted from the historical babylon.models.enums monolith. Re-exported via babylon.models.enums.__init__.

Classes

EventType(*values)

Types of simulation events for the narrative layer.

GameOutcome(*values)

Possible game ending outcomes (Slice 1.6: Endgame Detection).

ResolutionType(*values)

How contradictions can resolve.

class babylon.models.enums.events.EventType(*values)[source]

Bases: StrEnum

Types of simulation events for the narrative layer.

These event types are published to the EventBus when significant state changes occur, enabling the AI Observer to generate narrative.

Values:

SURPLUS_EXTRACTION: Imperial rent extracted from worker to owner IMPERIAL_SUBSIDY: Wealth converted to suppression to stabilize client state SOLIDARITY_AWAKENING: Periphery worker enters active struggle (consciousness >= threshold) CONSCIOUSNESS_TRANSMISSION: Consciousness flows via SOLIDARITY edge from periphery to core MASS_AWAKENING: Target consciousness crosses mass awakening threshold ECONOMIC_CRISIS: Imperial rent pool depleted below critical threshold (Sprint 3.4.4) ECOLOGICAL_OVERSHOOT: Consumption exceeds biocapacity (Slice 1.4 - Metabolic Rift) EXCESSIVE_FORCE: State violence “spark” - police brutality event (Agency Layer) UPRISING: Mass insurrection triggered by spark + accumulated agitation (Agency Layer) SOLIDARITY_SPIKE: Solidarity infrastructure built through shared struggle (Agency Layer) POWER_VACUUM: Comprador insolvency triggers George Jackson Bifurcation REVOLUTIONARY_OFFENSIVE: Organized labor seizes opportunity during power vacuum FASCIST_REVANCHISM: Core workers react with nationalism during power vacuum RUPTURE: Contradiction tension reached critical threshold, triggering phase transition PHASE_TRANSITION: Topology percolation threshold crossed (Sprint 3.3) ENTITY_DEATH: Entity starved (wealth < consumption_needs) - Material Reality Refactor POPULATION_DEATH: Probabilistic mortality from inequality (Mass Line Refactor) POPULATION_ATTRITION: Grinding Attrition deaths from coverage deficit (Mass Line Phase 3)

Terminal Crisis Dynamics (ai/terminal-crisis-dynamics.md):

PERIPHERAL_REVOLT: Periphery severs EXPLOITATION edges when P(S|R) > P(S|A) SUPERWAGE_CRISIS: Core bourgeoisie can’t afford super-wages (pool exhausted) CLASS_DECOMPOSITION: Labor aristocracy splits into enforcers + internal proletariat CONTROL_RATIO_CRISIS: Prisoners exceed guard capacity (ratio inverted) TERMINAL_DECISION: System bifurcates to revolution or genocide

SURPLUS_EXTRACTION = 'surplus_extraction'
IMPERIAL_SUBSIDY = 'imperial_subsidy'
SOLIDARITY_AWAKENING = 'solidarity_awakening'
CONSCIOUSNESS_TRANSMISSION = 'consciousness_transmission'
MASS_AWAKENING = 'mass_awakening'
ECONOMIC_CRISIS = 'economic_crisis'
ECOLOGICAL_OVERSHOOT = 'ecological_overshoot'
EXCESSIVE_FORCE = 'excessive_force'
UPRISING = 'uprising'
SOLIDARITY_SPIKE = 'solidarity_spike'
POWER_VACUUM = 'power_vacuum'
REVOLUTIONARY_OFFENSIVE = 'revolutionary_offensive'
FASCIST_REVANCHISM = 'fascist_revanchism'
RUPTURE = 'rupture'
PHASE_TRANSITION = 'phase_transition'
ENDGAME_REACHED = 'endgame_reached'
ENTITY_DEATH = 'entity_death'
POPULATION_DEATH = 'population_death'
POPULATION_ATTRITION = 'population_attrition'
PERIPHERAL_REVOLT = 'peripheral_revolt'
SUPERWAGE_CRISIS = 'superwage_crisis'
CLASS_DECOMPOSITION = 'class_decomposition'
CONTROL_RATIO_CRISIS = 'control_ratio_crisis'
TERMINAL_DECISION = 'terminal_decision'
CRISIS_PHASE_TRANSITION = 'crisis_phase_transition'
DISPOSSESSION_CASCADE = 'dispossession_cascade'
BIFURCATION_THRESHOLD = 'bifurcation_threshold'
EDGE_MODE_TRANSITION = 'edge_mode_transition'
PRINCIPAL_CONTRADICTION_SHIFT = 'principal_contradiction_shift'
LEVEL_TRANSITION = 'level_transition'
CO_OPTIVE_BREAKDOWN = 'co_optive_breakdown'
LATENT_CONTRADICTION_RELEASE = 'latent_contradiction_release'
ASPECT_REVERSAL = 'aspect_reversal'
RESERVE_ARMY_PRESSURE = 'reserve_army_pressure'
DISPOSSESSION_EVENT = 'dispossession_event'
VALUE_TRANSFER = 'value_transfer'
EXPLOITATION_MODE_SHIFT = 'exploitation_mode_shift'
LIFECYCLE_TRANSITION = 'lifecycle_transition'
LEGITIMATION_CRISIS = 'legitimation_crisis'
LEGITIMATION_RECOVERY = 'legitimation_recovery'
INHERITANCE_TRANSFER = 'inheritance_transfer'
DUAL_CIRCUIT_INTERFERENCE = 'dual_circuit_interference'
ORGANIZATIONAL_ACTION = 'organizational_action'
STATE_REPRESSION = 'state_repression'
STATE_SURVEILLANCE = 'state_surveillance'
CONSCIOUSNESS_SHIFT = 'consciousness_shift'
INITIATIVE_CONTESTED = 'initiative_contested'
INFRASTRUCTURE_CHANGE = 'infrastructure_change'
BIFURCATION_TENDENCY_CHANGE = 'bifurcation_tendency_change'
CALIBRATION_DISAGREEMENT = 'calibration_disagreement'
STATE_ACTION_EXECUTED = 'state_action_executed'
FASCIST_CONVERGENCE = 'fascist_convergence'
FACTION_SHIFT = 'faction_shift'
THREAD_ESCALATION = 'thread_escalation'
LEGAL_FRAMEWORK_ENACTED = 'legal_framework_enacted'
LEGAL_FRAMEWORK_REVOKED = 'legal_framework_revoked'
INSTITUTION_FACTION_SHIFT = 'institution_faction_shift'
INSTITUTION_REPRODUCTION = 'institution_reproduction'
INSTITUTION_BONAPARTIST_MODE = 'institution_bonapartist_mode'
CALIBRATION_AXIOM_VIOLATION = 'calibration_warning.axiom_violation'

Periphery-wage source published a ratio < 1.0 (FR-002, Clarifications 2026-05-08).

CALIBRATION_QCEW_CARRY_FORWARD = 'calibration_warning.qcew_carry_forward'

QCEW data missing for (county, year); employment shares carried forward (FR-004).

CALIBRATION_PHI_HOUR_OUTLIER = 'calibration_warning.phi_hour_outlier'

Per-county phi_hour fell outside the LeontiefRentDefines plausibility bounds (FR-008).

SOVEREIGN_COLLAPSE = 'sovereign_collapse'
TERRITORY_TRANSITION = 'territory_transition'
FACTION_VICTORY = 'faction_victory'
SECESSION_DECLARED = 'secession_declared'
CIVIL_WAR_DECLARED = 'civil_war_declared'
RED_SETTLER_TRAP_DETECTED = 'red_settler_trap_detected'
DUAL_POWER_ACTIVE = 'dual_power_active'
RED_OGV_ENDGAME = 'red_ogv_endgame'
FRAGMENTED_COLLAPSE_ENDGAME = 'fragmented_collapse_endgame'
FASCIST_DRIFT = 'fascist_drift'
FASCIST_RECRUITMENT = 'fascist_recruitment'
ORGANIZATIONAL_FRACTURE = 'organizational_fracture'
RED_BROWN_COUP = 'red_brown_coup'
POGROM = 'pogrom'
LOCKOUT = 'lockout'
VIGILANTISM = 'vigilantism'
SPONTANEOUS_RIOT = 'spontaneous_riot'
class babylon.models.enums.events.GameOutcome(*values)[source]

Bases: StrEnum

Possible game ending outcomes (Slice 1.6: Endgame Detection).

The simulation can end in three ways, plus the ongoing state:

Values:

IN_PROGRESS: Game is still ongoing (no endgame condition met yet).

REVOLUTIONARY_VICTORY: The masses have won. Requires:
  • percolation_ratio >= 0.7 (70%+ in giant component)

  • average class_consciousness > 0.8 (ideological clarity)

ECOLOGICAL_COLLAPSE: The planet has collapsed. Requires:
  • overshoot_ratio > 2.0 for 5 consecutive ticks

(Capital’s metabolic rift has become fatal)

FASCIST_CONSOLIDATION: Fascism has won. Requires:
  • national_identity > class_consciousness for 3+ nodes

(False consciousness prevents class-based organization)

Priority when multiple conditions are met:

REVOLUTIONARY_VICTORY > ECOLOGICAL_COLLAPSE > FASCIST_CONSOLIDATION

IN_PROGRESS = 'in_progress'
REVOLUTIONARY_VICTORY = 'revolutionary_victory'
ECOLOGICAL_COLLAPSE = 'ecological_collapse'
FASCIST_CONSOLIDATION = 'fascist_consolidation'
RED_OGV = 'red_ogv'
FRAGMENTED_COLLAPSE = 'fragmented_collapse'
class babylon.models.enums.events.ResolutionType(*values)[source]

Bases: StrEnum

How contradictions can resolve.

Based on dialectical materialism, contradictions resolve through one of three mechanisms. The resolution type determines what happens to the system after a contradiction reaches critical intensity.

Values:

SYNTHESIS: Dialectical resolution - opposites unite at higher level RUPTURE: Revolutionary break - system undergoes fundamental change SUPPRESSION: Forced dormancy - contradiction remains but is contained

SYNTHESIS = 'synthesis'
RUPTURE = 'rupture'
SUPPRESSION = 'suppression'