← All Baltor Engineering Posts · Post 08 of 08 · 2026-10-18 · Loop Runtime & Engine Slots · 9 min read · Raw Markdown (.md) · Open Live Studio ↗

One Loop Runtime: Composing Deterministic and Model Nodes with Swappable Engine Slots

Every executable graph vertex in Loop Engine is a Loop. Learn how Practitioner, Intelligence, and Solution roles combine with swappable engine slots in engine_slots.yaml so engines can be replaced at runtime without changing a caller.


ONE LOOP RUNTIME: FIXED TYPED EDGES + SWAPPABLE ENGINE SLOTS (ENGINE_SLOTS.YAML) EXECUTABLE VERTEX: LOOP Roles: Practitioner | Intelligence | Solution Modes: deterministic | hybrid | non-det Settings: contract, loop/exit cond, budget, and declared permissions No Loop subclasses or ad-hoc vertices TYPED VERSIONED COMPONENT EDGE Request Schema (v1) Result Schema (v1) Explicit Refusal Codes Callers never bind to an engine Conformance Kit Gate Engine 1: Baltor Native Rules 0.16 ms | 15/15 Conformance Engine 2: Pinned OSS Adapter Sandboxed | Commit + License Engine 3: Hybrid Model Slot Pattern Card + Verifier Gate

In most agent frameworks, adopting an open-source library or switching from a model call to a deterministic rule engine requires rewriting the orchestration graph. In Loop Engine, every executable graph vertex is a Loop, and every functional capability outside the fixed runtime frame binds to a typed engine slot declared in engine_slots.yaml. Callers communicate only with the slot's fixed, versioned request and result contract. A host setting or runtime preference switches between a Baltor-native engine, a containerized GitHub adapter, or a model-assisted engine without editing a single caller.

The Loop classification tree

Passive files, scene meshes, ports, slots, and edges are not graph vertices. Every executable graph vertex is a Loop classified along four orthogonal axes:

Loop
├── Relationship: Starting, Spawned by, Queried by, Retrieved by, Connected from
├── Role: Practitioner, Intelligence, or Solution
├── Mode: deterministic, hybrid, or non-deterministic
└── Settings: contract, loop condition, exit condition, budget, and permissions

A discrete cognitive or act step Loop node retains its complete behavioral explanation: a narrowly scoped assignment, selected context and resources, separately initialized harnesses, permitted harness changes, expectation checks, iteration until declared completion conditions, continued production of alternative outputs, and protection against repeated external effects. Publication of an output is separate from completion.

How engine_slots.yaml and conformance kits work

When we integrate an external project from GitHub or a research paper, it never enters the codebase as an ad-hoc dependency. Instead:

# Runtime Engine Selection by Declared Order and Recorded Conformance Evidence
def select_slot_engine(slot_spec: dict, preference: list[str], evidence_store: dict) -> str:
    order = preference or slot_spec["default_engine_order"]
    for engine_id in order:
        rec = evidence_store.get((slot_spec["slot_id"], engine_id))
        if rec and rec.get("conformance_passed") and rec.get("known_wrong_rejected"):
            return engine_id
    raise RuntimeError(f"no_qualified_engine_for_slot:{slot_spec['slot_id']}")

By keeping deterministic pipeline steps (Connected from) and model-driven steps (Spawned by / Queried by) on the same Loop runtime and behind typed engine slots, a team can prototype a workflow with a frontier model, distill hot paths into sub-millisecond deterministic engines, and verify every transition against the same conformance kit.


Navigation Post Title Direct Links
Previous Post Simulating Backpressure, Consistent Hashing, and Shard Failover Before Writing Production Code
Next Post How Compare Runs Without-Baltor vs. With-Baltor Side-by-Side in Real Time
Blog Index & Feeds Return to Baltor Engineering Blog Index (8 Posts)