conseqa model.yaml, and the verification engine statically checks whether the correctness properties you declared actually follow from the architecture you described. The model is not executable code, a deployment manifest, or a configuration file — it is a logical description from which the verifier reasons.
Every model has the same seven required top-level keys. Each plays a distinct role, and none of them imply runtime behavior on their own.
Top-level sections
revision
revision is an opaque numeric marker you increment when the model changes. Conseqa assigns no compatibility, ordering, or migration semantics to it — it is purely a tracking identifier.
services
services declares the logical ownership boundaries in your system. Every operation belongs to exactly one service. Services are descriptive groupings only; they imply no process boundary, network hop, or trust boundary. See Services & Schemas for the four available service kinds.
schemas
schemas declares the logical value shapes used throughout the model — request payloads, event messages, data object states, and response types. There are two kinds: canonical schemas define a shape directly; fragment schemas project fields from a canonical schema. See Services & Schemas for full field-type syntax.
data_models
data_models declares the logical transactional state boundaries in your system. Each data model contains one or more DataObject declarations — persistent entities with a canonical schema and a composite identity. Transactions in operations reference a data model to declare which shared transactional boundary they operate against.
topics
topics declares the message channels that operations publish to and subscribe from. A topic declares which schemas it carries, what ordering guarantee it provides, and whether messages have a declared identity. See Topics & Messaging.
state_machines
state_machines declares persistent state-transition graphs over data objects. A state machine names a subject object, an enumerated set of states, an initial state, and a set of transitions (each with optional publication or request side effects). Transitions fire inside operation transactions. See State Machines.
operations
operations is the main section. Each operation declares a logical unit of behavior: its owning service, possible inputs (synchronous requests or topic subscriptions), effects (publications, requests to other services, or external calls), transactions, a program that wires everything together with explicit control flow, and correctness requirements. See Operations and Requirements.
Minimal model skeleton
The following model satisfies the structural contract with all sections present. Use it as a starting point before filling in your own services, schemas, and operations.All seven top-level keys must be present. The six map sections (
services, schemas, data_models, topics, state_machines, operations) may be empty ({}); revision must be a numeric value. Omitting any key is a validation error.Three semantic categories
Every declaration in a Conseqa model belongs to one of three categories. Understanding the distinction is essential for reading verification results correctly.
A structurally valid model is not necessarily a correct model. Validation checks coherence; verification checks whether declared requirements follow from declared facts.
What unspecified means
Throughout the model, unspecified means: the model provides no fact from which this property may be inferred. It does not mean the property is false, and it does not permit a violation. It means the verifier must treat the value as unknown and cannot use it as evidence for a proof.
Explore the concepts
Services & Schemas
Service kinds, canonical and fragment schemas, field types, and data models
Operations
Inputs, effects, transactions, programs, and execution concurrency
Transactions
Atomic execution, isolation, step kinds, and transaction outputs
Topics & Messaging
Message channels, ordering guarantees, delivery semantics, and dispatch
State Machines
Persistent state transitions, side effects, and lifecycle modeling
Requirements
Serialization, ordering, idempotency, and recoverability obligations