DaoSpace Is a Tuple Space, Not a Moduli Space
Updated August 15, 2026: this article, originally published March 22, 2026 as "DaoSpace Beyond Covered Indexes: A Moduli Space of Databases", has been rewritten in place as a correction. The argument I made is preserved below as the starting point.
The Argument I Made
I previously argued that DaoSpace was not one database but a family of databases. In that framing, covered indexes and Datalog described one point, while document projections, graph traversals, column stores, and other materialized views described other points inside DaoSpace.
The argument contained a useful insight: storage layout is not semantics, and interpreters can construct many structures from the same immutable data. But I put the boundary in the wrong place. I treated variation among possible interpreters as variation inside DaoSpace itself.
DaoSpace is not the moduli space. DaoSpace is one point in it.
I have kept this article at its original URL because the correction matters. The mistake was not believing in a moduli space of databases. The mistake was naming DaoSpace as that entire space.
What Makes DaoSpace DaoSpace
DaoSpace is strictly a tuple space. Its identity comes from two complementary operations:
- Associative reading: an interpreter finds tuples by describing their content.
matchperforms one positional match, whileqgeneralizes matching into Datalog clauses joined through shared variables. - Generative writing: an agent appends an immutable tuple to its own DaoStream without naming a recipient. There is no destructive take and no shared mutable write surface.
Those operations are the semantic restriction that selects DaoSpace from the larger space of possible database interpreters. Change the physical index and it remains DaoSpace. Change the defining observation from exact positional unification to metric proximity or graph navigation and it has become a different point.
There Is No Global Stream
The word space must not imply one globally ordered history. Every writer owns a separate single-writer DaoStream. Transaction coordinates are local to that stream, and independent sources remain independent database inputs.
A query observes only the exact-bounded DaoStream descriptors or closed realizations that the caller explicitly supplies. It may join values across those sources deliberately, but DaoSpace never invents an implicit global database, global membership registry, or global transaction order.
The canonical input is therefore not one common history. It is an explicit collection of independently scoped, immutable source snapshots interpreted by the query.
An n-tuple Space
DaoSpace accepts tuples of any finite dimension. A two-tuple and a three-tuple can participate in the same relation and join through a shared variable. Plain query clauses match exact arity. Explicit & _ syntax ignores a tail, and & ?tail binds it.
Arity is structure, never meaning. Position zero is not intrinsically an entity identifier. It becomes an entity identifier only when a datom interpreter reads a canonical five-tuple as [e a v t m]. Another interpreter may give the same position a different meaning.
A datom is always d5. Not every d5 tuple is a datom, and not every tuple in DaoSpace needs to be d5.
Indexes Do Not Define the Space
The explicit datom interpreter receives privileged operational treatment. It can automatically construct the familiar covered indexes EAVT, AEVT, AVET, and VAET. These indexes exploit the datom contract, but they do not define DaoSpace.
Generic n-tuples use relation scans today. The intended rule: non-datom relations must explicitly request positional indexes by position order; the bounded tuples, their exact bound, and those requested indexes form an indexed snapshot; a future planner will choose among supplied indexes and otherwise scan.
A positional index changes access cost, not tuple meaning. Indexing positions [1 0] says which values lead the search order. It does not say what either position denotes. Meaning remains in the interpreter.
Traversal Is Not the Core
The previous framing promoted traversal into a more general core and proposed compiling intent into Specter-like paths. That may be useful as a local read convenience or as the defining operation of another database interpreter. It is not what makes DaoSpace a tuple space.
Inside DaoSpace, pull can project an entity-shaped tree from tuple facts, and an implementation can traverse an index to execute a match. Those are derived interfaces and execution strategies. Cross-agent coordination remains associative: agents discover facts by content rather than navigating another agent's private structure by address.
A physical traversal may execute a query. Traversal does not define DaoSpace's semantics.
DaoJing Is Shared Storage, Not DaoSpace
DaoSpace may persist covered indexes and indexed snapshots in DaoJing. DaoJing observes DaoStreams and materializes each opaque payload into content-addressed key/value storage. It knows how to hash, insert if absent, and retrieve by content address. It does not know whether a payload is a tuple, datom, index, graph, model, or image.
That makes DaoJing suitable storage for DaoSpace, but not storage owned by DaoSpace. DaoField and any other point in Datom.world's database moduli space may use the same semantic-neutral materialization boundary.
One Point in a Larger Space
The larger moduli-space idea (a metaphor borrowed from mathematics) belongs to Datom.world's governing philosophy: semantics is in the interpreter observing DaoStream, not in the stream or stored structure.
- DaoSpace interprets tuples through exact positional matching and unification.
- DaoField interprets tuples through metric proximity.
- Other database points may interpret streams through graph traversal, document projection, columnar operations, temporal windows, or other deliberately restricted observation semantics.
These are siblings. They may observe the same DaoStreams and store their materializations in the same DaoJing, yet remain different databases because they answer different kinds of questions.
The Corrected Center
DaoSpace does not become more general by absorbing every possible database interpretation. It becomes clearer by refusing to do so.
DaoSpace is the immutable n-tuple space: explicit sources, generative append, associative matching, and interpretation outside structure.
The moduli space is larger. DaoSpace is one disciplined and powerful point within it.
Learn more:
- Datom.world: A Moduli Space of Databases (the larger interpreter space that contains DaoSpace)
- Datalog on an n-tuple Tuple Space (mixed-dimensional positional unification)
- The Power of Restriction (why the canonical datom benefits from a fixed local contract)
- Structure vs Interpretation (why meaning belongs to interpreters)