Core — Physics Layer¶
Package: hours_eoh/core/
The core/ package contains measurement-driven mechanics — the stable API. It imports only from data.py, params.py, and other core/ modules. Nothing imports from core/ except the layers above it (land/, scenarios/, research/, utils/).
Module Overview¶
| Module | What it models |
|---|---|
trajectory.py |
Canonical arc at each ε; ε derivation from physical state |
eoh_generation.py |
Four EOH domain functions + total_eoh() — principled measurement from physical state |
eoh_fulfillment.md |
EOH → TEH pipeline; human/machine split; registration |
multipliers.py |
Condition II: skill-tier multipliers, population-weighted band |
fiscal.py |
Levies, allocations, sufficiency guarantee, trust mechanics |
prices.py |
TEH prices, basket cost, purchasing power arc |
capital.py |
Asset lifecycle, write-down, birth/death events |
population.py |
Age distribution, aging, demographic events (on same page as capital) |
eoh_dynamics.py |
Compounding, regenerative labor, investment ranking |
workforce.py |
Competency reserve, minimum hours allocation |
civilization.py |
Endogenous ε from capital stock (on same page as workforce) |
conditions.py |
Structural conditions I–IV enforcement |
dashboard.py |
EOH health, fiscal health, system dashboard (on same page as conditions) |
simulation.py |
Period simulation engine |
The EOH → TEH Pipeline¶
from hours_eoh.core.eoh_generation import total_eoh
from hours_eoh.core.eoh_fulfillment import (
eoh_to_teh_pipeline, human_eoh_per_domain, registered_eoh, teh_created,
)
from hours_eoh.core.registration import (
personal_eoh_registration_share, total_registration_share,
)
epsilon = 0.40
# Step 1: physical state → total EOH (canonical arc here; pass real state for a real collective)
eoh = total_eoh(epsilon=epsilon)
# Step 2: EOH → human/machine split
human = human_eoh_per_domain(eoh, epsilon)
# Step 3: registration — different curves per domain
# Personal: personal_eoh_registration_share(epsilon) — near-zero at ε=0
# Other: total_registration_share(epsilon) — labor composite sigmoid
reg = (registered_eoh(human["personal"], personal_eoh_registration_share(epsilon))
+ registered_eoh(human["infrastructure"] + human["ecological"] + human["knowledge"],
total_registration_share(epsilon)))
# Step 4: TEH creation
teh = teh_created(reg)
# Or use the full pipeline in one call — which is what to use, because it also
# handles the labour constraint, deferral and the per-domain registration detail:
result = eoh_to_teh_pipeline(epsilon)
Key design invariant: EOH generation takes physical state. EOH fulfillment takes ε. These two concerns must never be conflated. See Design Principles.