babylon.engine.observers.persistence_observer

Persistence observer for automatic state persistence after tick (Feature 037).

Implements SimulationObserver protocol. Called after each tick to persist state to the configured RuntimePersistence backend. Uses isinstance() check for PostgresRuntimeExtensions to persist subsystem state.

Usage:

from babylon.engine.observers.persistence_observer import PersistenceObserver

observer = PersistenceObserver(
    persistence=postgres_runtime,
    session_id=session_id,
    tracer=trace_recorder,
)
simulation.attach_observer(observer)

Classes

PersistenceObserver(persistence, session_id)

Observer that persists simulation state after each tick.

class babylon.engine.observers.persistence_observer.PersistenceObserver(persistence, session_id, tracer=None)[source]

Bases: object

Observer that persists simulation state after each tick.

Implements SimulationObserver protocol. No changes to Simulation facade or SimulationEngine required.

Parameters:
  • persistence (RuntimePersistence)

  • session_id (UUID)

  • tracer (TraceCollector | None)

_persistence

Backend implementing RuntimePersistence.

_session_id

Session UUID for data scoping.

_tracer

Optional trace collector.

__init__(persistence, session_id, tracer=None)[source]

Initialize the persistence observer.

Parameters:
  • persistence (RuntimePersistence) – Backend implementing RuntimePersistence.

  • session_id (UUID) – Session UUID for data scoping.

  • tracer (TraceCollector | None) – Optional trace collector for execution tracing.

Return type:

None

property name: str

Observer identifier.

on_simulation_start(initial_state, config)[source]

Called when simulation begins. Persists initial state and config.

Parameters:
Return type:

None

on_tick(previous_state, new_state)[source]

Called after each tick. Persists new state.

Parameters:
  • previous_state (WorldState) – WorldState before the tick (unused).

  • new_state (WorldState) – WorldState after the tick.

Return type:

None

on_simulation_end(final_state)[source]

Called when simulation ends. Finalizes metadata.

Parameters:

final_state (WorldState) – The final WorldState.

Return type:

None