babylon.engine.systems.survival
Survival systems for the Babylon simulation - The Calculus of Living.
Sprint 3.4.2: Fixed Bug 1 - Organization is now dynamic based on SOLIDARITY edges. P(S|R) = (base_organization + solidarity_bonus) / repression
Mass Line Phase 4: P(S|A) now uses per-capita wealth, not aggregate. A block of 50,000 workers with $1000 total sees wealth_per_capita=$0.02 (impoverished).
The solidarity_bonus is the sum of incoming SOLIDARITY edge weights (solidarity_strength). This makes organization a function of class solidarity infrastructure, not just a static value.
Classes
Phase 3: Survival Calculus (P(S|A) vs P(S|R)). |
- class babylon.engine.systems.survival.SurvivalSystem[source]
Bases:
objectPhase 3: Survival Calculus (P(S|A) vs P(S|R)).
Bug Fix (Sprint 3.4.2): Organization is now DYNAMIC. organization = base_organization + solidarity_bonus
Mass Line Phase 4: P(S|A) uses per-capita wealth. wealth_per_capita = wealth / population
Where solidarity_bonus = sum of incoming SOLIDARITY edge weights. This ensures that High Solidarity scenarios produce higher P(S|R).
- name = 'Survival Calculus'
- step(graph, services, _context)[source]
Update P(S|A) and P(S|R) for all entities.
Mass Line Phase 4: P(S|A) uses wealth_per_capita, not aggregate wealth. This ensures demographic blocks are evaluated per-person, not as monolith.
- Organization is calculated as:
effective_org = base_org * solidarity_multiplier
Where solidarity_multiplier = 1.0 + sum(solidarity_strength for incoming SOLIDARITY edges)