babylon.engine.dialectics.surplus_distribution

SurplusDistributionDialectic — s = p + i + r + t (V3 Ch9-10).

Models how total surplus value decomposes into competing revenue claims: profit of enterprise, interest, ground rent, and taxes.

See also

babylon.economics.distribution: Surplus distribution calculators. babylon.engine.dialectics.crises.DebtSpiralCrisisDialectic

Classes

SurplusDistributionDialectic(**data)

Surplus Value Distribution — s = p + i + r + t.

SurplusDistributionPole(**data)

Pole A for the Distribution dialectic.

class babylon.engine.dialectics.surplus_distribution.SurplusDistributionDialectic(**data)[source]

Bases: Dialectic[SurplusDistributionPole, EmptyPole]

Surplus Value Distribution — s = p + i + r + t.

Named “Distribution” rather than “Transformation” to distinguish this from the value → price transformation problem (V3 Ch9-10), which is out of scope (spec 024, Assumptions). This dialectic models how total surplus decomposes into competing revenue claims.

Pole A stores the s = p + i + r + t decomposition. Weight tracks the share of surplus retained by industrial capital (enterprise profit) versus claims by money-capital (interest), landed capital (rent), and the state (taxes).

Weight semantics:

< 0: Enterprise profit dominates (healthy accumulation). > 0: Claimants dominate (profit squeeze / debt spiral).

Motion law:

Reads upstream interest rate changes and recomputes the distribution. Weight shifts toward +1 as claims crowd out enterprise profit.

Sublation:

When claims_exceed_surplus is True, sublates to DebtSpiralCrisisDialectic.

Parameters:
type_tag: str
step(inputs, world)[source]

Motion law T for surplus value distribution.

Parameters:
  • inputs (TickInputs) – Upstream outputs. Looks for own id’s entry with interest_rate_increase (float).

  • world (WorldView) – Read-only world context.

Return type:

SurplusDistributionDialectic

Returns:

New SurplusDistributionDialectic with updated weight and poles.

sublate()[source]

Sublate to debt spiral when claims exceed surplus (FR-016).

Return type:

Dialectic[Any, Any] | None

Returns:

DebtSpiralCrisisDialectic if claims exceed surplus, else None.

observe()[source]

Project surplus distribution state.

Return type:

dict[str, Any]

Returns:

Observation dict with s, p, i, r, t components.

invariants()[source]

Verify accounting identity: s = p + i + r + t.

Return type:

list[str]

Returns:

List of violation descriptions.

model_config: ClassVar[ConfigDict] = {'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

id: UUID
pole_a: A
pole_b: B
weight: float
parent_id: UUID | None
tick_created: int
tick_updated: int
class babylon.engine.dialectics.surplus_distribution.SurplusDistributionPole(**data)[source]

Bases: BaseModel

Pole A for the Distribution dialectic.

Reimplements the surplus value distribution identity from economics.distribution.SurplusValueDistribution for the dialectic layer. The formula p = s - i - r - t is identical to SurplusValueDistribution.profit_of_enterprise. This is intentional: the dialectic receives pre-computed distribution inputs and does not perform data-source lookups.

See also

babylon.economics.distribution.types.SurplusValueDistribution

Parameters:
total_surplus

Total surplus value produced (s).

interest_payments

Interest claim on surplus (i).

ground_rent

Ground rent claim on surplus (r).

taxes

Tax claim on surplus (t).

model_config: ClassVar[ConfigDict] = {'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

total_surplus: float
interest_payments: float
ground_rent: float
taxes: float
property profit_of_enterprise: float

p = s - i - r - t.

Type:

Residual

property claims_exceed_surplus: bool

Whether claims exceed total surplus (FR-016).