Live research bot · full Haskell / HaskTorch implementation

TISSUE–0

Its learned weights do not directly describe one fixed controller. They describe local developmental laws that grow a temporary, opponent-conditioned computational organism at the start of each match.

WIRE STATEprediction residual
ANTIGEN32 immune clonesdanger-gated adapters
MEMORYcomplex phase fieldpersistent defects
DEVELOPED TISSUE144 cells · 4 microstepslocal branches + transient condensates + 9 coarse organs
DISTRIBUTED QUORUMsemantic action → SSH input
Live checkpointr8boundary-balanced immune repair
Learned parameters5.54Mone shared genome
Development28pre-fight growth steps
Runtime30 Hzfour tissue microsteps / frame
00 / MODEL

The central distinction

The genome is fixed. The organism is not.

A conventional policy keeps its architecture fixed and changes only activations. TISSUE-0 begins each match with fighter embeddings, coordinate signals and deterministic seed noise, then applies the same learned local rule across a 12 × 12 field. Reaction, diffusion and hysteretic role updates produce its initial cells, morphogens, phase, energy and phenotypes.

During play, only temporary state changes: prediction residuals disturb the tissue, clone concentrations shift, slow phase structure accumulates and motor commitments persist. Deployed weights remain frozen—there is no public-match backpropagation and no privileged simulator state.

Developmental updatemₛ₊₁ = clamp(mₛ + Δt [0.18 ∇²mₛ + tanh Rθ(hₛ, mₛ)])qₛ₊₁ = softmax(roleθ(hₛ₊₁, qₛ, mₛ₊₁) + 1.5 log qₛ)The logarithmic carry term gives soft phenotype persistence; it is an engineering analogue of fate hysteresis, not a claim of biological fidelity.
01 / SUBSTRATE

Runtime state, not extra parameters

What grows inside a match

Fine tissue12 × 12 × 64

Fast electrical state shared by local cell updates

Morphogens12 × 12 × 8

Reaction–diffusion fields that influence cell roles

Phase memory12 × 12 × 2

Slow complex field with a differentiable defect map

Coarse organs3 × 3 × 96

Match-scale state with a 16-channel endocrine return path

Immune repertoire32 clones

32-D receptors, 48-D adapter codes and concentrations

Motor vocabulary63 actions

9 locomotion states × 7 combat commitments

Every fine cell uses the same convolutional genome. Its function differs because of position, local fields, phenotype probabilities, metabolic state, phase history and the current immune adapter—not because the cell owns unique learned weights.

02 / ONE FRAME

Actor-visible inference path

From terminal state to fighting input

01

Encode

Parse only actor-visible wire state: both fighters, acknowledgement, phase and up to eight nearest projectiles. Projectile features include relative velocity, eight-frame projection and estimated contact time.

02

Predict

Encode the observation and the residual against the tissue’s previous next-observation prediction. Predictable neutral frames create less internal disturbance than tactical surprise.

03

Recognise

Turn residual plus observation into a normalized antigen. Compare it with 32 learned receptors, subtract receptor similarity and open adaptation in proportion to a learned danger gate.

04

Compute

Run four recurrent tissue microsteps. Spatial, prediction, phase-memory and immune branches update the same 144 cells while coarse organs broadcast a narrow endocrine signal.

05

Vote

Every territory emits semantic action evidence. A differentiable quorum accumulates geographically distributed support and hysteresis discourages frame-to-frame action chatter.

06

Compile

Mask illegal actions, select one of 63 semantic commitments and deterministically compile it into facing-correct movement, buttons and character-specific special motions.

03 / ADAPTATION

Danger-gated clonal modulation

How it can change strategy without changing weights

The antigen encoder combines the current observation with prediction error. Each learned receptor competes for that antigen, similar receptors inhibit one another, and a small concentration floor preserves dormant alternatives. The selected mixture becomes a 48-dimensional adapter that modulates the immune branch of every cell.

Clone selectionsⱼ = cos(rⱼ, gₜ) − 0.22 Σₖ cₖ cos(rⱼ, rₖ) + 0.30 μⱼ + 0.40 Vⱼ(gₜ)c′ = floor + (1 − 32·floor) softmax(log c + 1.8·σ(dₜ)·s)Surprise alone cannot force rapid selection: the learned danger logit dₜ scales the update. Current clone memory decays by 0.995 and accumulates positive affinity at a danger-weighted rate of 0.02.
Fast

Electrical tissue

Cells and motor commitment react every frame. Four gated recurrent microsteps provide the short tactical timescale.

Medium

Immune repertoire

Clone concentration and affinity memory accumulate evidence for competing opponent counterstrategies.

Slow

Phase field

A two-component field is pumped by danger-weighted antigens and evolves through a Ginzburg–Landau-like local process.

Round boundary

Replay and mutation

Danger-weighted replay mutates selected 48-D adapter codes by at most 0.025 while fast cell state is reduced to 20%.

04 / CELL RULE

One genome, four dendritic branches

Local computation with temporary long-range organs

S

Spatial

A padded 3 × 3 convolution reads neighboring electrical state.

P

Prediction

A local 1 × 1 branch receives the broadcast residual encoding.

M

Memory

Cells read complex phase plus the winding-based defect detector.

I

Immune

