Skip to main content
Conseqa separates the abstract application machine (L0) from runtime realization facts (L1). L0 declares services, schemas, topics, state machines, operations, and requirements. L1 lives under Model.runtime and declares how that machine is wired to execution topology, transport behavior, and storage layout. This page introduces the L1 layer, explains why it is optional, and maps the declarations you can place inside runtime.
L1 is entirely optional. Removing runtime from a valid model never makes it invalid. Proofs that required L1 facts simply become unproven; they do not become violations or structural errors.

What L1 declares

L1 describes selected qualitative facts about realization:
  • Transport ordering and grouping for topics
  • Subscription delivery, dispatch, and routing
  • Request routing into execution pools
  • Execution topology and concurrency
  • Storage partitioning
A realization fact belongs in L1 when it changes what the realization does and is qualitative, not a number. Numbers such as pool cardinality, CPU cores, traffic rates, and host counts stay outside in the external simulation scenario. Correctness relevance does not determine layer: serializable isolation is L0, while execution member concurrency is L1.

Proof scope

Every successful proof records whether it consumed L1 facts: Deleting L1 turns runtime_dependent proofs into unproven, never into violations. The scope records a dependency, not a weakness. A proof resting on serializable is l0_only and still assumes the database implements it.

Layout under Model.runtime

Every L1 identifier lives in the same global namespace as L0 identifiers.

Routing concept

Routing has two semantic components, independent dimensions rather than alternative modes:
A routing key defines routing-domain identity. A member assignment maps domains onto pool members. The domain keeps its identity across rebalances.
Operations no longer declare execution.concurrency. All runtime execution concurrency lives in exactly one place: ExecutionPool.member_concurrency. There is no OperationRuntime, no lane abstraction, and no lane concurrency anywhere in the model.

Compact runtime skeleton

Topic & Subscription Runtime

Declare transport grouping, ordering, delivery, and dispatch.

Outbox Runtime

Declare partitioning, ordering, and dispatch for outbox consumers.

Routers & Pools

Route requests into pools and declare per-member concurrency.

Storage Layouts

Map logical objects to storage partitions.