Artisanally authored by an imperfect flesh-and-blood human with hopes, dreams, needs, and even actual feelings.
The FreqNode: A Problem-Solving Telospore Of Stupid Simplicity
Eirdicht starts you off with a single, specific type of telospore: the Frequency Node. Or FreqNode, for short.
A FreqNode is about as simple as possible while being capable of delivering value. It operates at the intersection of three domains: frequency, digitality, and humanity.

The purpose of a FreqNode is pull the future into focus. Both its own future and your own future at the same time. It achieves this by delivering value to you.
Value arises from having an impact; from causing change. Change worth rewarding.
Each FreqNode must clearly cause a change in you and that change must then be judged by you as good. Good enough to elicit a rewarding response from you that tells it “more of that, please”.
Basic Structure
Like all telospores, each FreqNode node has an input side, an output side, and an active memory in between.

The Input Side
The input side of a FreqNode is like a sensor: whenever it is “touched”, it does two things. First it adds the event to its memory. Then it generates a fresh projection from the more recent events.

The projection is in the form of a periodic wave, called a WaveFunc, that provides a fuzzy yet continuously-updated sense of the telospore’s next touch.
The Active Memory Between
The memory of a FreqNode is a simple list of the times it has detected a “touch” from its input side.
Each new touch on its input side causes a FreqNode to emit a signal packet to its output side. This packet contains a WaveFunc, which is a periodic representation that roughly matches the frequency of the recent events in its memory.
In its simplest form, the WaveFunc is a sine wave with a defined period. For example, if the memory contains four events that have an average of 60 minutes between them, the wave will be defined as having a period of 60 minutes.
Since the WaveFunc is a function of time — f(t) — its value can be resolved for any future time. Past times too, but there’s little value in that.
A WaveFunc’s resolved value is adjusted by a time discount, or a gradual decay in its resolved value over time. This means that WaveFuncs wilt; frequent updates are needed to generate relevant (and valuable) outputs.
Each new WaveFunc packet is a state update to the network, not an actual event in itself. It is post-hoc but predictive, meaning “a specific action just occurred, so here’s the info you need to predict its next occurrence”.

The value of a freshly updated WaveFunc always resolves to 0.0. Then its value rises gradually throughout its period until its peak value of 1.0. The peak, say 60 minutes after the reset, is like the fully-open position of a valve. It is the midpoint of a probablistic “window” of the event’s next occurrence. No guarantees, of course.
The Output Side
The output side can be connected to another FreqNode, to a terminus, or to nothing at all.
Connected To Another FreqNode
When FreqNode A’s output side is connected to FreqNode B, Node B receives each of Node A’s WaveFuncs via its input side. This isn’t a “touch” but it’s a fresh WaveFunc nonetheless. Since a fresh WaveFunc resolves to a zero value, there’s almost no chance of causing further effects.
FreqNode B may also be receiving the outputs of other FreqNodes. When a FreqNode has multiple inputs, it uses a decision function to manage its own outputs.

Each time it receives an updated WaveFunc, it immediately executes its decision function. Additionally, it also regularly resolves (via a tick) the sum of its input values and will emit a WaveFunc of its own when is aggregate value crosses an activational threshold.
Connected To A Terminus
Terminus just means delivering the signal to Eirdicht itself, which passes it on to the “outside world”. This typically involves an event being fired or a webhook being called.
Connected To Nothing At All
Node-related events will still appear in console logs and perhaps be reflected in visual UIs. They just won’t impact the network.
How This All Ties Together
Imagine a button as the “sensor” of the touch.
Since each WaveFunc is re-calculated and reset on every new touch, it will have adjusted slightly to project a new future.
In this sense, the rhythm is a bit of a dance: the human can touch at any time. Whether early, late, or whenever, there is no wrong time because the human is an independent agent. It is the job of the node & network to immediately adapt, which it does despite its stupid simplicity.
Who is always in charge? You, the human! Everything in your Eirdicht came from you. Everything in it is about you. It is nothing without you and remains your choice to continue engaging with it.
Still, a FreqNode is very slightly agentic. It has the minimum necessary amount of high-quality information — and the capability, if you grant it — to induce an action from you. Which action? Any action, as long as it results in you tapping the FreqNode’s “button”. This rewards the FreqNode with a stay of execution and a slightly improved chance of a good follow-up prediction.
Death
nodes…just die. like everything else just dies. forgotten. irrelevant. no longer impacting anything as “itself”. they had no right to “life” in the first place, and simply failed to continue carving it out. nothing technical needs to happen. nothing mathematical either. i mean it can, and probably it will, but