Stuff Structure Property
Stuff, structure, and property are a modeling distinction for separating what a model contains, how it is organized, and what constraints it satisfies.
In the Cohesive System Model, this provides a useful lens:
- Stuff: the subjects, values, observations, events, entities, observers, identities, and other things the model talks about.
- Structure: the operations, relations, transitions, projections, flows, ordering, and composition rules that organize or transform the stuff.
- Property: the invariants, policies, laws, constraints, guarantees, and predicates that the stuff and structure must satisfy.
This aligns roughly with:
entities -> stuff
operations and relations -> structure
invariants and laws -> propertyThe distinction is relative to a model boundary. A transition may be structure in a domain model, but become stuff in a meta-model that classifies transition rules. An invariant may be a property of entity transitions, but become structure when the system represents policies or validation rules as first-class objects.
This lens helps ask:
- Are we adding new things to the model, or only new structure on existing things?
- Is this constraint a property, or is it represented as first-class structure?
- Which parts should be preserved by a functorial mapping?
- Which parts can be forgotten without changing the intended meaning?
- Are two models equivalent because they preserve the same structure and properties, even if they present different stuff?
Examples:
- An entity is stuff, while its transitions, state history, and emitted events give it structure.
- A transition is structure on entity state, observations, commands, authority, and versions.
- An invariant is a property constraining which transitions may commit.
- A projection adds structure that relates a derived view back to source state or events.
- A realization maps semantic stuff, structure, and properties into substrate stuff, structure, and properties.
This distinction also clarifies forgetting. A mapping may forget properties, such as validation constraints; forget structure, such as ordering or causality; or forget stuff, such as collapsing several entities into one aggregate view. These are different losses and should not be treated as the same.
Related concepts: entity, transition, invariants, policies, relations, projections, realization, functoriality, equivalence vs equality, universal constructions.