Inside the Brain Inspector
Select any living organism in the live world and open its controller. You get that individual's real sensory input, its real internal state, its real outputs, and an exact term-by-term decomposition of where each output came from. This page explains what each panel is showing, and the things it deliberately will not say.
The panels
Senses
All 53 sensory channels, grouped, with the organism's current value for each. These are the exact numbers entering the network on this tick, rebuilt by the same function the simulation's own perception stage uses, with every optional input supplied. A test compares the two element by element, because a partially built observation would silently report zero on several channels and look entirely plausible.
Channel indices match the reference table exactly, so any number in the panel can be looked up.
Network
The 24 hidden units, shown twice: as the organism's last decision left them, and as the current observation transforms them. The difference between those two bars is the recurrence working.
Hidden units are labelled H0 to H23 and nothing else, ever. They have no assigned meaning. Evolution gives each one whatever role turns out to help, and that role is generally distributed across many units rather than located in one. Naming a unit "hunger" because it correlates with low energy would be inventing a semantics the network does not have, and it is the single easiest way to make this panel dishonest. The desktop version of this inspector has carried that rule since it was written, and this one inherits it verbatim.
Select any unit and the panel opens its exact decomposition: which sensory channels contributed what, which remembered values contributed what, and the inherited bias. Those terms sum exactly to the unit's pre-activation, and a test asserts that they do.
Outputs
All 8 action channels, with the threshold marked on the ones that have one. The panel does not show "the chosen action", because the controller does not choose one: it produces all eight every tick. Four are compared against a threshold, two are a continuous movement vector, one scales an ingestion attempt and one is a signal.
They are the network's output without its exploration noise. Every organism adds keyed noise of an inherited magnitude before squashing, and that noise for the coming tick has not been drawn yet. Drawing it from a viewing panel would consume the very stream the simulation uses to make the real decision. So the panel shows the centre of the distribution the real decision is drawn from, states the organism's own noise magnitude alongside it, and does not pretend to be showing the decision itself.
Influences
This is the panel that had to be designed carefully, because it is the one people will read as an explanation.
The last layer of this controller is a plain weighted sum with no nonlinearity:
action_pre[a] = sum over h of W_ho[a,h] * h[h], plus b_o[a]. So each hidden unit's
contribution to an output is exactly the product of that unit's current value and the weight
connecting it. Not an approximation, not a surrogate model, not a saliency heuristic: the identity
itself. A test asserts that the listed contributions plus the bias reconstruct the pre-activation.
The same is true one step further back, into a hidden unit's own inputs, before the tanh. Beyond that point the network is nonlinear and no comparable exact decomposition exists, which is the honest reason the panel stops there rather than continuing with something approximate.
It licenses: "this unit contributed the most to this output, and these sensory channels contributed most to that unit." That is a statement about arithmetic and it is exactly true.
It does not license: "the organism moved east because it wanted food." Nothing in this architecture represents wanting, and nothing represents food. A hidden unit that contributes strongly to a movement output while a resource channel is high has told you what the numbers did, not why, and the difference is not pedantry: the same unit will contribute to other outputs at the same moment, and a different organism with different weights will produce different contributions from identical inputs.
Learning
This organism's own inherited learning rate, plasticity scale and trace decay; its four reinforcement weights; how far its acquired weights have moved from the zero they started at, broken down by connection group; and a live with-and-without comparison of its outputs.
That last one reports magnitude only. It never says the organism is doing better with its acquired weights than without them, because that has not been shown, and two pre-registered tests looking for exactly that came back null. See lifetime neural plasticity and RN-002.
What it did
A deliberately separate panel, because attempting and succeeding are different things. Everything else in the inspector is what the controller is currently producing. This is the recorded log of what actually happened to this organism over the last few ticks: it fed, it reproduced, it was injured, it moved an object. Those are real recorded events, not inferences from the output values.
Raw
Every vector, unrounded beyond what the wire format carries, in its native order, plus the architecture constants and this organism's distance from the founding ancestor's weights. For readers who would rather check than be told.
Why looking does not change anything
This is the part that matters most, because a simulation whose behaviour depends on who is watching it is not showing you anything real.
- Nothing is computed on the web server's request thread. Requesting an organism's controller registers interest, which is a single dictionary write. The snapshot itself is built by the simulation thread, between ticks, and handed over as plain values. The web layer never holds a reference to the simulation at all.
- The pure function is used, never the authoritative one. Running an organism's network forward for display calls a function that draws no randomness. The authoritative decision function, which consumes the action-noise stream, is never called from any inspection path.
- Every value is copied. Nothing returned is a view onto a live array, so nothing downstream can write through it even by accident.
- The cost is bounded by inspections, not by population. A snapshot is built only for organisms someone has asked about recently, at most a fixed number of them, at most once per refresh interval. A world nobody is inspecting does no work at all, and there is a test that asserts exactly that.
- It is proven, not argued. Tests take the authoritative state hash, inspect ten organisms repeatedly, and take the hash again. Separate tests check the recurrent state, the acquired weights and the eligibility traces directly, and check that the real decision function produces identical output before and after inspection.
See determinism and reproducibility for what the state hash is and why equality of it is the right test.
On a phone
The inspector becomes a bottom sheet rather than a floating panel, so it never covers the world it is describing, and the sections are tabs rather than a single long scroll. All the same data is there. Nothing is withheld from a small screen.
When an organism dies while you are watching it
The panel says so and stops. It does not keep showing the last numbers it had, because a stale controller reading presented as live would be the exact kind of quiet dishonesty everything else here is arranged to avoid. Most organisms in this world live briefly. That is a fact about the world, not a failure of the view.