babylon.formulas.dynamic_balance

Dynamic Balance formulas (Sprint 3.4.4).

The bourgeoisie as a rational actor responding to material conditions: - BRIBERY: High pool, low tension -> increase wages - AUSTERITY: Low pool, low tension -> cut wages - IRON_FIST: Low pool, high tension -> increase repression - CRISIS: Critical pool -> emergency measures

Functions

calculate_bourgeoisie_decision(pool_ratio, ...)

Calculate bourgeoisie policy decision based on pool level and tension.

Classes

BourgeoisieDecision()

Enumeration of bourgeoisie decision types.

class babylon.formulas.dynamic_balance.BourgeoisieDecision[source]

Bases: object

Enumeration of bourgeoisie decision types.

Sprint 3.4.4: Dynamic Balance - The “Driver” decisions based on imperial rent pool level and aggregate class tension.

NO_CHANGE = 'no_change'
BRIBERY = 'bribery'
AUSTERITY = 'austerity'
IRON_FIST = 'iron_fist'
CRISIS = 'crisis'
babylon.formulas.dynamic_balance.calculate_bourgeoisie_decision(pool_ratio, aggregate_tension, high_threshold=0.7, low_threshold=0.3, critical_threshold=0.1, bribery_wage_delta=0.05, austerity_wage_delta=-0.05, iron_fist_repression_delta=0.10, crisis_wage_delta=-0.15, crisis_repression_delta=0.20, bribery_tension_threshold=0.3, iron_fist_tension_threshold=0.5)[source]

Calculate bourgeoisie policy decision based on pool level and tension.

Sprint 3.4.4: Dynamic Balance - The bourgeoisie as a rational actor responding to material conditions.

Decision Matrix:

pool_ratio >= high AND tension < bribery_tension -> BRIBERY pool_ratio < critical -> CRISIS (emergency measures) pool_ratio < low AND tension > iron_fist_tension -> IRON_FIST pool_ratio < low AND tension <= iron_fist_tension -> AUSTERITY else -> NO_CHANGE (maintain status quo)

Parameters:
  • pool_ratio (float) – Current pool / initial pool (0.0 to 1.0+)

  • aggregate_tension (float) – Average tension across class relationships (0.0 to 1.0)

  • high_threshold (float) – Pool ratio above which prosperity is declared (default 0.7)

  • low_threshold (float) – Pool ratio below which austerity begins (default 0.3)

  • critical_threshold (float) – Pool ratio below which crisis fires (default 0.1)

  • bribery_wage_delta (float) – Wage increase during prosperity (default 0.05)

  • austerity_wage_delta (float) – Wage cut during austerity (default -0.05)

  • iron_fist_repression_delta (float) – Repression increase during iron fist (default 0.10)

  • crisis_wage_delta (float) – Emergency wage cut during crisis (default -0.15)

  • crisis_repression_delta (float) – Emergency repression spike (default 0.20)

  • bribery_tension_threshold (float) – Max tension for bribery policy (default 0.3)

  • iron_fist_tension_threshold (float) – Min tension for iron fist policy (default 0.5)

Returns:

str, wage_delta: float, repression_delta: float) - decision: One of BourgeoisieDecision values - wage_delta: Change to wage rate (positive = increase) - repression_delta: Change to repression level (positive = increase)

Return type:

Tuple of (decision

Example

# Prosperity: high pool, low tension -> increase wages decision, wage_d, repr_d = calculate_bourgeoisie_decision(0.8, 0.2) # Returns (“bribery”, 0.05, 0.0)

# Crisis: pool below critical -> emergency measures decision, wage_d, repr_d = calculate_bourgeoisie_decision(0.05, 0.5) # Returns (“crisis”, -0.15, 0.20)