The Entity System

A Computational Information Substrate

About This Paper

The Entity System is a substrate for distributed information systems. This paper is one part of a corpus describing it: what the system is, why it has the shape it does, what properties emerge as its primitives compose, and how the structural analysis methodology developed during the work generalises to other domains.

Each part stands on its own, which is why this one is rendered standalone. The corpus is a graph of cross-references rather than a chain, so a reference to another part points at where a claim is worked out in full — it is an offer, not required reading. The Entity System is the root of that graph: it presents the six primitives — Entity, Identity, Tree, Emit, Execution, Peer — and the build-up sequence under which their composition produces the system. A reader starting from any other part can pick up the primitives there.

The parts are also collected into reading paths, each rendered as a single volume — the whole corpus in several orderings, and narrower paths for readers who want one arc. Anyone reading past this part is better served by one of those than by collecting the pieces.

What is and is not claimed

The entity-system parts document a working system. Three independent implementations (Go, Python, Rust) validate cross-platform conformance on the normative surface, and claims about the system are testable against them. The methodology parts document the structural analysis in its own right, along with a small set of applications; the applications are exploratory, interpretations put forward to be tested.

The design is not finished. The system is implemented and running, but it has not met the range of uses that will show where it bends. Where a part can be checked, it says how; where it is exploratory, it says so.

Throughout, claims are distinguished from observations and observations from speculation. Where AI assistance was used in drafting or analysis, it is acknowledged in the relevant part.

Where the upstream work lives

The Entity Core architecture is maintained as an active spec elsewhere; this paper describes a snapshot. Open work, draft extensions, and implementation tracks continue beyond what is captured here, and the paper notes its snapshot boundaries explicitly where it matters.

The Entity Church Architecture: Computation in Content-Addressed Typed Data

Abstract.

We describe what computation becomes when it occurs in content-addressed typed data organized by six primitives. The result is not a new formalism but a computational architecture — a structural context that determines what properties computation inherits. The tree is the computational substrate: simultaneously state, record, and result. The emit pathway provides the atomic state crossing; the evaluator actualizes all temporal properties. The architecture is compute-model agnostic: any model embedded in it inherits reactivity, self-description, versioning, persistence, addressability, and authorization. Information precedes computation: self-description and convergence emerge at three primitives (E+I+T) before any evaluator acts. Two complementary orderings — the entity ordering (information-first) and the Church ordering (computation-first) — reveal the architecture’s structure. Types are computational data that participate in dispatch, validation, and self-description. Three execution models (synchronous, continuation, reactive) appear to exhaust temporal relationships between agent activity and information transformation.

1. Introduction

This paper examines what computation becomes in the entity system — a system built from six primitives (entity, identity, tree, emit, execution, and peer), the fifteen pair-relationships they produce, and five named structural triangles that recur across the system as units (see The Entity System).

The answer is not a new computational formalism. It is a computational architecture — a structural context in which computation occurs. The architecture does not prescribe how to compute. Lambda calculus, Turing machines, dataflow graphs — any model works. What the architecture determines is what properties computation inherits by existing in the system.

The central observation: the tree is the computational substrate. A handler reads from the tree (state), transforms entities (computation), and writes back via emit (result). The tree before the operation is the input. The tree after is the output. The emit events are the record. State and computation are not separated. In pair-relationship terms, computation lives within the TMX triangle (reactive dispatch) operating over the ITM triangle (emit) and the EIT triangle (self-description). These three triangles together form the computational core: information substrate plus temporal coupling plus reactive dispatch.

This paper does not claim new computational power. Church-Turing equivalence holds — the same class of computable functions. What we observe are structural properties that computation inherits from the architecture: reactivity (the TMX triangle), self-description (the EIT triangle), versioning and audit potential (the ITM triangle), persistence, addressability, and authorization. These come from the architecture’s triangle coverage, not from any particular compute model within it.

One structural property deserves special emphasis. Entity-native computation — computation expressed as entities in the tree, reducible by the compute extension’s fixed evaluator — is Turing-complete. Combined with content-addressed identity, it is also transferable: a compute expression, as entity data, can cross between peers that share the evaluator specification and execute identically. The compute extension is therefore not an ordinary extension. It is the bridge that makes the rest of the system’s functionality transferable as computation, in the sense developed in The Entity System. This is the entity system’s analog to the ribosome in biology (see The Universal Computational Genome) or the metacircular evaluator in Lisp.

The two orderings suggest that the properties at each level may be structural — arising from the ingredients rather than from implementation choices — but formal proofs have not been constructed.

Companion papers. The six primitives, pair-relationships, and structural triangles are developed in The Entity System. The protocol specification is in The Entity Core Protocol. The convergent evolution of existing systems is analyzed in Convergent Evolution. The machine boundary — where entity computation meets physical hardware — is examined in The Entity Machine Boundary. The biology parallel — how similar structures arise in molecular biology — is explored in The Universal Computational Genome.

2. Computation as Entity Transformation

2.1. The Tree as Ground

The tree is always present — before, during, and after computation. It is a namespace of path \to hash bindings over content-addressed entities.

A handler reads from the tree (state), transforms what it reads (computation), and writes back via emit (result). The tree before the operation is the input. The tree after is the output. The emit events are the record. These three roles — state, record, result — are not separated into different systems. The tree serves all three.

2.2. The Tree as Memory Model

The tree is not only a namespace — it is the computational memory model. Each peer has its own tree, and that tree includes the peer’s local view of other peers’ state. This gives the memory model specific properties.

