A working draft describing Dialog's design through its core terminology. Dialog is an information substrate composed of three layers: the associative layer, which stores and replicates information, the semantic layer, which interprets it, and the reactive layer, which responds to it.
The memory layer of the information substrate. Accretes all claims as an immutable, append-only history. What you work with locally is a working subset of a conceptually vast pool of information, replicated on demand. The associative layer consists of two regions:
Replicated region: Claims replicated on demand across peers. New data is pulled in as queries and operations require it.
Ephemeral region: A local, session-bound overlay for claims that do not need to survive beyond the current session.
Claims are indexed in two ways:
Operative indexes (EAV/AVE/VAE): Provide the current state of the world. Retractions evict assertion-claims from these indexes, giving a live view of what is presently true.
Temporal index: Preserves the complete history, including retractions. Nothing is ever lost here.
ℹ️ "Never lost" is conceptual: an owner may choose to erase portions of the temporal index, denying access to that history.
The associative layer is self-describing: the primitives used to model a domain are themselves claims (replicated or ephemeral), content-addressed by the hash of their structure.
The interpretation layer of the information substrate. Operates at query time, reading domain modeling primitives from the associative layer and resolving them to produce conclusions. Assertions made at this layer are interpreted and decomposed into claims in the associative layer. Tools operate here, modeling their problem domain and its inherent constraints using semantic layer primitives.
The behavioral layer of the information substrate. Where the semantic layer interprets what is in the associative layer, the reactive layer responds to it. Processes in the reactive layer observe concepts and relations, and in response produce new claims that get asserted back into the associative layer. This shifts from modeling the interpretation of data to modeling the behavior of the system, how it evolves over time in response to what it observes.
An assertion or retraction that has been incorporated by the transactor. Claims are the fundamental unit of the associative layer. A claim is composed of:
of: The entity this claim is about.
the: The relation, identifying the kind of association being established. Comprised of a domain/name pair.
is: The value being linked to the entity through this relation.
cause: The provenance of this claim, describing who produced it and when. A provenance captures:
by: The DID of the operator or session authority that produced the claim.
period: A coordinated time component denoting the last synchronization cycle.
moment: A local, uncoordinated time component denoting the moment within a period at which the claim was produced.
This construction, inspired by Hybrid Logical Clocks, establishes causal relations between claims, allowing Dialog to resolve conflicts.
Every claim is permanent in the temporal index: retractions do not destroy assertion-claims, they evict them from the operative indexes while the temporal index retains everything. Transactions themselves are also captured as claims, recording all the assertions and retractions they incorporated.
Relations categorize claims into groups by the kind of association being established.
In the associative layer, a relation corresponds to the the component of a claim, comprised of a nominal domain (scoping the relation to a specific problem area) and name (identifying the specific kind of association within that domain), denoted as domain/name.
The semantic layer denotes relations through attributes, which further refine categories by type and cardinality.
Proposed changes submitted to the transactor. An assertion proposes that a relation holds; a retraction proposes that it no longer does. Assertions and retractions also operate at the semantic layer: asserting or retracting a conclusion (a materialized concept) is translated by the semantic layer into the corresponding claim assertions and retractions.
The building blocks of the semantic layer. All are claims in the associative layer (replicated or ephemeral), identified by entities derived from the hash of their structure.
A relation elevated with domain-specific invariants. An attribute extends a relation's domain/name identifier with cardinality and type constraints, specifying what kind of values the association admits and how many.
A composition of attributes sharing an entity. A concept describes the shape of a thing in terms of its relations, much like a type or class in a programming language, but realized through schema-on-read rather than schema-on-write. Concepts are the primary unit of domain modeling.
A realized concept instance, assembled from claims matching the attributes described by the concept. Conclusions are what the semantic layer produces when it resolves concepts against claims.
A concept acts as a bidirectional mapping (a lens) into the associative layer. In one direction, querying a concept composes matching claims into conclusions. In the other, asserting a concept instance decomposes into asserting the individual claims for each of its constituent attributes.
A pure computation, similar to formulas in a spreadsheet. Formulas are effectively built-in rules: given bound input fields, a formula derives output fields. Formulas can be used within rules and queries to compute values, filter matches, or transform data without leaving the query engine.
An advanced form of composition that goes beyond stitching attributes together. Rules can impose additional constraints, compute derived values using formulas, and follow transitive paths across relations. A rule's body is a set of premises; its conclusion is a concept instance. Rules are unidirectional, because a conclusion may distill or aggregate information from its premises in ways that cannot be undone (for example, a sum of two values cannot be reversed into the exact numbers it was computed from). A set of rules can offer bidirectionality, but only when the mapping is inherently non-lossy. Rules are resolved at query time by the semantic layer.
A rule evaluated within the system, grounded in the theory of Dedalus, a Datalog dialect that extends deductive rules with a temporal dimension. Where deductive rules interpret what is already in the associative layer, inductive rules react to it: they produce conclusions that get asserted back as new claims.
Inductive rules have been prototyped but are not yet fully implemented. See the prototype.
An external behavior. Where inductive rules run inside the system, effects are processes outside the system boundary that observe concepts and relations, and in reaction run computation externally. Effects can produce new assertions back into Dialog, connecting external systems and side effects to the information substrate.
A user interface is a natural example of an effect: it observes conclusions and renders them to screen, while user interactions assert concepts back into Dialog.