Cohesive defines a semantic system graph for software design. Its building blocks make structure, state change, relations, processes, identity, APIs, presentation, storage, infrastructure, and AI context explicit, then project that graph into the runtimes and architectural patterns that fit.
Core Idea
Cohesive is not a replacement for DDD, CQRS, event sourcing, actors, sagas, workflow engines, relational databases, message buses, REST, GraphQL, UI state patterns, formal methods, or AI orchestration tools.
Each one is a partial view of the same system design space.
The problem is that they often arrive as bundled realization models. A team adopts the useful idea and also inherits naming conventions, directory structures, runtime assumptions, storage choices, operational practices, and social rituals that may not fit the system at hand.
Cohesive represents the useful concept in semantic source artifacts and accumulates it into the graph before choosing the package it will travel through.
A consistency boundary can become an entity transition boundary without adopting a full DDD program. A command/query split can become transitions plus relations without turning every feature into CQRS. A transition history can be durable where history matters without forcing the whole domain into event sourcing. A workflow can become a Cohesive process without making every operation a heavyweight saga. An actor runtime can host identity-scoped entity or process execution without becoming the domain model.
Cohesive keeps those choices explicit inside one semantic system graph.
The Recurring Pattern
Most architectural concepts can be read as partial views of the same graph:
What system pressure does the concept address?
Which Cohesive building blocks carry that structure?
Which implementation, runtime, or methodology becomes optional?
The correspondences below describe the intended semantic interpretation and
possible realization strategies. They do not imply that every mapping is
currently implemented, mechanically derivable, or portable across every target.
A concrete compiler should report whether a mapping is verified, derived under
conditions, test-backed, declared by an adapter, unsupported, or still unknown.
Modeling methods
System Pressure
Naming domain boundaries, invariants, and responsibilities.
Cohesive Building Blocks
Core, Entities, Machines, Relations, and Processes define shapes, observations, transitions, policies, lifecycle states, and process boundaries.
Optional Package
A fixed design process, aggregate taxonomy, or organization-wide methodology.
Persistence patterns
System Pressure
Choosing how state is stored, reconstructed, and audited.
Cohesive Building Blocks
Storage binds observations, entity state, transition histories, version checks, projections, streams, and backend capabilities.
Optional Package
A single global storage style such as all-CRUD or all-event-sourced systems.
Coordination patterns
System Pressure
Handling work that crosses entities, services, workers, users, and time.
Cohesive Building Blocks
Processes and entity effects define waits, retries, compensation, child flows, committed effects, and execution state.
Optional Package
A mandatory workflow engine, broker topology, or distributed-systems pattern everywhere.
Interface patterns
System Pressure
Exposing stable APIs and UI surfaces over changing internal systems.
Cohesive Building Blocks
API and Presentation project operations, relation surfaces, actions, forms, scopes, generated clients, and UI contracts.
Optional Package
Controller-heavy applications, UI-specific duplicated logic, or one transport as the source of truth.
Verification and AI patterns
System Pressure
Reasoning about system behavior, generated artifacts, and model-driven operations.
Cohesive Building Blocks
Core, Relations, Processes, Identity, and AI expose invariants, traceable transitions, retrieval surfaces, constrained tools, and generated contexts.
Optional Package
Separate verification models or AI glue code disconnected from runtime semantics.
Concept Type
System Pressure
Cohesive Building Blocks
Optional Package
Modeling methods
Naming domain boundaries, invariants, and responsibilities.
Core, Entities, Machines, Relations, and Processes define shapes, observations, transitions, policies, lifecycle states, and process boundaries.
A fixed design process, aggregate taxonomy, or organization-wide methodology.
Persistence patterns
Choosing how state is stored, reconstructed, and audited.
Storage binds observations, entity state, transition histories, version checks, projections, streams, and backend capabilities.
A single global storage style such as all-CRUD or all-event-sourced systems.
Coordination patterns
Handling work that crosses entities, services, workers, users, and time.
Processes and entity effects define waits, retries, compensation, child flows, committed effects, and execution state.
A mandatory workflow engine, broker topology, or distributed-systems pattern everywhere.
Interface patterns
Exposing stable APIs and UI surfaces over changing internal systems.
API and Presentation project operations, relation surfaces, actions, forms, scopes, generated clients, and UI contracts.
Controller-heavy applications, UI-specific duplicated logic, or one transport as the source of truth.
Verification and AI patterns
Reasoning about system behavior, generated artifacts, and model-driven operations.
Core, Relations, Processes, Identity, and AI expose invariants, traceable transitions, retrieval surfaces, constrained tools, and generated contexts.
Separate verification models or AI glue code disconnected from runtime semantics.
Architectural & Modeling Concepts
These concepts help teams find boundaries, responsibilities, and business meaning. Cohesive treats them as inputs to the semantic system graph rather than as complete architectures by themselves.
Use the domain model, ubiquitous language, bounded contexts, and invariants to organize software.
Cohesive Interpretation
Core, Entities, Machines, Relations, and Processes turn domain language into graph artifacts that can be generated, inspected, tested, projected, and hosted.
What Cohesive Avoids
Adopting every DDD ceremony, class style, aggregate rule, and team ritual before the system needs it.
Aggregate Root
Useful Idea
Define a consistency boundary where invariants are protected.
Cohesive Interpretation
A Cohesive entity can own invariant-preserving transitions over a coherent state boundary.
What Cohesive Avoids
Treating every object graph as an aggregate or forcing all consistency decisions into object hierarchy design.
Bounded Context
Useful Idea
Separate meanings that should not be collapsed into one model.
Cohesive Interpretation
The graph can define semantic partitions, relation mappings, and anti-corruption boundaries between contexts.
What Cohesive Avoids
Making service topology, repo layout, or org structure the only expression of context boundaries.
Use the domain model, ubiquitous language, bounded contexts, and invariants to organize software.
Core, Entities, Machines, Relations, and Processes turn domain language into graph artifacts that can be generated, inspected, tested, projected, and hosted.
Adopting every DDD ceremony, class style, aggregate rule, and team ritual before the system needs it.
Aggregate Root
Define a consistency boundary where invariants are protected.
A Cohesive entity can own invariant-preserving transitions over a coherent state boundary.
Treating every object graph as an aggregate or forcing all consistency decisions into object hierarchy design.
Bounded Context
Separate meanings that should not be collapsed into one model.
The graph can define semantic partitions, relation mappings, and anti-corruption boundaries between contexts.
Making service topology, repo layout, or org structure the only expression of context boundaries.
Treat domain-owned data products as first-class assets.
Relations, projections, lineage, storage capabilities, and ownership boundaries can define data products from the same graph.
Separate analytics ownership language disconnected from operational state and transitions.
Data & Persistence Concepts
Persistence patterns answer realization questions over the graph: what is authoritative, what can be derived, how history is represented, and how concurrency is controlled. Cohesive keeps those questions explicit per shape, entity, transition, relation, storage binding, and host.
CRUD
Useful Idea
Store and update current state directly.
Cohesive Interpretation
A Cohesive transition can compile to a current-state update when the write is simple and transactionally local.
What Cohesive Avoids
Treating CRUD screens and tables as the domain model.
ORM
Useful Idea
Map object or shape state to persistence records.
Cohesive Interpretation
Storage adapters can bind entity observations to ORM-backed persistence while transition semantics remain independent.
What Cohesive Avoids
Letting ORM navigation properties, lazy loading, or schema constraints define business behavior.
Choose what concurrent transactions are allowed to observe.
Hosts can bind transitions to isolation settings based on read/write sets and invariant risk.
Defaulting every operation to one isolation level without understanding the semantic consequence.
Execution & Coordination Concepts
Coordination concepts answer where work runs, how messages move, how failure is handled, and how operations continue across time. Cohesive.Processes and entity effects make the coordination model explicit before choosing a runtime.
Coordinate atomic commit across participants when the environment supports it.
Host configuration can select 2PC, outbox, saga, or compensating process based on participant capabilities.
Assuming distributed atomicity is available or desirable across every boundary.
API & Presentation Concepts
Interface patterns expose graph capabilities to people, clients, and other services. Cohesive.Api and Cohesive.Presentation keep operations, relations, actions, scopes, forms, views, and generated clients connected to the same underlying semantics.
REST
Useful Idea
Expose resource-oriented HTTP interactions with stable contracts.
Cohesive Interpretation
API adapters can surface transitions and relations through REST without embedding domain logic in controllers.
What Cohesive Avoids
Letting URL shape and controller code become the primary system model.
GraphQL
Useful Idea
Let clients query typed data graphs flexibly.
Cohesive Interpretation
Relations can compile into schema fields and resolvers, with transitions exposed as controlled operations.
What Cohesive Avoids
Duplicating authorization, mapping, and business rules in resolver code.
gRPC
Useful Idea
Use strongly typed service calls over efficient transport.
Cohesive Interpretation
Operations, inputs, outputs, and capabilities can project to gRPC contracts.
What Cohesive Avoids
Treating protobuf service shape as the only expression of domain behavior.
API-First Design
Useful Idea
Design external contracts before implementation details harden.
Cohesive Interpretation
API definitions can be generated from semantic operations, relation surfaces, scope policies, and result variants.
What Cohesive Avoids
Separating API documentation from the executable model that must actually honor it.
Backend for Frontend
Useful Idea
Shape backend responses around a particular UI or client experience.
Cohesive Interpretation
Relations and presentation models can define client-specific projections without duplicating domain logic.
What Cohesive Avoids
Ad hoc aggregation services that drift from core state, permissions, and transitions.
MVC
Useful Idea
Separate model, view, and controller responsibilities.
Cohesive Interpretation
Entities and relations define model semantics; presentation adapters bind views and actions to transitions.
What Cohesive Avoids
Controller methods that accumulate validation, authorization, mapping, workflow, and persistence logic.
MVVM
Useful Idea
Represent UI state through view models and commands.
Cohesive Interpretation
Relations can produce view models while transitions become explicit commands/actions.
What Cohesive Avoids
Maintaining a UI-only domain model with duplicated rules and stale action availability.
Redux / Predictable State
Useful Idea
Make state changes explicit through actions and reducers.
Cohesive Interpretation
Cohesive transitions provide a server-side counterpart to explicit state mutation and can feed UI projections.
What Cohesive Avoids
Treating client state containers as the authoritative business system.
Hypermedia / HATEOAS
Useful Idea
Expose valid next actions based on current state.
Cohesive Interpretation
Presentation adapters can derive available actions from entity state, identity, policy, and transition guards.
What Cohesive Avoids
Hand-maintained links and buttons that do not reflect actual domain legality.
Component-Based UI
Useful Idea
Compose screens from reusable interaction units.
Cohesive Interpretation
Presentation models can describe forms, actions, views, data sources, bindings, and generated contracts consumed by components.
What Cohesive Avoids
Components reaching through API layers to reconstruct domain meaning on the client.
Pattern / Concept
Useful Idea
Cohesive Interpretation
What Cohesive Avoids
REST
Expose resource-oriented HTTP interactions with stable contracts.
API adapters can surface transitions and relations through REST without embedding domain logic in controllers.
Letting URL shape and controller code become the primary system model.
GraphQL
Let clients query typed data graphs flexibly.
Relations can compile into schema fields and resolvers, with transitions exposed as controlled operations.
Duplicating authorization, mapping, and business rules in resolver code.
gRPC
Use strongly typed service calls over efficient transport.
Operations, inputs, outputs, and capabilities can project to gRPC contracts.
Treating protobuf service shape as the only expression of domain behavior.
API-First Design
Design external contracts before implementation details harden.
API definitions can be generated from semantic operations, relation surfaces, scope policies, and result variants.
Separating API documentation from the executable model that must actually honor it.
Backend for Frontend
Shape backend responses around a particular UI or client experience.
Relations and presentation models can define client-specific projections without duplicating domain logic.
Ad hoc aggregation services that drift from core state, permissions, and transitions.
MVC
Separate model, view, and controller responsibilities.
Entities and relations define model semantics; presentation adapters bind views and actions to transitions.
Controller methods that accumulate validation, authorization, mapping, workflow, and persistence logic.
MVVM
Represent UI state through view models and commands.
Relations can produce view models while transitions become explicit commands/actions.
Maintaining a UI-only domain model with duplicated rules and stale action availability.
Redux / Predictable State
Make state changes explicit through actions and reducers.
Cohesive transitions provide a server-side counterpart to explicit state mutation and can feed UI projections.
Treating client state containers as the authoritative business system.
Hypermedia / HATEOAS
Expose valid next actions based on current state.
Presentation adapters can derive available actions from entity state, identity, policy, and transition guards.
Hand-maintained links and buttons that do not reflect actual domain legality.
Component-Based UI
Compose screens from reusable interaction units.
Presentation models can describe forms, actions, views, data sources, bindings, and generated contracts consumed by components.
Components reaching through API layers to reconstruct domain meaning on the client.
Formal, AI & Advanced Concepts
Formal methods, AI systems, and performance-oriented patterns benefit from a
precise semantic system graph. Cohesive gives them structured artifacts to
inspect, generate from, or lower into specialized runtimes.
Formal analysis applies to projections whose vocabulary and state space support
the relevant method. A restricted relational or monotonic fragment may permit a
derived coordination result; a broader workflow or escape hatch may instead
produce conditions, proof obligations, declared assumptions, or an unknown
result. Sharing a graph does not make every property uniformly decidable.
Allow distributed state to converge without central coordination.
State models can choose convergent data structures where collaboration and partition tolerance require them.
Using CRDTs for data that actually needs centralized invariants or legal transition control.
Data-Oriented Design
Optimize runtime layouts around cache locality, columns, and bulk operations.
Cohesive shapes can lower to efficient SoA or columnar representations without changing semantic definitions.
Letting performance layout erase field meaning, invariants, and transition rules.
ML Pipelines
Coordinate data extraction, training, evaluation, deployment, and monitoring.
Processes can orchestrate training and inference workflows while relations define datasets and features.
A separate ML workflow island disconnected from operational state and business transitions.
Feature Stores
Share versioned features between training and serving.
Relations and projections can define feature extraction as traceable artifacts from domain facts.
Feature definitions copied between notebooks, batch jobs, and online services.
Vector Databases
Index embeddings for similarity search and retrieval.
AI and storage adapters can bind vector indexes while Relations define retrieval semantics and joins back to domain views.
Treating embeddings as ungoverned side data with no lineage or domain ownership.
RAG
Ground generated output in retrieved context.
Relations can define retrieval surfaces; processes can orchestrate retrieval, generation, review, and persistence.
Prompt glue that bypasses permissions, provenance, action legality, and domain state.
MCP / Tool Use
Expose tools and context to models through structured protocols.
Cohesive operations can become constrained tools, and relation surfaces can become model context.
AI agents invoking ad hoc functions whose side effects are not captured as transitions.
Selection Logic
Cohesive does not erase architecture decisions. It turns them into realization choices over an explicit graph.
A local state update with one consistency boundary
Likely Realization
Current-state persistence, repository, or direct SQL transaction.
Why Cohesive Helps
The entity transition, invariant, and version requirements stay explicit even if the implementation is simple.
Reliable publication after a state change
Likely Realization
Transactional outbox, change feed, or event stream.
Why Cohesive Helps
The emitted event is attached to the transition that made it true.
Audit, replay, or temporal reasoning
Likely Realization
Event-sourced entity or durable transition history.
Why Cohesive Helps
History is selected because it has semantic value, not because the architecture defaults to events.
Identity-scoped ordering and high concurrency
Likely Realization
Actor, grain, or partition-owned executor.
Why Cohesive Helps
The actor is a host strategy for explicit entity and process semantics.
Timers, retries, human waits, or compensation
Likely Realization
Durable process, saga, or workflow engine.
Why Cohesive Helps
The workflow shape is modeled independently from the engine used to run it.
Read shapes that differ from write shapes
Likely Realization
Projection, materialized view, GraphQL resolver, or BFF relation.
Why Cohesive Helps
The relation surface remains connected to source observations, entity state, and transition events.
AI or generated-system interaction
Likely Realization
Tool surfaces, retrieval relations, process orchestration, and audited transitions.
Why Cohesive Helps
Model actions operate through constrained operations, relation surfaces, identity policy, and audited transitions instead of direct side effects.
If The Graph Requires
Likely Realization
Why Cohesive Helps
A local state update with one consistency boundary
Current-state persistence, repository, or direct SQL transaction.
The entity transition, invariant, and version requirements stay explicit even if the implementation is simple.
Reliable publication after a state change
Transactional outbox, change feed, or event stream.
The emitted event is attached to the transition that made it true.
Audit, replay, or temporal reasoning
Event-sourced entity or durable transition history.
History is selected because it has semantic value, not because the architecture defaults to events.
Identity-scoped ordering and high concurrency
Actor, grain, or partition-owned executor.
The actor is a host strategy for explicit entity and process semantics.
Timers, retries, human waits, or compensation
Durable process, saga, or workflow engine.
The workflow shape is modeled independently from the engine used to run it.
Read shapes that differ from write shapes
Projection, materialized view, GraphQL resolver, or BFF relation.
The relation surface remains connected to source observations, entity state, and transition events.
AI or generated-system interaction
Tool surfaces, retrieval relations, process orchestration, and audited transitions.
Model actions operate through constrained operations, relation surfaces, identity policy, and audited transitions instead of direct side effects.
Why This Matters
System design becomes harder when every good idea turns into a package deal.
Teams should be able to borrow the insight behind a pattern without accepting
the entire framework, runtime, vocabulary, and operating model that usually
comes with it. Cohesive gives those insights a common place in the semantic
system graph.
That is the practical position:
Use the consistency boundary from DDD as an entity transition boundary without requiring full DDD adoption.
Use the command/query distinction from CQRS as transitions plus relations without making every feature CQRS-shaped.
Use event history where history matters without event-sourcing everything.
Use actors where identity-local ordering matters without turning actor code into the domain.
Use workflow engines where durability matters without hiding process semantics in engine APIs.
Use AI tool protocols where models need action surfaces without bypassing operations, identity, relations, and audited transitions.
Cohesive makes the underlying requirements explicit, then compares candidate
realizations and reports what each preserves, assumes, weakens, or cannot
currently establish.