The namespace is universal — one address structure for everything: data, handlers, types, configuration, peer state. It is authority-scoped: each peer is authoritative over their own tree. When you observe another peer’s tree, you see their state as they have published it, stored locally as your view of their bindings. Their changes do not affect your local state until you choose to act on them.

This means conflict is not the default. Each peer’s tree is their own — there is nothing to conflict with until synchronization is explicitly requested. When a peer you are syncing with updates a binding, you receive the new hash. You can see what changed. Whether you update your own local state to reflect theirs is a decision, not an automatic consequence. The content-addressed structure makes this practical: you know what they have (by hash), you know what you have, and the difference is computable without coordination.

The structural tools for resolving differences — merge strategies, CRDTs, version DAGs — operate within this model. They can reconcile divergent state mechanically in many cases. But they have limits: the namespace and its verification layers can determine structural consistency (do the hashes match? do the types validate?) but cannot determine truth or correctness beyond what the structure itself encodes. A peer’s claim at a path is that peer’s claim — verifiable as theirs, but not necessarily correct. The bounds of what the memory model can resolve are the bounds of structural verification.

2.3. The Emit Pathway

The atomic state crossing: two coupled operations on distinct primitives. Store enters the entity into the content store (the Identity axis, immutable by hash); Bind updates the tree binding (the Tree axis, mutable). Each operation produces an independently observable event when it does real work. Every computation produces results through this pathway. Emit is the crossing point between content (which persists by hash) and naming (which changes over time) — the temporal coupling of Identity and Tree.

As established in The Entity System, emit introduces mutability — the tree can change, and before-and-after now exist. But emit alone does not compute. It provides the mechanism of state change along two axes; the evaluator provides the computational structure that gives those changes meaning.

2.4. The Evaluator

The evaluator reads typed structures from the tree, transforms them, and emits results back. At the protocol level, this takes the form of EXECUTE and EXECUTE_RESPONSE — dispatch typed parameters to a handler, receive a typed result.

The evaluator has two activation modes, each with distinct pair-coverage. In directed mode, an EXECUTE message explicitly invokes a handler. This exercises the EX pair (typed dispatch) and the TX pair (tree-walk to find the handler) — a directed use of the TMX triangle’s EX+TX edges. In reactive mode, an emit event triggers re-evaluation. This exercises the MX pair (the cascade edge of the TMX triangle): emit produces an event; the evaluator consumes it; its output becomes a new emit; the cycle closes. Both modes produce results through the emit pathway; both are aspects of the TMX triangle operating in different directions.

Without the evaluator, the tree is a static store — data accumulates but nothing processes it. The ITM triangle (emit + information) is active but the MX cascade edge is not: emit events have no consumers that produce further state changes. With the evaluator, the TMX triangle closes and all temporal properties are actualized: versioning, audit trails, reactive cascades, MVCC (see The Entity System).

2.5. EXECUTE and Beta-Reduction

There is a structural correspondence between EXECUTE and beta-reduction in lambda calculus:

Lambda calculus Entity system Pair-coverage
Function λx.M\lambda x.M Handler registered at URI Handler entity activates EX + TX
Argument NN Parameters in EXECUTE EX (typed parameters)
Reduction M[x:=N]M[x:=N] Handler computation on parameters Closed within the handler; EX surface
Result EXECUTE_RESPONSE with result entity EX (typed result)

What EXECUTE adds beyond pure reduction: statefulness (emit, via ITM triangle), identity (content hash, EI pair), authorization (capability, IXP triangle), and locality (peer boundaries, TP+XP pairs). This is an observation about structural correspondence, not a claim of formal equivalence. The computational analysis that follows builds on this correspondence.

3. Information Before Computation

The companion paper on the six primitives (see The Entity System) establishes that the primitives divide into three domains: informational (E, I, T), temporal (M, X), and spatial (P). The informational primitives exist as pure structure without requiring time, space, or agency. Computation is what the temporal and spatial domains add on top.

3.1. Computation as Structure and as Activity

A pure function is a mapping from inputs to outputs — a set of (input, output) pairs, a mathematical object rather than a process. In the entity system, a function’s inputs are entities, its outputs are entities, and the mapping itself can be represented as entities in the tree. The function’s identity (its content hash), its type, its structure — all exist as information in E+I+T.

Consider, as a thought experiment, a complete E+I+T tree containing every possible structure and relationship. Every computable function would already be present as a lookup entry. Computation-as-activity — the temporal process of evaluation — would be unnecessary. You would navigate rather than compute.

This is an infinite space. No finite tree contains all computable functions. Computation-as-activity exists because the complete tree is infinite — we must evaluate specific functions on specific inputs because we cannot store the infinite lookup table. Evaluation requires time (M) and agency (X).

This gives the observation “information precedes computation” a precise meaning:

3.2. The Purity Boundary

The entity system makes this distinction structural through two reference types:

Expressions using only hash references are pure — their results exist as information regardless of when or whether anyone evaluates them. Expressions accessing paths are impure — their results depend on the tree’s current state. This classification arises from content addressing, not from language design.

3.3. Verification, Coherence, and Trust

The information space is not undifferentiated. Structures in the entity system have verifiable properties — but verification operates at distinct layers, each with different reach.

Structural integrity is mechanically checkable. Content hashes verify that data matches its claimed identity. Type validation confirms an entity conforms to its declared shape. Cryptographic signatures verify provenance. Capability chains trace to root grants. These compose: an entity that passes all layers carries its verification as entities in the tree. Once verified, the result persists by hash — re-verification is a hash comparison, not a re-derivation.

But structural integrity says nothing about correctness. A structurally valid entity can contain a false statement. An entity of type proof with a valid hash may contain an invalid proof.