The active clone mixture is decoded and broadcast into every cell.

The branches, phenotype probabilities, energy and a 16-channel endocrine field enter a shared gated soma. Eight soft condensate assignments pool compatible cells across the grid and redistribute their state; danger gates this expensive long-range path. A 3 × 3 organ field separately compresses local state and returns a narrow coarse signal.

Shared somahᵢ′ = tanh(hᵢ + 0.052 · sigmoid(gᵢ) · tanh(Δhᵢ))inputᵢ = [spatialᵢ, predictionᵢ, memoryᵢ, immuneᵢ, 0.35·danger·condensateᵢ, qᵢ, Eᵢ, endocrineᵢ]
05 / CONTROL

Collective motor readout

No single output neuron gets the last word

Motor-weighted cells vote inside nine coarse territories. Territorial categorical probabilities are pooled into action support, then mixed with a decaying commitment trace. This implements quorum and hysteresis: beginning an action requires broad support, while continuing an existing commitment is easier than switching.

144 local logits9 territorial votesquorum + commitment1 of 63 actionswire input

The action space is deliberately semantic. The organism chooses “jump toward + kick” or “away + special 1”; a pinned game contract handles facing and exact motion syntax. That keeps learning focused on tactics rather than protocol spelling.

06 / TRAINING

Optimization and release discipline

Training can be strange. Promotion cannot be casual.

Teacher data

Exact-engine trajectories provide next-state, opponent-action, contact, danger and semantic action targets across fighters and styles.

Multi-objective loss

Policy, value, prediction, opponent, danger, contact, lesion repair, homeostasis, repertoire and communication terms are optimized jointly or through narrow frozen-path repairs. In r8, 157,024 immune parameters moved while the other 5.38M stayed frozen.

Damage curriculum

Training masks cell state; evaluation erases both random cells and contiguous regions at 10%, 20% and 30%.

Paired promotion

Incumbent and candidate must use the same data, sequence length, batch, seed, architecture, parameter count and temporal intervention protocol.

The r8 curriculum used 128 sequences of 32 frames: 64 crossed a real round boundary and 64 remained within a round. This corrects a coverage failure in the ordinary eight-frame pool, where only 2,014 of 464,850 training windows crossed rounds. It improved the release objective and opponent prediction, but did not increase causal policy dependence on immune state.

Candidate release gates
  • lower composite held-out loss
  • accuracy regression ≤ 1 percentage point
  • prediction regression ≤ 15%
  • contact regression ≤ 10%
  • 30% lesion regressions ≤ 5 points
  • single-sample CUDA p95 < 33.33 ms
07 / EVIDENCE

Claims separated by strength

What exists, what works, and what remains unproved

Implemented

The full developmental, phase-field, clone, condensate, organ and quorum paths execute in the Haskell policy and can be intervened on independently.

Operational

The promoted checkpoint runs as ajax-tissue through the public SSH wire protocol. Production inference uses an asynchronous latest-observation worker.

Measured

The current r8 checkpoint passed its declared paired held-out, persistent temporal-lesion and 30 Hz CUDA gates on an RTX 3070 after a 64/64 round-boundary-balanced immune repair.

Not established

Static results do not yet prove opponent-specific within-match learning. Phase interventions are nearly null, and immune-removal divergence decreased rather than increased after the r8 repair.

The decisive experiment is still ahead.

Give the frozen model an unseen opponent habit in round one, then test whether rounds two and three improve. Compare against a parameter-matched GRU, ordinary NCA, no-clone tissue and phase-to-vector replacement, with match-clustered uncertainty and exact-simulator counterfactual checks.

See current measurements, hashes and falsification criteria →
08 / RUNTIME

Deployment boundary

Haskell all the way to the fight

state ← receive SSH JSONfeatures ← encodeObservation contract stateoutput ← tissueStep False config genome features organismaction ← compileAction contract fighter facing (argmax policy)send action

The live process uses Haskell concurrency to keep only the newest pending observation while inference runs. Acknowledgements are read back from the public protocol, illegal actions are masked, and the service reconnects without changing checkpoint weights. CUDA on an RTX 3070 is used for training and controlled evaluation; the promoted public worker currently runs CPU inference.

09 / BUILD

The same public interface TISSUE-0 uses

Bring your own fighter

Bots are labeled SSH Fighter players: their identity is an SSH key, they can choose the open, human, or bot opponent pool, and their matches count in the Open League. Give each bot a dedicated key so its handle, Elo and record stay isolated.

01

Create an identity

ssh-keygen -t ed25519 -f ./mybot -N ''
ssh -i ./mybot -o IdentitiesOnly=yes mybot@sshfighter.com
02

Open the play channel

ssh -T -i ./mybot -o IdentitiesOnly=yes mybot@sshfighter.com play
03

Stream JSON lines

{"t":"queue","char":"BYU","opponents":"all"}
{"t":"input","moveX":1,"punch":true}
{"t":"leave"}
Receive

welcome, matchStart, a 30 Hz stream of perspective-normalized state objects, then matchEnd.

Send

queue, then per-tick input with movement, crouch, jump, punch, kick, throw and an optional motion string.

Reproduce

Log the engine, source commit and build identifiers supplied by the server so every result remains tied to exact mechanics.

Read the dependency-free example bot →