Serendip Commons Society logo Serendip Commons SocietyTowards Relational Being ← All projects

Epistemology Infrastructure: Relational Dynamical Network and Spinfoam

What crosses between parties is a perturbation, not a content.

Two models of epistemic emergence, implemented as a domain-neutral formalism in the Python package rdn: a heterogeneous dynamical network with no global clock, and a two-complex history that takes the combinatorial structure of spin foam models and reassigns it. Each refusal the account makes is enforced by a test rather than by convention.

Domain II · Epistemic Infrastructure Domain I · Theoretical & Ontological CC BY-NC 4.0 Python 3.12 · 124 tests Active

The refusal, and what follows from it

What a party holds is reconstructed from the representations available to it, under the interpretation it holds. Nothing content-like crosses between parties; what crosses is a perturbation, which the receiving party's own law consumes. That is a familiar enough claim to state. The consequence is less familiar, and it is formal rather than rhetorical:

A model adequate to that account may not assume a space in which the states of distinct parties are located — because distances in a common medium are what a signal traverses, and the picture returns as a property of the mathematics no matter what the prose says.

Most models of communication smuggle the transmission picture back in through their mathematics: a shared state space, a common metric, a global clock, a scalar that orders one party's quantity against another's. Each is a place where a distance can be measured, and a measurable distance is a channel a content can traverse. This project is an attempt to build the models without any of them, and to make the absence checkable.

Two models, and where they meet

Model 1 · Parts IV–V

The network

A discrete-event simulator over components whose state spaces differ in structure and in whether they carry a metric, whose laws differ in kind, and whose events are their own. Components are coupled by partial maps and resolved to quiescence with per-channel multisets and no global clock.

Its outputs are runs; its characteristic results are closure under coupling and the removal test for emergence.

Model 2 · Part VI

The history

A two-complex derived from a run plus a supplied identification of elements across states. The combinatorics of spin foam models are borrowed and reassigned: faces are the histories of primitive elements, edges are couplings persisting across intervals, vertices are events at which couplings rearrange, and a boundary is a state.

Its outputs are histories; its characteristic results are the residues of an event and coarse-graining onto a transition record.

They meet at exactly one function — rdn.correspond.induce_history(run, party, identification). Everything the paper claims about the correspondence is a property of that function, which is what makes those claims testable rather than asserted.

Why the core carries no domain word

The package is called rdn and not epistemic, and the reason is a claim in the paper rather than a matter of taste. A model of this kind is a formalism: it fixes what kinds of object there are and how they compose, and asserts nothing about the world until an interpretation is assigned. The definitions of knowledge and of emergence hold under one particular design — and hold in no form for the models alone.

So knowledge is not a core function. It is one interpretation's name for a core computation, and a musical reading of the same computations names them differently and is equally entitled:

Core computationEpistemic readingMusical reading
network.stable_couplingsknowledge
intersection of coupling-identifier setsshared knowledge
network.emergentrelational knowledge
history.residues(h, v).createdemergence at an eventharmonies made

A package named epistemic whose core module was epistemic.network would assert in its own import path the thing the paper denies. Hence four strata, of which only the first is the formalism: formalism (rdn.structure, .network, .history, .correspond), strategy (how a design advances state at all), interpretation (which formal quantity gets which domain word), and design (the state sets, laws, couplings and admissible classes of a particular case). Dependencies run downward only, and a test — not a review convention — enforces it per source file.

Four figures, all generated from the code

Every figure below is produced by figures/make.py under a single recorded seed; deleting the output directory and re-running reproduces them. Resolution order is fixed in the figures because reproducibility is what matters there, and randomised in the tests because order-independence is the property under test.

Six node rows with occurrences as tick marks along a linear extension of the causal order; the institution row is nearly empty
Figure 11.2 — a run, in the causal order. Six node kinds carrying state sets of different mathematical type: a finite set at the witness, a bounded buffer at the interview, a coupling set with a real phase vector at the reporter, an accumulating list at the archive, real accumulators at the reader, a set of positions at the institution. No quantity in one row is compared with a quantity in another. The institution row is nearly empty because most of what a node emits is not receivable by most other nodes — the partiality of the operators working, not a modelling shortcut. The horizontal axis is not a time: it is a position in one linear extension of the causal order among many, and the function that chose it returns the extension it used, precisely so a caption can say a choice was made.
Four panels: reporter phase sawtooth, interview buffer sawtooth, reader expectations converging toward four dotted rate lines, archive size rising linearly
Figure 14.1 — node and coupling dynamics. Four quantities, each belonging to its own node's state space, and again none compared across panels. The interview buffer is the state of a generalised coupling — a node in its own right sitting on a channel, so that what reaches the reporter is a function of the coupling's history and not of the witness alone. An editorial pipeline, a citation practice, a platform's ranking, a translation: each is this kind of object, and none is a wire. The reader's expectations approach the reporter's rates and do not reach them, because its exposure is partial and its evidence decays between receipts. That gap is the subject of the next figure.
Discrepancy against occurrences: the with-archive median falls below the tolerance line and stays; the archive-removed median never settles below it
Figure 14.2 — the removal test. With the archive present, the discrepancy between the reader's expectations and the reporter's rates falls below the tolerance and stays there under continuing perturbation. With the archive deleted it does not. So the predicate is an invariant of the coupled system belonging to no participant: not to the reader, who without the archive cannot hold it, and not to the archive, which without a reader preserves records and no correspondence.
Two panels of a two-complex: a chord change with four note ribbons, and three vertices of the reporter's induced history
Figure 16.1 — a history as a two-complex. The assignment is what the figure is for: a face is the history of an element, an edge the history of a coupling, a vertex an event, a boundary a state. Left: C–E–G becomes C–E♭–G; the E's face terminates, the E♭'s begins, and C and G pass straight through. It is the notes that persist and the relations among them that are made and unmade — so it is the notes whose histories are two-dimensional. The naive assignment (elements as nodes, couplings as edges) inverts the dimensions, and everything downstream then quietly means the wrong thing while every test still passes. Right: three vertices of the reporter's history, induced from an actual run.

