babylon.engine.dialectics.invariants_v2

Universal and per-type invariant checking for the v2 engine.

The engine enforces three universal invariants on every Dialectic at every tick:

  1. weight [-1, 1]

  2. Type stability across motion (a CommodityDialectic remains one)

  3. step() returns a Dialectic of the declared type

Per-type invariants are defined by each Dialectic subclass via the invariants() method.

Functions

check_all_invariants(world)

Check all invariants across every dialectic in the world.

check_universal_invariants(d)

Check universal invariants on a single dialectic.

babylon.engine.dialectics.invariants_v2.check_universal_invariants(d)[source]

Check universal invariants on a single dialectic.

Universal invariants:
  • weight ∈ [-1.0, 1.0]

  • type_tag is a non-empty string

These are defensive checks — Pydantic should already enforce weight bounds, but we double-check at runtime as a safety net.

Parameters:

d (Dialectic[Any, Any]) – Any Dialectic instance.

Return type:

list[str]

Returns:

List of violation descriptions. Empty = valid.

babylon.engine.dialectics.invariants_v2.check_all_invariants(world)[source]

Check all invariants across every dialectic in the world.

Runs universal invariants + per-type invariants on every dialectic.

Parameters:

world (World) – The current World state.

Return type:

list[str]

Returns:

Aggregated list of all invariant violations. Empty = valid world.