EOH Dynamics¶
Module: hours_eoh/core/eoh_dynamics.py
Time-evolution of EOH obligations: compounding from deferred maintenance, regenerative labor offsets, investment ranking, and paydown schedules.
Deferred Maintenance¶
deferred_eoh(accumulated_eoh, fulfilled_eoh) → float¶
The maintenance deficit: accumulated EOH obligation minus what was fulfilled.
eoh_compounding(deferred, asset_type, time_deferred, …) → float¶
Models non-linear compounding of deferred EOH. A neglected roof does not need five years of routine maintenance — it needs replacement. Behavior is discontinuous, not smooth like monetary interest.
Not interest
EOH compounding is physics, not a social convention. It generates obligation without creating TEH. No party benefits from the compounding; all parties pay through degraded systems.
compounding_profile(asset_type, deferred, …) → list[dict]¶
Projects deferred EOH accumulation over a period.
deferred_eoh_paydown(regenerative_result, current_deferred) → dict¶
Retires accumulated deferred EOH through regenerative labour, from a regenerative_offset() result.
update_deferred_from_fulfillment(current_deferred, fulfilled_eoh) → dict¶
Updates the deferred balance after a fulfillment event.
Regenerative Labor¶
regenerative_offset(labor_type, regenerative_hours, epsilon) → dict¶
Quantifies the future EOH reduction from regenerative labor (soil enrichment, preventive maintenance) versus maintenance labor (current EOH fulfillment).
regenerative_vs_maintenance_comparison(labor_hours, regen_type, current_eoh_demand, epsilon) → dict¶
Compares outcomes of allocating labor to regenerative vs. maintenance work over a planning horizon.
eoh_reduction_ratio(production_cost_eoh, annual_maintenance_eoh, annual_eoh_eliminated, design_life, …) → dict¶
Ratio of EOH eliminated to EOH generated (maintenance burden) for a proposed investment. Values > 1.0 indicate a net EOH reduction — the case for building. Research-only: not wired into the dashboard or simulation.
regenerative_investment_required(eoh_reduction_target, labor_type, epsilon, …) → dict¶
Annual labour hours needed to achieve a target future EOH reduction rate through regenerative labour.
Investment Ranking¶
These three are research-only tools — not wired into the dashboard or simulation.
rank_investment_candidates(candidates, epsilon) → list[dict]¶
Ranks infrastructure investment candidates by their EOH reduction ratio. Highest-leverage investments first.
from hours_eoh.core.eoh_dynamics import rank_investment_candidates
candidates = [
{"name": "water treatment", "production_cost_eoh": 50_000,
"annual_maintenance_eoh": 1_000, "annual_eoh_eliminated": 8_000, "design_life": 40},
{"name": "road resurfacing", "production_cost_eoh": 10_000,
"annual_maintenance_eoh": 400, "annual_eoh_eliminated": 500, "design_life": 10},
]
ranked = rank_investment_candidates(candidates, epsilon=0.40)
print([c["name"] for c in ranked]) # highest net EOH reduction first
optimal_investment(available_labor_eoh, candidates, epsilon) → dict¶
Allocates a labour budget (available_labor_eoh, h/yr) across candidates to maximise EOH reduction.
maintenance_strategy_compare(asset_type, annual_eoh, teh_value, …) → dict¶
Compares the total human-labour EOH cost of three strategies over a horizon — continuous maintenance, deferral to write-down, and replacement at write-down — and names the cheapest.