Mathematical coherence is a different layer. The relationships within a structure are consistent — the proof is valid, the function computes what it claims, the derivation follows from the axioms. Checking this requires evaluating the mathematics, which is computational work. The entity system can host this verification (compute expressions, proof-checking handlers) but coherence is not a structural property — the evaluator must do the work. The coherent structures are a subset of the structurally valid ones.

There is a tension here. A result at compute/{fn}/{input} might already be correct. Content addressing preserves it: if the hash checks out, the content has not changed. But structural integrity does not tell you the result is mathematically correct — only that it has not been altered. Someone or something had to produce it correctly in the first place, or you must re-derive it. Verification is itself computation, producing another result whose correctness you must then trust or verify. Content addressing collapses re-verification to a hash comparison once the initial work is done, but that initial work still has to happen. The relationship between structural presence, mathematical coherence, and verified knowledge is an interplay the system makes visible but does not fully resolve.

Historical accuracy is yet another layer. A peer claims “this is the complete history of this entity.” The system can verify the claim’s structural integrity (typed, signed, authorized) but cannot verify that the history is actually complete without independent access to it. Corroboration from other peers helps but is itself a trust relationship.

Correspondence — does the claim match reality? — is outside the system. The map can verify its own coherence but not its relationship to the territory.

These layers do not reduce to each other. Each provides something the previous cannot. The entity system has concrete tools at the structural layer and can host verification at the mathematical layer through computation. The historical and correspondence layers require something the system cannot provide on its own: independent knowledge, or trust.

In a distributed system with no central authority, the gap between structural verification and historical truth is filled by trust relationships between peers. The capability system manages these relationships — typed, content-addressed tokens expressing who is authorized to do what. Capabilities do not create trust; they give peers tools to express and scope the trust relationships they have decided on.1

3.4. The Tree as Relation Space

The tree is not only a namespace — it is a relation space over content-addressed data. Path segments can contain content hashes, bridging content space and naming space:

The hash space is universal — paths can reference content that exists, will exist, or could theoretically exist. This makes the “infinite lookup table” concrete: the path compute/{fn}/{input} is the table entry for “apply fn to input.” What materializes the entry is the evaluator:

Two caveats. First, the invariant pointer pattern (peer + convention + hashes \to deterministic path) is coordination-free for addressing but convention-dependent for semantics. Second, the tree expresses claims, not truths. A peer’s entry at diff/{A}/{B} is that peer’s claim about the diff — it could be incorrect. Per-peer namespacing makes provenance explicit, but provenance is not correctness.

4. The Computational Model

4.1. What the Architecture Is

The entity system has a specific computational character. It is not neutral about computation — it makes a specific structural commitment: computation is the transformation of typed data in a content-addressed tree by evaluators that read structures and emit results.

This works because the substrate is information. The system represents computation, state, types, handlers, capabilities, and programs as the same thing — typed entities with content-addressed identity, organized in a tree, mutated through emit. The generality comes from the observation that a very broad range of what systems do can be represented as information and state changes. The structural properties (self-description, versioning, convergence, verifiability) are not designed in — they are enforced by the primitives. Content addressing enforces immutability and identity. The tree enforces namespace and addressability. Emit enforces atomic state crossing. These are consequences of the structure, not features added on top.

4.2. Fixed Evaluators and Universality

At any point in time, every evaluator that is actually running is a fixed evaluator. A registered handler is a fixed piece of code that processes typed inputs and produces typed outputs. Open dispatch — the ability to register new handlers at tree paths — is potential, not a property of the running system. At any moment, the system is a fixed configuration of fixed evaluators operating on typed data in the tree.

This is not a limitation. A fixed evaluator operating on sufficiently expressive data exhibits computational universality. The compute extension’s six core expression forms — literal, lookup, apply, if, let, lambda — are a lambda-calculus kernel, Turing-complete on their own; the further expression types it ships (arithmetic, comparison, field access, and the rest) are added for ergonomics, not power. The evaluator does not change; the data it processes determines what gets computed. Universality lives in the expressiveness of the data, not in the complexity of the evaluator.

This has a direct consequence for the system’s structure: because entity-native computation is Turing-complete, any computable function can in principle be expressed as entity-native data and transferred between peers. Hash functions, encoders, type validators, domain handlers — all computable, therefore all structurally expressible as compute expressions, therefore all transferable as entity data once peers share the evaluator specification. This is the structural foundation for the transferable-genome claim developed in The Entity System and The Universal Computational Genome: the native platform code required for participation is small (evaluator + primitive I/O + a few standardized natives), and everything else is data that can cross the wire.

This may say something about computation in general. A CPU is a fixed evaluator — fixed instruction set, fixed logic gates. It achieves universality because the instruction set is expressive enough for the fixed evaluator to compute anything. A ribosome is a fixed evaluator — it reads codons and produces amino acid chains according to fixed rules. It achieves biological universality because the genetic code is expressive enough for the fixed evaluator to produce any protein. In each case, the evaluator is fixed and the data carries the program.2

The entity system makes this explicit. The evaluator reads typed structures from the tree. The structures are data — entities with content-addressed identity. The evaluator transforms them and emits results back. What the evaluator computes depends entirely on what data is in the tree. “Open dispatch” means the tree can contain handler registrations that change which evaluators are active — but this is itself a data change processed by a fixed dispatch mechanism. The compute extension, in this framing, is the structurally privileged bridge: the single native-implemented evaluator that makes the transferable computation layer possible.

4.3. Hosting Other Models

Because computation is represented as typed data, the architecture can host any compute model. Lambda calculus, Turing machines, register machines, dataflow graphs — any of these can be represented as typed entities in the tree and processed by an appropriate fixed evaluator. The current compute extension uses lambda calculus-style expressions:

