gavin branaa / tritsystem
Independent research  ·  unconventional computing

When does structure actually help a thing compute?

Two threads — neuromorphic and phononic — that keep asking the same question, tested in simulation, on real hardware, inside two games and a from-scratch kernel. Every result measured. Negative results reported as carefully as the positive ones.

27
repositories
~600
commits
Apr–Sep 2026
active span
1 / 13
upstream fixes merged / filed
00 — Origins & method

Where this started, and the discipline it runs on

The starting point

It began with a question about plants. How does a plant actually draw its nutrients up out of the soil — and would a copper rod driven into the ground change that? Would the shape of the rod matter? Chasing one question — geometry acting on a physical transport process — led into physics, and from physics into topology: the study of what about a shape stays true when you bend and stretch it. Every thread below is still that same question, wearing different clothes — the next section is where it actually began.

How it compounded

Nothing here is a stack of unrelated side projects. Each piece feeds the next. The spiking runtime built to feed plants became the game-AI engine, then the control logic of a from-scratch operating-system kernel. The measurement discipline worked out in the phononic-reservoir studies became a standalone reasoning harness. The anomaly-detection pattern built by hand for a pond-monitoring tool was extracted into a reusable library the third time it was needed. The same .spk brain file runs on Python, C, Verilog and Godot backends without change.

