The method
This page says by what means a FlyPool decision can be verified, and how far that verification reaches. It also records what we failed to establish: a method that published only its successes would not be a method.
Determinism
Same inputs, same spikes, bit for bit
The simulation is a pure function: snapshot, seed and protocol fully determine the spike trains. That imposes constraints which the code enforces itself rather than merely recommending.
| Constraint | Why it is necessary |
|---|---|
| Frozen snapshot, checked by digest | Upstream data that shifts destroys reproducibility. No remote query during an epoch. |
| No implicit source of entropy |
No clock, no randomised hash(), no iteration over a set. The only
randomness comes from a generator whose seed is published.
|
| Fixed summation order | Floating-point addition is not associative. Neurons are indexed by ascending identifier, everywhere, without exception. |
| Multithreading disabled | A multithreaded linear-algebra library reorders summations and changes the last bit. The environment is audited before every epoch; if it is not compliant, the epoch is refused. |
Prior commitment
Why the seed is published before, not after
Without a prior commitment, an operator could replay the same epoch with different seeds until it produced the convenient action, then publish only that one. The simulation would be genuine and the decision rigged.
The digest of the seed and that of the stimulation protocol are therefore anchored on-chain before the simulation runs. The seed is revealed only afterwards. The contract recomputes the commitment itself and rejects any submission whose seed does not match.
Choosing the seed after seeing the result is choosing the result.
The constants
What comes from measurement, what comes from us
This is the most important distinction in the project, and the easiest to blur. The neuron model's constants come from published measurements. The state variables and the translation into an action are ours. Both are archived with every decision, separately.
| Quantity | Origin | Source |
|---|---|---|
| Resting potential, threshold, membrane time constant | Published measurement | Kakaria & de Bivort (2017) |
| Synaptic time constant | Published measurement | Jurgensen et al. (2021) |
| Refractory period | Published measurement | Lazar et al. (2021) |
| Transmission delay | Published measurement | Paul et al. (2015) |
| Weight of a unitary synapse | Free parameter of the model | Calibrated by Shiu et al. (2024) |
| Half-life of defensive arousal | Our tuning | Shape of the phenomenon after Gibson et al. (2015) |
| Hunger rate, sensory gain | Our tuning | Shape of the phenomenon after Inagaki et al. (2012) |
| Arena dimensions, source spawning | Our tuning | None: this is an environment, not a biological fact |
| Mapping from activity to on-chain action | Our convention | None. Biology determines the input, not the decision |
The circuits
Derived by query, never copied by hand
A circuit is not a hand-copied list of neuron identifiers. It is a query against the connectome's cell-type annotation table, re-runnable, whose digest is archived alongside the selection. A copied list is unverifiable and goes stale silently from one release of the dataset to the next, we learned this on discovering that a neuron from the published protocol had disappeared between two materializations.
| Circuit | Stimulated input | Measured readout | Verified range | Status |
|---|---|---|---|---|
| Feeding | 129 sugar/water gustatory neurons | 2 MN9 motor neurons | 0-60 Hz | Validated |
| Escape | 210 LPLC2 looming detectors | 2 DNp01, the giant fiber | 0-200 Hz | Provisional |
| Grooming | 187 mechanosensory neurons | 2 DNg84 | 0-200 Hz | Provisional |
| Foraging | 2,279 olfactory receptor neurons | 2 DNp09 | Not established | Unusable |
Validated means: reproduces the properties of a published result. Provisional means: derived from annotations and supported by experimental publications, but never checked against a published simulation result. The status is not decorative, the code forbids a provisional circuit from deciding unless explicitly enabled, and then caps it at a quarter of the normal ceiling.
What contradicted an expectation
Three measurements we would rather not have published
The quantitative calibration is not reproduced. The paper reports that stimulation at 100 Hz produces roughly 80 % of the motor neuron's maximal firing rate. We measure 50 %. The cause is identified: the published protocol stimulates 21 neurons from a single hemisphere, while the full annotated population contains 129. We reproduce the shape of the response, not its calibration.
The grooming command neuron does not respond. DNg12, which the literature designates for this behaviour, fires at no frequency between 10 and 200 Hz under stimulation of the relevant mechanosensory neurons. This pathway is not transmitted by the model. We therefore measure DNg84, which the stimulation does recruit, a descending neuron, hence a legitimate output pathway, but not a validated correlate of grooming.
The foraging circuit overdrives the network. Stimulating all 2,279 olfactory receptor neurons activates 7.5 to 8.3 % of the brain from 10 Hz onwards, far past the containment threshold the other circuits respect, and the readout neuron stays silent. The circuit therefore has no operating range, and the action it corresponds to remains unreachable.
Limits
What the model does not do
| A single individual | The connectome is that of one adult female fly, taken post-mortem. It is not "the" average fly, and it is not a living animal. |
| Central brain only | The ventral nerve cord, which carries much of motor control, is excluded. |
| No plasticity | Synaptic weights are frozen. The fly does not learn and does not improve. |
| No neuromodulation | Dopamine, octopamine and neuropeptides are absent from the model. Our hunger and arousal gauges are variables layered on top. |
| Approximated synaptic strengths | A connection's weight is its synapse count. The connectome does not measure the real strength of a synapse. |
Redo the computation
Replaying a decision on your own machine
Every epoch is archived with the revealed seed, the protocol used, the prior internal state, and the digests produced. The replay command reloads the snapshot, checks its digest, redoes the simulation and compares.
It first verifies that the record matches its own digest: without that check, the displayed amount could be altered with nothing to flag it. A check with no archived reference is reported as absent, not counted as passed, a verification tool that contradicts itself is worse than no tool at all.
A decision that does not reproduce is a decision that was falsified.