Nothing prevents defining alternative expression types — compute/register-machine, compute/dataflow-node — processed by different fixed evaluators registered at different paths.

4.4. Inherited Properties

Any compute model hosted in the entity system inherits structural properties from the architecture:

These properties come from the architecture’s own structure, not from any hosted compute model. Lambda calculus alone does not provide reactivity or persistence. Turing machines alone do not provide self-description or addressability. The architecture provides what no individual model provides on its own.

4.5. Computational Equivalence

Entity computation does not claim new computational power. The same class of computable functions. What we observe is different: structural properties that computation inherits by existing in content-addressed typed data. Same power, different structure.

5. Formal Systems and Mathematics

5.1. Mathematics as Information Structure

Mathematics is a structural information system — typed objects with relationships. A formal system has axioms (typed entities), inference rules (transformations), theorems (derived entities), and proofs (chains of entities connecting axioms to conclusions through valid steps). All of these are information: typed, structured, with relationships that can be verified.

In E+I+T, a formal system is a region of the tree. Its axioms are entities at known paths. Its inference rules are structural relationships between entity types. A proof is a chain of entities, each referencing the previous, forming a path from axioms to conclusion. The proof’s content hash is its identity — the same proof, constructed independently by different agents, produces the same hash.

This is not a claim that E+I+T is a new foundation for mathematics. It is an observation that mathematics, as a structural information system, maps directly to the entity system’s representational model. Typed data with content-addressed identity and named organization is what formal systems already are — the entity system makes this explicit.

5.2. The Complete Tree and the Incompleteness Theorems

The complete E+I+T tree would contain every formal system, every proof in every system, and every theorem reachable from every set of axioms. It would also contain every false statement and every invalid proof — E+I+T does not discriminate. The coherent structures (valid proofs, satisfied type constraints, consistent relationships) are a subset of all possible structures.

Each formal system occupies a region of this space — a subtree with its own axioms and rules. Gödel’s incompleteness theorems show that no single region contains proofs for all truths reachable from its axioms. The complete E+I+T space contains all regions, all proofs, all truths. Incompleteness is a property of regions (specific formal systems), not of the space itself.

Three distinct things:

  1. A theorem — a structural relationship in E+I+T. It holds as information.
  2. A proof — a path through E+I+T from axioms to conclusion. Also information.
  3. Finding the proof — searching the space. This requires computation (M+X), which requires time and a physical evaluator.

Computation does not create mathematical truth. It locates specific structures in an information space too large to materialize. The evaluator’s role is navigation — finding the coherent structures among all possible structures.

5.3. Informational Closure and Physical Incompleteness

The entity system is informationally closed: every aspect of the system — data, types, evaluators, execution traces, the evaluator’s own specification — is representable as entities in the tree. There is no information about the system that cannot be expressed within the system.

But the system is not physically closed. The tree contains the evaluator’s description, but a description does not execute itself. An evaluator described in the tree still needs another evaluator to run it. That evaluator is also describable, requiring yet another. The regression is infinite in description but terminates in physics: at the bottom, a physical process (silicon, chemistry) implements state transitions governed by physical law, not by another evaluator.

This is the entity system’s version of the limits of self-reference:

The entity system’s version is physically grounded. The information is complete — everything is representable. What is missing is not information but actuality. Having the description does not equal running it. The bootstrap evaluator (see The Entity Machine Boundary) is where this limit is concretely encountered: a physical process, external to the tree, must read the description and begin evaluation.

6. Self-Description

6.1. The Fixed Point

system/type is itself of type system/type. The type system describes itself. The recursion bottoms out at a small set of bootstrap types — primitive value types, meta-types for describing types, and a few structural types for hashes, paths, and type names. These seed the type system. The protocol’s own structures (execute, handler, capability token, and others) are then defined as ordinary type entities using this bootstrap set.

6.2. Why Self-Description Emerges

When everything is an entity, the system’s own description is entities. Type definitions are entities. Handler manifests are entities. Capabilities are entities. The system describing itself in its own terms is not a designed feature — it is what happens when a system commits to a single representational substrate.

6.3. The Meta-Circular Evaluator

The dispatch layer evaluates compute expressions that are themselves entities in the tree. The evaluator’s own handler manifest is an entity. The evaluator’s type definitions are entities. The system that evaluates programs is described by the same structures it evaluates.

This is structurally analogous to LISP’s homoiconicity and Smalltalk’s metaclass hierarchy, with two differences: content-addressed identity (the evaluator’s description has a verifiable hash) and persistence (the description survives in the tree across restarts). Unlike reflective towers (3-LISP), which require an infinite tower of meta-levels, the entity system’s self-description closes at a finite fixed point.

7. Types in Entity Computation

Types in the entity system are not external annotations. They are computational data — entities in the tree that participate in dispatch, validation, self-description, and authorization.

7.1. Types as Data

In most systems, types are external to the data they describe: schemas compiled from .proto files (Protobuf), hardcoded object types in source code (Git), codec IDs (IPFS), integer enums (Nostr), byte streams with types in a separate language (Inferno).