prior
A question about plants, copper rods, and whether shape matters — into physics, then topology.
2026 · 04
horde-defense-beta — the first repo. A game, before any of the research.
2026 · 06
Spikeling and quasicrystal-mems-reservoir created a day apart — the neuromorphic and phononic threads both open.
2026 · 06
012-trit-search / OBSERVE — ternary-computing research turns into a working private code-search tool.
2026 · 07
tribe, methodlm, topological-phononics — the engine drives a second game; the method becomes its own harness; the reservoir study gets pre-registered.
2026 · 08
observe-api, server-guard, mcp-gateway — research tooling hardens into live, billed, monitored infrastructure.
2026 · 09
spikeling-os at milestone 121; the audit method points outward — 13 bug-fixes filed to spikingjelly, snntorch, transformers, kornia, torchaudio and more, one merged (spikingjelly #743). Full record →

Teaching myself, in public

There is a repo called the-playbook whose entire job is to teach this portfolio back to me from scratch — every claim tied to a real measured number pulled from the repo it came from, written to defend the work under questioning, not just to recognise it. The learning is structured the same way the research is: a claim is not finished until it survives someone trying to break it.

As above, so below

The Hermetic line — as above, so below — is the working heuristic, read as an engineering rule rather than a mystical one: if the same structure repeats at every scale, the honest way to build a system is to spread its work across that structure instead of routing everything through one place. A different approach, and it means no bottleneck. That reading is why the same move keeps recurring — a reservoir computes in the modes of a physical medium instead of a processor; the kernel’s scheduler is a spiking network rather than a single loop; connectivity comes from a topological rule instead of a stored table; the topology heals itself because nothing sits at a single point of failure.

Reporting the losses, in a Stoic manner

The other half is Stoic. A measurement does not care what you hoped for, and the discipline is to report the loss plainly — no spin, nothing buried, no distress about it. The measured-results ledger below is that practice made literal: every negative result is written in the same voice as every confirmation. methodlm compiles the same posture into software — it states the prediction first, then actively tries to refute what it is about to accept.

“That which is below is like that which is above.”

the Emerald Tablet — read here as an argument against bottleneck systems
00b — Lineage

Every repo, traced back to the same starting point

One game, one gardening question, and one question about shape that turned into topology. Everything else hangs off that — either as a tool the research needed, a place the research had to survive (two games, a kernel), or the discipline itself spun out into software. Two concrete things are shared all the way down: a single .spk brain file that runs on four backends unchanged, and one measured-results ledger that every project reports into.

●  horde-defense-beta        a game. the first repo — no research attached.
│
└─ a gardening question      copper rods in soil: does the SHAPE of the rod matter?
   │
   └─ TOPOLOGY               what stays true about a form when you bend it —
      │                      the through-question under everything below
      │
      ├─ PHONONIC · can a vibrating structure compute, and does its symmetry matter?
      │     ├─ quasicrystal-mems-reservoir
      │     ├─ symmetry-selection-rule
      │     └─ topological-phononics     SSH-coupled reservoir; defect-tolerance
      │                                  bounded to chiral symmetry
      │
      ├─ NEUROMORPHIC · Spikeling — built to run the plant feeder, before any game
      │     ├─ tribe                    every NPC runs a .spk brain, not a tree
      │     ├─ horde-defense-beta       the first game, now driven by the engine
      │     ├─ spikeling-os             kernel scheduler IS the SNN + SSH topology
      │     │                           (coupling borrowed from topological-phononics)
      │     ├─ pond-health  ->  sensor-duo    pattern extracted the 2nd time it recurred
      │     │             ->  ternary-snn-monitor   + OBSERVE ternary compression
      │     ├─ silicon-mega-accelerator accel techniques, tested against the runtime
      │     ├─ heterogeneous-neuron-ontology
      │     └─ doorcam                  via Spikeling's hardware sensor-adapter layer
      │
      └─ THE METHOD · pre-register -> measure -> report the negative, same voice
            ├─ methodlm  ->  llama-demo     the discipline compiled into software
            ├─ the-playbook                 teaches the portfolio back, to defend it
            └─ audit method  ->  upstream — spikingjelly #743 (merged),
                                     snntorch #441, transformers #48509, kornia #4210, +9 more


●  012-trit-search / OBSERVE    a parallel root: three-state-logic research -> a tool
      ├─ observe-api            hosted, pay-per-query, live billing
      └─ mcp-gateway  ->  server-guard   audit log + rate limits for the surfaces above
20 of 27 repositories shown — the rest are small single-purpose tools branching off the same nodes.
01 — Electroculture & the plant machine

The project was a plant feeder before it was anything else

It started as a game

The first thing being built here was just a game — horde-defense-beta, waves of enemies, a deck-building creep system, no research attached. The research arrived sideways, out of a gardening question that had nothing to do with games.

Copper rods in the soil

The question was how a plant actually moves nutrients up out of the ground, and whether a copper rod driven in beside it changes anything — the electroculture idea, that a piece of metal and the ambient electric field can shift how a plant grows. The experiments mattered less for a yes-or-no on electroculture than for the thing that kept nagging: the shape of the rod seemed to change the behaviour. Straight rod, coil, bent geometry — not the same. A question about geometry acting on a physical transport process is a topology question, and that is the door the rest of this walked through.

The spiking network was built to feed plants

The SNN did not start as game AI. It was meant to run the garden: watch a plant through sensors, dose the exact right amount of water and nutrient, and — the part that mattered — learn each plant’s preferences over time, what it responded to and what it didn’t, with nobody hand-coding a rule per species. A closed loop that adapts to the thing it is keeping alive.

Same controller, different system

That plant feeder became Spikeling. The same loop that was supposed to learn a tomato’s preferences is the shape you want for an NPC learning a player, and then for a kernel learning its own task queue. pond-health is the closest living relative of the original idea — an SNN watching an environment and flagging trouble before it is visible — and it is measured honestly against a plain trend model rather than assumed to beat it.

02 — Neuromorphic core 5 repositories

A spiking-neural-network runtime, and everything built on it

One engine: write a .spk brain, run it unchanged on four backends. From that engine, a kernel scheduler, a hardware-accelerator study, and a ternary telemetry monitor.

Spikeling
C · Python · GDScript83 commitspublic
A DSL + runtime for spiking neural networks. The same .spk file runs on Python, C, Verilog and Godot backends. Ships a Godot game-AI plugin, an MCP server, and a hardware sensor-adapter layer confirmed against real acoustic, telemetry and video devices.
from the plant-feeder controller tribe, horde AI, spikeling-os, pond-health, ternary-snn-monitor
active 2026 · 08
spikeling-os
Rust121 milestonespublic
A from-scratch x86_64 kernel whose task scheduler is the Spikeling runtime — an SNN with topological SSH-coupled connectivity as real kernel control logic. Includes an evidence-gated self-healing topology and a growing subset-C compiler with its own on-target test suite.
from Spikeling + topological-phononics borrows the SSH coupling as scheduler logic
active 2026 · 09
silicon-mega-accelerator
Python5 commitspublic
Hardware-accelerator techniques from the neural-network-on-silicon literature, applied to the Spikeling runtime and tested for correctness and accuracy rather than asserted to help.
from Spikeling accelerator literature, tested against the runtime
active 2026 · 08
ternary-snn-monitor
Pythonprivate
Heterogeneous spiking-neuron anomaly detection plus multi-trit ternary compression, run against live telemetry, CSV replay, a desktop widget and real audio.
from Spikeling + OBSERVE its SNN detector, its ternary compression
active 2026 · 08
heterogeneous-neuron-ontology
Pythonpublic
Testing an external “heterogeneous compute” ontology principle against how a spiking neuron population is actually composed.
from Spikeling an outside claim, checked against the real population
active 2026 · 08
03 — Ternary & verifiable reasoning 3 repositories

Three-state logic, and a harness that makes claims prove themselves

Ternary-computing research that shipped a real tool, and a sibling project that holds any reasoning — human or model — to a pre-registered, refutation-tested standard.

08 — Upstream OSS audits 1 merged · 12 filed

The same audit method, pointed at other people’s libraries

The audit method sharpened on Spikeling’s own reset / dtype / per-neuron bugs, then pointed outward — first at neuromorphic libraries, then at transformers, kornia, torchaudio and the lucidrains attention repos. Each is a real bug found by reading the code, reproduced against a clean install, and sent upstream with a root cause, a fix, and a failing-then-passing test. One has landed; the rest are filed and open. “Merged” means a merged pull request I authored — that is exactly one. The full audited record, with method and per-finding write-ups →

spikingjelly #743
PyTorchmerged
A neuron’s registered reset values are plain attributes, not buffers, so .to() / .half() never moves them. After net.half(), reset() writes a float32 value back into a float16 state. Fix threads the transform through the reset-value store.
merged 2026 · 09
transformers #48509
PyTorchfiled
DynamicCache.reset() zeros the K/V in place — correct for the fixed-buffer StaticLayer, wrong for DynamicLayer, which grows by cat. Post-reset the cache is corrupt, not empty. Fix gives DynamicLayer a real reset.
filed 2026 · 09
kornia #4210
PyTorchfiled
Every auto-augment policy gates through one float32 mask, upcasting a float16 / bfloat16 batch to float32. Fix threads the input dtype into the mask; also clears 19 of the repo’s tracked half-precision xfails. Maintainer-approved pending changelog.
filed 2026 · 09
rotary-embedding-torch #50
PyTorchfiled
The token-position index is built in the query dtype. float16 can’t hold integers past 2048 — so past that, consecutive positions collapse onto the same rotary frequency and the position signal flattens. Fix widens the position math to float32.
filed 2026 · 09
snntorch #441
PyTorchfiled
LeakyParallel silently ignores a per-neuron beta — an if/elif branch shadowed by one that always matches first. Fix restores the per-neuron decay and rejects a wrong-length beta. (snntorch #443: zeros() no-op.)
filed 2026 · 09
vit-pytorch #373
PyTorchfiled
RvT doesn’t run in half precision at all: its axial rotary embedding unpacks the input dtype and never uses it, so sin/cos stay float32 and the attention matmul raises. Fix is the one line that uses the dtype it already read.
filed 2026 · 09
… and 7 more
recordfiled
perceiver-pytorch #70, torchaudio #4228, reservoirpy #245, pytorch-esn #27, tenns-core #1, sinabs #336, librosa #2099 — each with a root cause, a reproduction, a fix, and a regression test. Method overview and honest-negatives list included.
the full record
09 — Measured results the honest ledger

What the measurements actually showed

The point of the whole portfolio. A result is logged here whether it went the way it was hoped to or not — a reported negative is the method working, not the method failing.

FindingDomainVerdictWhat was measured
Homeostatic threshold adaptation beats a blind “breathing” rhythm Spikeling Confirmed A periodic threshold rhythm was falsified against noise; a closed-loop homeostatic controller then decisively beat both — deterministic recovery, tighter worst-case latency.
SSH reservoir tolerates a dead element — only while chiral symmetry holds topological-phononics Boundary Defect-tolerance is real in the idealised SSH model, vanishes when chiral symmetry is broken, and reverses sign in a physical Duffing model. The boundary is the result.
Structured noise cancels exactly at the reservoir readout reservoir / real mics Confirmed A simulation prediction, then reproduced twice on a real two-microphone rig — after catching a verdict-printer bug and a spectral-overlap confound. Holds when target and interferer are spectrally separated.
Independent NPC brains phase-lock from shared audio alone tribe / sync-mesh Confirmed Kuramoto order parameter r rose 0.48 → 0.94 with no direct communication. Strong on one device; about 10× weaker across two separate microphones — visible only over six trials with lag correction.
Fibonacci connectivity as a cheap substitute for stored random wiring topological-phononics Negative A 3-parameter recursive rule vs O(N²)-stored random connectivity: honest cost of ~1.4–2× on linear recall, ~1–17% on NARMA10. Smoothly scale-characterised, N = 50–10,000. Reported, not buried.
Ternary-quantising a vision model for edge speedup ternary vision Negative MobileNetV3-Small went 78.8% → 4.9% accuracy across two independent attempts. A real 13.8× disk saving, but zero inference speedup. Ruled out cleanly.
One symmetry law unifying the phononic, ternary and acoustic substrates cross-substrate Negative The grand-unification attempt lost when each substrate’s real code was measured. Only a narrow winding-invariant rhyme between the phononic and ternary cases survived; acoustic is a separate mechanism.
Two-microphone TDOA source localisation on the sync-mesh rig acoustic localisation Open Coin-flip accuracy (2 of 4) after fixing three real bugs. Room acoustics vs positioning-consistency vs a remaining bug not yet distinguished. Left open, not spun.
SNN-driven SSH-topological task scheduler as real kernel logic spikeling-os Confirmed Boots and schedules under an SNN with dimerised coupling; evidence-gated self-healing topology live; 121 milestones, each with an on-target test and a fresh + reused boot check.
Baking the reasoning method into small-model weights llama-demo / method Confirmed Fine-tuning the method into a 0.5B model’s weights beat prompting the same model — on that small model, the discipline transfers better as training signal than as instructions.
Confirmed — prediction held under test Negative — it didn’t work, and that’s written down Boundary — true only inside a stated condition Open — not yet resolved, not overclaimed