The removal test, and its three outcomes

Emergence is not asserted; it is tested by deleting a component and asking whether a capacity of the whole survives. Running it on the news design gives three distinct outcomes, and the third is a control the paper itself does not run:

  delete archive     -> FAILS
  delete reader      -> INEXPRESSIBLE
  delete editor      -> HOLDS
DeletedOutcomeReading
archiveFAILSa restriction of the predicate exists and is no longer an invariant — the capacity depended on the archive
readerINEXPRESSIBLEno predicate on the reduced state set corresponds to the invariant at all: the strongest form of dependence, reported distinctly and never folded into failure
editorHOLDSthe capacity did not depend on the editor. Failing at every node would show the invariant was carried by a proper subnetwork; passing here is what locates the dependence rather than asserting it

The analysis parameters travel with the answer rather than being hidden — how many trials must succeed, and how many perturbations to skip before judging — because a warmup chosen to make a result appear is exactly the failure the discipline is meant to prevent. And which of a design's parameters carry a substantive claim about the case, rather than merely making a contrast legible, is machine-readable in the design module.

The refusals, and what enforces each

Each of these corresponds to a claim that fails if it fails; none is a matter of house style. Every one is held by a test, so that the discipline survives the next contributor.

RefusalHow it is enforced
No common state spacestate, input and emission are type variables with no base class carrying fields; a test asserts the state sets are of different mathematical type
No global clockper-channel multisets, no timestamp, no total order over occurrences; concurrency must be independent of recording order
No metricisomorphism and its absence, nothing graded — a test asserts there is no distance
No scalar over nodescounts within one node's own record are permitted; comparison across nodes is not
No amplitudeno weight, probability or measure over histories
Sampling discloseda sampled stable set is a superset, and the return type says so
Undecidability disclosedthere is no “confluence: true”; the honesty types refuse to be coerced to a boolean
No vocabulary of conveyancea test scans the source for it
No objective function in the corea test walks the syntax tree for identifiers
Layers run downward onlya test, per source file
Raise, never repaireach error message names the condition that failed

The last of the refusals deserves a note of its own. A utility function anywhere in the core would turn the epistemic results into results about a utility-maximising system, and the paper's claims would stop applying. So goals, preferences and rewards live behind a policy interface, on the far side of a seam: the epistemic update never calls the action layer, and a decision procedure added tomorrow changes which emissions occur and never how reconstruction works.

What is deliberately absent

These are marked as open problems in the test suite, so the absence appears in the test report rather than in a document nobody opens.

The package

pip install -e ".[test,figures]"

pytest                   # 124 passed, 1 xfailed
python tour.py           # the whole apparatus in one screen, public API only
python figures/make.py   # regenerates every figure, seeded

Python 3.12 and numpy; matplotlib for the figures only. Nothing else in the core — because a dependency in the core is a dependency the formal claims inherit. Three reference designs ship with it: the paper's news instance (eight nodes, two of them generalised couplings), a music design with no network at all and no knowledge in it anywhere, and a domain-neutral toy against which the conformance tests stand — so that nothing about the formalism is tested only through the example it was written for.

What this does not establish

Three cautions travel with the central figure, and they are recorded in the code and not only here. It exhibits the definitions on one instance and establishes nothing about knowledge processes in the world. Its parameters were chosen to make a contrast legible, and a different choice yields a different picture. And every number in it belongs to the design: the model supplies no metric and no measure of discrepancy.

The source paper is a working draft. The implementation covers Parts IV, V and VI.

Governance & licence

The project is classified under Domain II (Epistemic Infrastructure) of Schedule A — coming to truly know and trust one another, rather than mistaking our own reflections for the other — with Domain I (Theoretical and Ontological) as a secondary, since the models are a formalism before they are about anything. Released under the Creative Commons Attribution-NonCommercial 4.0 licence, © 2026 Wanhong Huang, following the paper.

A formal project-approval instrument (SCS/PA/…) has not yet been issued for this project; this page describes work in progress and will be updated when one is adopted.

Repository · Source paper (working draft)