The entity system crosses this boundary: type definitions are entities of type system/type, stored at system/type/* in the tree, subject to the same content addressing, versioning, and dispatch as all other data. This crossing — the types-as-data transition — has cascading consequences: dispatch becomes type-aware, validation becomes data-driven, extensions become self-describing, and the protocol describes itself in its own terms.

This transition is examined across existing systems in Convergent Evolution, where it appears to be a stopping point that no comparable system has independently crossed.

7.2. Two-Level Type Architecture

The entity type system separates into two levels:

Level 1 — Structural types (core protocol): Shape description — what fields exist, their types, optionality. Single inheritance via extends. Open types by default (unknown fields preserved). Generics. Content-addressed identity. No value validation — structure only.

Level 2 — Value constraints (type extension): Pattern validation, range constraints, enumerations. Narrowing rules: child constraints must be equal to or more restrictive than parent. This guarantees Liskov substitution — any entity valid under a child type is valid under the parent.

This separation reflects an observation: structure is universal (every system needs to know field shapes), while validation is domain-specific (what counts as valid varies). The core protocol enforces structure; extensions enforce domain constraints. Both are entity-native.

7.3. Two Reference Semantics

The type system reveals two reference semantics that correspond to the computation-as-structure / computation-as-activity distinction:

Hash reference (system/hash): value reference. Points to content-addressed entity. Immutable, pure, referentially transparent.

Path reference (system/tree/path): location reference. Points to a tree path. Mutable (binding can change via emit). Impure — the answer depends on when you look.

This maps onto well-known territory: value vs. reference types, immutable vs. mutable bindings, pure vs. effectful computation. What is notable is that the distinction arises structurally from content addressing rather than from language design.

7.4. Cross-Compilation Partition

When translating any programming language to entity computation, language features partition into three categories:

Category A (maps directly): Data types, functions, closures, generics, async, pattern matching, modules, interfaces. These map to entity types, handlers, compute expressions, type parameters, continuation chains, tree structure.

Category B (erases): Lifetimes, ownership, borrow checking, GC internals, stack layout. Memory management concerns that do not cross the content-addressed boundary. Content addressing provides its own identity and lifetime semantics.

Category C (requires handler embedding): SIMD, inline assembly, memory-mapped I/O, raw pointer arithmetic. These require machine access and live inside native handlers, opaque to the entity model. See The Entity Machine Boundary for the machine boundary analysis.

The partition is uniform across languages: Rust, Go, Python, Haskell, and C all exhibit the same A/B/C split despite radically different type systems and runtime models. This uniformity suggests the entity type system captures a natural level of abstraction — the level at which computational structure is independent of runtime representation. The formal dimensional analysis is developed in Dimensional Completeness.

7.5. Curry-Howard Interpretation

The entity type system admits a Curry-Howard reading: type definitions as propositions, conforming entities as proofs (witnesses), type validation as proof checking. An entity that validates against a type definition is a constructive witness that the shape specification is satisfiable. The bootstrap types are axioms. The fixed point is a self-referential axiom.

This interpretation is suggestive, not formal. The entity type system is a shape description language, not a dependent type theory. But the structural correspondence is present: types constrain entities as propositions constrain proofs, and content-addressed identity means the same witness always has the same identity regardless of who constructs it. Whether a full Curry-Howard correspondence can be established is an open question.

8. Three Execution Models

Three models describe the temporal relationships between agent activity and information transformation. Each activates a different pair-coverage over the computational triangle (TMX) and its supporting structure.

8.1. Synchronous

Computation happens now, in response to a request. EXECUTE \to handler runs \to EXECUTE_RESPONSE returns. Connection-scoped. Results are transient unless explicitly stored. The familiar request-response pattern. In pair terms: EX + TX directed; no MX cascade required; no persistence across the request boundary.

8.2. Continuation

Computation happens later, triggered by an event. EXECUTE creates a continuation chain stored in the tree. Each step is an entity. Execution state persists across restarts — CPS (Continuation-Passing Style) made explicit. The execution state is inspectable, composable, and referenceable because it is entities in the tree. In pair terms: TX + EX + TM — dispatch with typed params, plus tree bindings for the chain entities that provide durability.

8.3. Reactive

Computation happens whenever a dependency changes. Compute expressions in the tree react to tree-binding changes (the Bind event) via the emit pathway. When an input’s binding updates, dependent expressions re-evaluate automatically. Spreadsheet semantics: cells are entities, formulas are compute expressions, changes propagate through the dependency graph. Cascades driven by the Bind event are canonical; cascades driven by content-store changes alone (the Store event in isolation) are structurally possible but currently untested territory. In pair terms: the full TMX triangle activated, with IX added for convergence detection (same-hash-no-write stops the cascade).

8.4. Temporal Coverage

These three models cover three temporal relationships:

We have not identified a fourth temporal relationship that does not reduce to one of these three or a composition of them. Each model is independently Turing-complete. These are execution models (when computation happens), not compute models (how it computes). Any compute model can be evaluated in any execution model.

The three models correspond to protocol mechanisms: synchronous execution is core (EXECUTE/EXECUTE_RESPONSE), continuation uses the continuation extension, and reactive uses the compute + subscription extensions. All three compose through the same handler mechanism, each pushing a specific subset of the TMX triangle’s pairs into regime 3.

9. Emergent Computational Structures

Several computational structures appear without being explicitly designed in. They emerge from the primitives.

Actor model. An entity at a tree path with an inbox handler is structurally an actor: identity (peer + path), state (tree subtree), behavior (handler), mailbox (inbox). This was not designed as an actor model.

CPS. Every EXECUTE is structurally a continuation. Synchronous execution uses implicit continuations (the connection). Asynchronous execution uses explicit continuations (deliver_to paths). CPS is what EXECUTE structurally is.

Reactive cascades. Subscription + emit produces reactive propagation. A tree-binding change (the Bind event) triggers subscriptions, which may trigger further computation, which emits further changes. The cascade is the computation.

Relational structure. Typed records with hash references form relations. Entities are rows. Types are tables. Content hashes are primary keys. Hash references are foreign keys. The explicit layer (hash-in-path relations) and implicit layer (hash references within entity data) compose to give the tree both navigational and structural relational expressiveness.

10. Two Orderings

The entity system can be approached from two directions. Each reveals different structure. Together they show the full picture.

10.1. The Entity Ordering (Information-First)

The build-up sequence from The Entity System, read as triangle activation:

Information precedes computation. Self-description and convergence exist at E+I+T without any evaluator — the EIT triangle alone is sufficient. The properties are structural — they follow from the triangles that become active at each step, not from the choice of compute model within the evaluator.

10.2. The Church Ordering (Computation-First)

Starting from lambda calculus and extending:

This shows how to arrive at the entity system from established formal territory. Church provides the computational base. Content addressing provides identity. Envelopes provide locality. Capabilities provide authority.

The three extensions beyond lambda calculus produce 23=82^3 = 8 combinations, each a coherent system:

Combination Properties Analog
λ\lambda alone Pure computation Untyped lambda calculus
λ\lambda + identity Self-identifying, convergent Content-addressed build system
λ\lambda + locality Located, bounded Process isolation
λ\lambda + authority Access-controlled ACL-based single machine
λ\lambda + identity + locality Convergent, distributed Git across repositories
λ\lambda + identity + authority Single-space capabilities Local entity system
λ\lambda + locality + authority Located, authorized Traditional OS process model
λ\lambda + all three Full entity computation The entity system

Known systems occupy specific positions in this space.

10.3. What the Two Orderings Show Together

The entity ordering reveals something the Church ordering obscures: some properties that the Church ordering attributes to “computation + identity” emerge from identity and structure alone, without computation. Self-description at E+I+T is a structural fact. Convergence is the same. No evaluator is needed.

Neither ordering is more correct. The Church ordering is analytically useful — it connects entity computation to established formal domains. The entity ordering is structurally revealing — it shows that information structure exists independently of computation. Together they show that the same position in a combinatorial space can be reached from either direction.34

Lambda calculus and typed lambda calculi. Church’s untyped lambda calculus (Church 1936) provides the computational base. The entity compute extension implements lambda calculus directly. System F, the Calculus of Constructions, and dependent type theories provide increasingly expressive type disciplines; the entity type system is deliberately simpler (structural shapes, not dependent types), trading expressiveness for universality across languages.

Process calculi. The pi-calculus (Milner et al. 1992) models mobile processes with channel communication. The entity system has structural parallels — per-peer trees as boundaries, EXECUTE as communication, capability-scoped mobility — but starts from data rather than processes.

Actor model. Hewitt’s actor model (Hewitt et al. 1973) and Agha’s formalization (Agha 1986) define concurrent computation through identity, state, behavior, and mailbox. The entity system produces actor structure from its primitives (inbox + continuation) without designing for it.

Content-addressed computation. Git (Torvalds 2005) provides content-addressed version control without computation. IPFS (Benet 2014) provides content-addressed distribution. Nix (Dolstra et al. 2004) provides content-addressed builds with domain-specific computation. Unison (Chiusano and Bjarnason 2019) is the closest prior art for content-addressed code, but with a different architecture (no tree, no emit pathway, no capability model).

Self-describing systems. LISP’s homoiconicity, Smalltalk’s metaclass hierarchy, and reflective towers (Smith 1984) provide self-description through different mechanisms. The entity system’s self-description is finite (fixed point), content-addressed (verifiable), and structural (not nominal).

Persistent data structures. Clojure and Datomic use immutability and structural sharing but with assigned identity (not content-derived). The entity system’s persistence follows from content addressing rather than from design choice.

12. Discussion

12.1. Architecture vs. Formalism

This paper does not present a new computational formalism. It presents a computational architecture — a structural context that determines what properties computation has. A formalism says what is computable. An architecture says what structure computation has when it occurs in a particular context. Entity computation says nothing new about computability. It describes structural properties.

12.2. The Formal Gap

The analysis rests on structural observations rather than on mathematical proofs. Operational semantics, confluence proofs, and minimality proofs are all open research directions. The two orderings provide independent structural reasoning — properties predicted by one ordering appear in the other — but structural correspondence is not proof.

12.3. The Boundary Principle

The six primitives define a boundary. Everything inside — typed data, content-addressed, in the tree — inherits all architectural properties: versioning, identity, self-description, audit, convergence, authorization. Everything outside — handler internals, native code — is opaque. The boundary is the EXECUTE interface: typed parameters in, typed result out, capability verified, emit pathway available.

This boundary explains the agnosticism properties: any compute model that crosses the boundary via emit gets the guarantees. Any type system that maps to entity types gets structural typing and content-addressed identity. Any language that implements the interface participates. Internal details are invisible at the boundary.

The boundary is also the trust boundary. Capabilities are checked at the boundary. A handler’s internal state is not accessible except through EXECUTE.

Systems with fewer primitives have narrower boundaries (see The Entity System). Git (I+T) bridges content-addressed data but not typed dispatch. gRPC (E+X) bridges typed operations but not content-addressed state. The full six defines a boundary broad enough for broad coverage.

12.4. Connections to Other Papers

This paper’s analysis connects to several companion papers:

12.5. Limitations

13. Conclusion

The Entity Church Architecture describes what computation becomes when it occurs in content-addressed typed data. It is a computational architecture, not a new formalism — same computational power, different structural properties.

The architecture is compute-model agnostic. Any model embedded in it inherits reactivity, self-description, versioning, persistence, addressability, and authorization. These are architectural properties that no individual compute model provides on its own.

Two orderings reveal the architecture’s structure. The entity ordering shows that information structure exists at E+I+T before computation enters — self-description and convergence are structural facts, not computational results. The Church ordering shows how to arrive at this architecture from lambda calculus through three extensions: identity, locality, authority. The 23=82^3 = 8 combinations map known systems to positions in the resulting space.

Three execution models — synchronous, continuation, reactive — cover the temporal relationships we have identified between agent activity and information transformation.

The tree is the computational substrate — simultaneously state, record, and result. As a memory model, it provides a universal, authority-scoped namespace where each peer’s state is their own and synchronization is opt-in. The emit pathway provides the atomic state crossing. The evaluator actualizes what the structure makes possible. The verification layers — content hashes, type validation, signatures, capabilities — compose so that structure carries its own proof.

Open questions:

14. Appendix A: Computation as a Domain — A Structural Decomposition

This appendix treats computation as a domain in its own right and applies the structural-analysis methodology developed in A Structural Methodology for Information System Domains to it. The purpose is to surface the primitives a computation domain must have at the resolution at which it can be analyzed structurally, and to use the resulting decomposition to discriminate entity computation from the standard lambda-calculus presentation. The body of this paper assumed a working notion of “computation” throughout; the appendix makes that notion structural.

14.1. The domain

We analyze “computation expressed as the reduction of structured expressions” as a domain. Instances include the untyped lambda calculus, typed lambda calculi (simply-typed, System F, dependent), combinator calculi (SK, BCKW), term-rewriting systems, abstract reduction systems, process calculi, and entity computation as described in this paper. The domain excludes computation as physical activity (which belongs to the machine-boundary domain The Entity Machine Boundary) and computation as information structure without an evaluator (which belongs to the substrate domain The Entity System, Information as Substrate).

14.2. The primitives

Six primitives survive the structural-minimality / compositional- productivity / empirical-recurrence tests at this resolution. We use two-letter codes to avoid collision with the entity-system primitives of The Entity System:

14.3. Dependency structure

Ex is the root: every other primitive operates on or annotates expressions. The dependencies are:

The coherent sub-lattice filters 26=642^6 = 64 subsets to those satisfying all dependencies. The interesting positions are:

Position Composition Instance
Pure structure {\{Ex}\} Term language without evaluation
Untyped reduction {\{Ex, Rd, Ev}\} Untyped lambda calculus, SK calculus
Typed reduction {\{Ex, Rd, Ev, Ty}\} Simply-typed lambda calculus, System F
Persistent untyped {\{Ex, Rd, Ev, Rf, Pe}\} Recursion-equation systems, ML refs
Persistent typed {\{Ex, Rd, Ev, Ty, Rf, Pe}\} Entity computation, dependent-type systems with elaboration cache

14.4. Pair classification

Six primitives produce (62)=15\binom{6}{2} = 15 pair-relationships. The heavy pairs — those carrying the bulk of structural load — are:

The remaining eight pairs are derivative — they hold relations that follow from the heavy pairs combined.

14.5. Core triads

Three triads carry load:

14.6. What the decomposition discriminates

The body of this paper claims entity computation differs from standard lambda calculus not in computational power but in architectural properties. The methodology decomposition makes this precise:

The architectural properties the body of this paper credits to entity computation — self-description, versioning, addressability, reactivity — map to specific pair activations the configuration makes available:

Property Pair-bundle activated
Self-description Ex-Ty + Ty-Pe (types stored as entities)
Versioning Rf-Pe + Ev-Pe (persistent reference history)
Addressability Ex-Rf at Rf=2 (hash-reference half of purity boundary)
Reactivity Rd-Ev + Ev-Pe (evaluator triggered by persistence changes)
Self-application {\{Ex, Ty, Rd}\} closed under reduction (meta-circular evaluator at the typed-reduction core)

The cross-compilation partition discussed in the body — pure computation (Class T) versus effectful native handlers (Class N) — maps to the partial-level structure of Rf: Class T computation uses only hash-references (Rf-hash sub-axis); Class N computation crosses the purity boundary into path-references and native effects (Rf-path sub-axis).

14.7. Trajectory observations

Instances of this domain cluster into three structural trajectories when ordered by primitive accumulation:

  1. The Church extension trajectory. Untyped lambda calculus \to simply-typed lambda calculus \to System F \to dependent types. Adds Ty in successive partial-level steps. Pe stays at 0.
  2. The persistence trajectory. Untyped lambda calculus \to recursion-equation systems \to ML with refs \to persistent typed environments. Adds Rf to Rf=2 and Pe to Pe=2. Ty stays at 0 or 1.
  3. The entity-computation trajectory. The combined endpoint: six primitives at full partial levels, with the purity boundary formalized inside Rf’s partial-level structure.

The body’s “two orderings” (entity-first and Church-first) are the projections of trajectories 2 and 1 onto the entity-system primitive set of The Entity System. The structural-methodology decomposition exhibits them as two routes through the coherent sub-lattice of the computation domain.

14.8. What this appendix does not establish

The decomposition is a Layer-1 application of the structural methodology (see A Structural Methodology for Information System Domains) to the computation domain. It is not a proof of irreducibility in the formal sense; the primitive set is the current iteration of the 3/3b loop and a refinement that combines Rd and Ev into a single primitive remains open (the case for separation rests on partial-level divergence across instances, which the methodology accepts as sufficient grounds for separation but does not prove necessary). Whether the trajectory taxonomy generalizes beyond the three identified routes is an open question.


  1. The full treatment of trust, capabilities, and authorization as a security architecture is in Entity System Security Architecture.↩︎

  2. Whether this observation — that computation is always fixed evaluators processing dynamic data — is a deep property of computation or merely a useful framing is an open question. It connects to the machine boundary analysis in The Entity Machine Boundary (what is the minimal fixed evaluator?) and the biology parallel in The Universal Computational Genome (the ribosome as fixed evaluator).↩︎

  3. The Church ordering’s three extensions (identity, locality, authority) map to the entity primitives, though not one-to-one. Identity maps primarily to I and its interaction with E and T. Locality and authority both map to aspects of P (peer) — the Church ordering separates what the entity ordering treats as one primitive. This difference may indicate that P is composite, bundling locality and authority because they co-arise in the entity system’s design.↩︎

  4. Each extension in the Church ordering appears to add properties independently — identity adds convergence and self-description, locality adds bounded transfer, authority adds delegation. If these property classes are structural rather than specific to the entity system, any system with the same ingredients would exhibit them. This remains an open conjecture.↩︎

Glossary

This glossary collects the controlled vocabulary used across the volume. Terms appear in the order they are first introduced in the foundational paper, The Entity System; cross-references in entries use the same vocabulary.

Primitives

Entity (E)
The unit of information in the system. An entity is a content-addressed, typed datum identified by a hash of its content. Entities are immutable.
Identity (I)
A stable name for a sequence of entities. An identity decouples “what this thing is now” from “what this thing was previously.”
Tree (T)
A structural composition primitive. Trees compose entities into hierarchical structures with addressable paths.
Emit (M)
The temporal primitive. Emit defines the act of producing a new entity and binding it to an identity at a point in logical time.
Execution (X)
The computational primitive. Execution evaluates content-addressed code against content-addressed data, producing content-addressed results.
Peer (P)
The spatial primitive. A peer is a uniform unit of isolation within which entities are stored, identities are resolved, and execution runs.

Composed properties

Self-description
A property emerging at three primitives (E+I+T). The system describes its own structure using the same vocabulary it uses to describe data.
Fixed-point types
The bootstrap-type structure under which types are themselves entities of a small set of “type entities” that refer to each other in a fixed-point closure.
Mutability
A structural property emerging at four primitives (E+I+T+M). Mutability is not a property of entities (which are immutable) but of identities (which may emit successive entities over time).
Computation
The actualisation of latent computational structure that emerges at five primitives (E+I+T+M+X). The substrate becomes Turing-complete via the execution primitive.
Distribution
Emerges at six primitives (E+I+T+M+X+P). Peer adds the spatial dimension that turns a single-machine substrate into a distributed one.

Architectural terms

Substrate
The minimum-floor abstraction over which everything else runs. The six primitives constitute the entity-system substrate.
Substrate-bridge extension
A Tier-1 extension that bridges substrate primitives to an application-architecture surface property. Eleven exist: TREE, TYPE, CONTENT, INBOX, SUBSCRIPTION, CONTINUATION, COMPUTE, QUERY, REVISION, HISTORY, CLOCK.
Operational extension
A Tier-2 extension supplying machinery that the substrate does not itself express: user identity (2a), network (2b), management (2c).
Standard peer
A peer profile under which a uniform set of substrate-bridge extensions is available. The standard peer is the conventional deployment target.
Conformance
The property of an implementation passing the cross-language conformance test suite that validates substrate behaviour across Go, Python, and Rust.

Methodology terms

Partial primitive
A primitive that decomposes into discrete levels (e.g., Sc=0 through Sc=4). Partial primitives admit graded analysis.
Convergence test
A reproducibility check for whether a candidate primitive set in a domain stabilises under iterated reduction.
Coherent sub-lattice
The subset of the power set of a primitive set under which dependency constraints are satisfied. For the entity-system substrate the coherent sub-lattice is 9 of 64 subsets (14%\sim 14\%); for the substrate-bridge extension lattice it is 576 of 2048 (28%\sim 28\%).
Transferability class
A classification of how cleanly a result transfers across substrates. Class N: not transferable. Class S: substrate-specific. Class T: transferable with translation. Class B: substrate-bridging — transfers without translation.
Triangle (composition triangle)
A three-primitive composition with load-bearing structural role. The named triangles in this volume are EIT, ITM, TMX, IXP, TXP.
Layer (1–4)
The scope hierarchy of the structural methodology. Layer 1: domain analysis. Layer 2: cross-domain graph construction. Layer 3: pattern extraction. Layer 4: applied analysis at variable scope ladder Sc=0 through Sc=4.

Conventions

References to other chapters use the form [@paperN] in source, rendered bundle-relatively as “Part M” when the referenced paper appears in the current bundle and as the italicised paper title otherwise. The shared references list appears in the back matter. Section numbering is hierarchical: the part number (the paper’s position in the current bundle) is the leading component (e.g., “3.2.1” is Part 3, Section 2, Subsection 1).

References

Agha G. 1986. Actors: A model of concurrent computation in distributed systems. MIT Press.
Benet J. 2014. IPFS - content addressed, versioned, P2P file system.
Chiusano P, Bjarnason R. 2019. Unison: A new approach to distributed programming.
Church A. 1936. An unsolvable problem of elementary number theory. American Journal of Mathematics. 58(2):345–363
Dolstra E, Jonge M de, Visser E. 2004. Nix: A safe and policy-free system for software deployment. In: Proceedings of the 18th USENIX conference on system administration (LISA). p 79–92
Hewitt C, Bishop P, Steiger R. 1973. A universal modular ACTOR formalism for artificial intelligence.
Milner R, Parrow J, Walker D. 1992. A calculus of mobile processes, I. Information and Computation. 100(1):1–40
Smith BC. 1984. Reflection and semantics in Lisp. In: Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on principles of programming languages. p 23–35
Torvalds L. 2005. Git: A distributed version control system.