Research report · 1 October 2026 · fifth check
Fifth check: we scrambled the fly brain four ways, two viral video claims refereed and 6 new entries
This check ran our own control study for the first time. We took the sugar reflex from our Build your own guide and compared the real fly wiring with four scrambled versions, after writing down the design and how we would read the results. We also refereed the week's most-viewed fly-brain claim, a fly said to play Gorilla Tag, re-checked all 94 entries and 49 videos, and added 6 entries and 2 videos.
Short answer
Our own fair test (made by us, pre-registered): degree-preserving and weight shuffles (5 each) silenced the feeding motor neuron MN9 (0 Hz against 85.2 Hz), and so did a degree-preserving shuffle made 1.5 to 3 times more excitable; scrambling only the interior wiring kept 46% of the response; sign shuffles made the whole brain fire. One reflex in one model, one trial per shuffle.
By our fixed ledger rules, our own study row now scores lower: mixed, with an unfair null and weak method (30 Sep: helps, partly fair, moderate). The gain-matched check did not reach the real activity level, and on the MN9 rate alone the sign-shuffle runaway counts as "the null does better". We did not override the rules.
The week's most-viewed claim, "I Taught a Fly How to Play Gorilla Tag (seriously)" (527,756 views on 1 Oct), names no model, data or code: grade U. A Roblox fight video with 139,364 views is also U. A new search sorted by views found every high-view video of the week; our date-sorted search had found none of them.
What changed
- 94 → 100catalogue entries (6 new: 1 A, 2 B, 1 C, 2 U)
- 49 → 51gallery videos (2 new, 0 removed)
- 31 → 32control studies; 24 with a wiring null
- 0grade changes; 1 repository gone (HTTP 404)
Our own fair test
Made by us · pre-registered 1 Oct 2026, 10:51 UTC · first scrambled trial 10:58 UTC
The model is the Shiu et al. whole-brain model (philshiu/Drosophila_brain_model at commit 91bdd1e7, upstream default parameters) on FlyWire v783. 21 sugar-taste neurons fire at 150 Hz; the readout is MN9 (ID 720575940660219265), the motor neuron that moves the proboscis for feeding. Each trial lasts 1 s and runs in a fresh process. There is one trial per shuffle, at trial seed 0, so the spread across shuffles is the uncertainty.
Numbers behind the chart
| Arm | What it keeps | MN9 (Hz), mean ± sd | Per shuffle (Hz) | Response kept | Activity vs real | Neurons active | Reading |
|---|---|---|---|---|---|---|---|
| Real wiring | The measured FlyWire v783 connectome | 85.2 ± 3.56 (5 trials) | 82, 89, 81, 86, 88 | 1 | 1× (13,372–14,284 spikes) | 366–385 | reference |
| Degree-preserving | Keeps partner counts | 0 ± 0 | 0, 0, 0, 0, 0 | 0 | 0.291× | 103 | silent |
| Weight shuffle | Keeps who connects to whom | 0 ± 0 | 0, 0, 0, 0, 0 | 0 | 0.388× | 109 | silent |
| Boundary-preserving | Keeps sensory and motor wiring | 39 ± 1.22 | 38, 39, 39, 41, 38 | 0.458 | 0.648× | 215 | partly |
| Sign shuffle | Swaps excite and inhibit | 214.2 ± 43.27 | 268, 188, 191, 253, 171 | 2.514 | 257.637× | 60,501 | runaway |
| Gain check on degree-preserving shuffle 3 | As degree-preserving, with synapses ×1.5, ×2 and ×3 | 0 at every gain | ×1.5: 0, ×2: 0, ×3: 0 | 0 | 0.37×, 0.50×, 1.74× | 193, 349, 4,257 | not matched (no gain within ±30% of real activity) |
The pre-registered design
We wrote this down before the first scrambled trial. Every null keeps the stimulus, the readout, the neuron model, the number of connections and the total synapse count.
| Arm | What is scrambled | What is kept | Shuffles |
|---|---|---|---|
| D: degree-preserving | The target of every connection (the same null as our 28 Sep run) | Every neuron's number of inputs and outputs; each connection's signed weight stays with its sending neuron | 5 (2 re-used from 28 Sep, 3 new) |
| W: weight shuffle | The synapse counts across all connections | Who connects to whom; each connection's sign | 5 |
| S: sign shuffle | Which neurons excite and which inhibit (each neuron keeps one sign: Dale's law) | Who connects to whom; synapse counts; the number of excitatory and inhibitory neurons | 5 |
| B: boundary-preserving | The target of interior connections only | Every connection out of a sensory or ascending neuron and into a motor, descending or endocrine neuron; every neuron's degrees | 5 |
| G: gain check | As D (shuffle 3), with synapses 1.5, 2 and 3 times stronger | As D; the real wiring is not re-tuned | 1 shuffle, 3 gains |
- Reading rules, fixed in advance: retention (null mean ÷ real mean, floor 0 Hz) of 0.10 or less means "the response needs the specific wiring this null destroys"; 0.90 or more means "this null keeps what the response needs"; anything between is "partly". Whole-brain activity is reported next to every arm, so that a silent brain and a mis-routed one can be told apart.
- Matched gain: the gain whose whole-brain spike count is closest to the real run's (13,372–14,284 per trial), if it comes within ±30% of the 13,828 midpoint; otherwise "not matched".
- Property checks run on every new null before simulating (degrees kept, boundary connections unchanged, graph and signs kept, one sign per neuron); a failed check would discard the trial. All passed. A trial running over 240 s would count as a timeout; none did.
- Boundary sides come from FlyWire's cell-class annotation: 138,625 of 138,639 neurons matched (99.99%, above the 99% bar), giving 18,669 input-side and 1,485 output-side neurons.
Results by arm
Real wiring: 85.2 ± 3.56 Hz over 5 trials (82, 89, 81, 86 and 88 Hz) from our 28 Sep run. We re-ran trial seeds 0 to 2 and got 82, 89 and 81 Hz, bit for bit the same. Pooled over all 8 trials it is 84.75 ± 3.62 Hz, but that counts three trials twice, so it is shown only for reference. The sd of 3.56 is the sample sd of the five trials; our 30 Sep ledger showed 3.19, the population sd of the same values. A real trial fires about 13,400–14,300 spikes across the whole brain and activates 366–385 neurons, among them 26–29 motor and 64–66 descending neurons. Without a stimulus nothing fires (0 Hz).
| Arm | MN9 (Hz), mean ± sd | Per shuffle (seed: Hz) | Retention | Effect (rule) | Neurons active | Whole-brain spikes | Active motor / descending |
|---|---|---|---|---|---|---|---|
| D: degree-preserving | 0 ± 0 | 1: 0, 2: 0, 3: 0, 4: 0, 5: 0 | 0 | helps | 103 | 4,021 (0.291× real) | 0 / 2.7 |
| W: weight shuffle | 0 ± 0 | 101: 0, 102: 0, 103: 0, 104: 0, 105: 0 | 0 | helps | 109 | 5,363 (0.388× real) | 1 / 7.8 |
| S: sign shuffle | 214.2 ± 43.27 | 201: 268, 202: 188, 203: 191, 204: 253, 205: 171 | 2.514 | worse | 60,501 | 3,562,609 (257.637× real) | 99.8 / 1,033.4 |
| B: boundary-preserving | 39 ± 1.22 | 301: 38, 302: 39, 303: 39, 304: 41, 305: 38 | 0.458 | helps | 215 | 8,967 (0.648× real) | 12.6 / 48.6 |
- D and W: silent, and mis-routed. MN9 stayed at 0 Hz in all 10 shuffles. The brain goes quiet (about 30–40% of the real spikes, about 100–110 active neurons, almost no motor or descending neurons) although the sugar neurons still fire at about 150 Hz. Pre-registered reading: the response needs the specific wiring these nulls destroy.
- B: partly. Keeping every sensory and ascending output and every motor, descending and endocrine input, and scrambling only the interior, keeps about 46% of the MN9 response with about two thirds of the real spikes. The reflex partly runs on boundary pathways that this null keeps; the interior wiring matters for the rest.
- S: runaway. MN9 fires above the real rate only because the whole brain ignites: about 3.6 million spikes, about 60,500 active neurons and about 1,033 of the 1,299 descending neurons. By the mechanical rule this arm "keeps" the response (retention above 1) and counts as "worse" for the real wiring; read with its activity, it shows that the real assignment of excitation and inhibition is what keeps the response selective. The ledger's single metric cannot express this.
The gain check
- ×1.5: MN9 0 Hz, 5,063 whole-brain spikes (63% below the target), 193 active neurons.
- ×2: MN9 0 Hz, 6,865 spikes (50% below), 349 active neurons.
- ×3: MN9 0 Hz, 24,024 spikes (74% above), 4,257 active neurons.
Result: not matched. No gain came within ±30% of the real spike count, so by the pre-registered rule the arm is "not matched" and the null cannot be called tuned equally. But the bracket is informative: from half to 1.7 times the real whole-brain activity, MN9 stayed at 0 Hz. A degree-preserving shuffle does not bring MN9 back by being made more excitable. This rests on one shuffle (shuffle 3); the matched-gain trials on shuffles 4 and 5 were planned as optional and not reached.
What it changes in the controls ledger
- Our study row (
byo-shiu-shuffle) now holds one arm per null type, with shuffles as samples. By the fixed rules it is mixed, with an unfair null and weak method (30 Sep: helps, partly fair, moderate). Our plan sets "tuned equally" only with a gain-matched arm; without it, the rule rates a null that loses as unfair (lower excitability could explain the loss), and "unfair" caps the method at weak. The sign-shuffle runaway makes the wiring effect mixed. This is the rule working as designed: the run measured more but did not yet settle the excitability question. - New study: Brain Runners: an untrained FlyWire brain survives 82.34 rows against 27.84 on shuffled wiring, but the same rule with no brain reaches 74.05 (held-out tracks, one shuffle). "Helps" by retention; the no-brain baseline is not beaten.
- Counts: 32 studies (31 on 30 Sep), 24 with a wiring null (23): helps 10, no difference 5, worse 2, mixed 6, not yet scored 1 (30 Sep: 10, 5, 2, 5, 1); 8 studies have no wiring null. Reflex circuits: helps 3, mixed 1 (30 Sep: helps 4 of 4).
Deviations from the plan
None changes the design; all are listed for the reader.
- The annotation table has a combined "sensory_ascending" class (581 neurons) that the pre-registration did not name. It was treated as input side from the start, before any boundary trial.
- The run was split across three sessions by interruptions. One degree-preserving trial (shuffle 3) was lost in flight and re-run; in the last session no new trial was started after 30 minutes. All 18 core trials (5 shuffles in every arm) and the 3 gain trials finished; the optional trials (matched-gain trials on shuffles 4 and 5, a stimulus-and-readout-keeping null, shuffles 6 to 10) were not started. This is the only shortfall against the pre-registered queue.
- The restarts used small wrappers that call the unchanged trial code in the pre-registered order.
- The gate trial (real wiring, seed 0) ran after the first real re-runs and the first boundary trial. It gave the pre-registered 82.0 Hz, bit-exact, so no result depends on the order.
Limitations of the fair test
One reflex (sugar to MN9), one model (Shiu et al. leaky integrate-and-fire, upstream parameters), one trial per shuffle at one trial seed, 5 shuffles per arm, 1 s trials. The gain check ran on one shuffle and found no matched gain. The MN9 rate is the only metric, and it cannot tell selective drive from global ignition. The boundary split depends on FlyWire's cell-class annotation. Two of the five degree-preserving shuffles come from our 28 Sep run (same code, trial seed 0).
Chart: a brainless autopilot plays Doom as well as the fly brain
We fetched the Doom control study's results file once more and charted every row. DOOMFLY survives 53.34 s (n 20; the file's 95% interval 49.73–56.78 s; sd 8.40 s from our ledger), the matched autopilot 51.93 s, and the best of 12 autopilot settings (spray_t1_f20) 53.44 s. Shuffled wiring survives 5.48, 9.29 and 5.48 s on three seeds (6.75 s pooled), no connections 5.50 s and no vision 10.46 s. All 5 numbers our ledger uses match the file.
All 19 rows of the source file
| Arm | Key in the file | Seconds survived (mean) | 95% interval | Episodes | Kills (mean) |
|---|---|---|---|---|---|
| DOOMFLY, real wiring | real | 53.34 | 49.73–56.78 | 20 | 12.1 |
| Matched spray autopilot (no brain) | spray_matched | 51.93 | 45.32–57.28 | 20 | 11.75 |
| Spray autopilot setting t0_f0 | spray_t0_f0 | 6.11 | 5.63–6.67 | 16 | 1.625 |
| Spray autopilot setting t0_f10 | spray_t0_f10 | 8.59 | 7.65–9.57 | 16 | 1.625 |
| Spray autopilot setting t0_f20 | spray_t0_f20 | 9.63 | 8.47–10.89 | 16 | 1.875 |
| Spray autopilot setting t1_f0 | spray_t1_f0 | 5.68 | 5.35–6 | 16 | 0.9375 |
| Spray autopilot setting t1_f10 | spray_t1_f10 | 26.7 | 21.91–31.43 | 16 | 6.6875 |
| Spray autopilot setting t1_f20 | spray_t1_f20 | 53.44 | 48.81–57.31 | 16 | 13.25 |
| Spray autopilot setting t2_f0 | spray_t2_f0 | 5.46 | 5.18–5.76 | 16 | 0.25 |
| Spray autopilot setting t2_f10 | spray_t2_f10 | 9.65 | 8.29–10.99 | 16 | 2.625 |
| Spray autopilot setting t2_f20 | spray_t2_f20 | 21.09 | 16.55–26.08 | 16 | 5.0625 |
| Spray autopilot setting t4_f0 | spray_t4_f0 | 5.28 | 5.06–5.53 | 16 | 0.25 |
| Spray autopilot setting t4_f10 | spray_t4_f10 | 7.6 | 6.73–8.52 | 16 | 1.5 |
| Spray autopilot setting t4_f20 | spray_t4_f20 | 11.41 | 9.39–13.59 | 16 | 3.125 |
| Shuffled wiring, seed 0 | shuf0 | 5.48 | 4.99–5.97 | 4 | 0.25 |
| Shuffled wiring, seed 1 | shuf1 | 9.29 | 7.1–11.47 | 4 | 1.5 |
| Shuffled wiring, seed 2 | shuf2 | 5.48 | 4.99–5.97 | 4 | 0.25 |
| No connections | noconn | 5.5 | 5.24–5.76 | 8 | 0.375 |
| No vision (blind) | blind | 10.46 | 8.84–12.83 | 8 | 2.5 |
What people argued about this week
The scan covered new items since the end of the last scan (30 Sep, 09:45 UTC). Two claims were promoted, both under a catch-up rule for videos with at least 100,000 views from the last 14 days that our earlier scans missed; no new claim met the normal bar.
- Hacker News: 6 queries, 7 stories and 60 comments, no fly-brain story. Google News: 5 queries, 29 items; one new item, a press-release story, is not a behaviour claim. Reddit refused our scripts (HTTP 403), as before. GitHub: 18 queries, no new repository with 20 or more stars (the best has 2). Dataset pages: no new release.
- YouTube, sorted by date (17 queries, 108 unique fly-related hits) against sorted by views this week (8 queries, 38 unique) and this month (32): only 4 of the 38 week-by-views hits were also among the date-sorted hits. The views sort found every high-view item (Gorilla Tag 527,756; a cartoon skit 1,040,792; "Fly's Brain Played Video Games" 214,311; "THEY TRAPPED A FLY'S BRAIN" 138,478); the date sort found only new low-view uploads. The month view found five videos over 1 million views from 10 to 19 Sep, mostly skits without a mechanism claim we could check.
- Watch pages: 68 view counts read, 70 refused (HTTP 429). YouTube now shows our fetcher a sign-in player; counts, dates and descriptions are still read from the page data.
- Re-checked: the Pokémon stream (no new search hit, stays U); the Rainbow Six claim (a new short from the same media team, 4,346 views, not reviewed; stays U); Vinesauce's FlyLeno stream grew to 42,125 views.
Verdicts
Gorilla Tag: U
"I Taught a Fly How to Play Gorilla Tag (seriously)" (SuperCatCrazeGT, uploaded 26 Sep): 527,756 views on 1 Oct, against 415,612 a day earlier. The description says the fly learned "using its open source brain", but names no model, data or code. Its only link is a linktr.ee page with 76 links (game maps, socials, sponsors), none of them code; four GitHub searches returned nothing. The channel's earlier video trained an ordinary AI on Gorilla Tag. We could not watch the video, so its on-screen claims are not recorded. Verdict row
Roblox fight: U
"I Made Two Real Flies Brain Fight Each other in JJS" (Evoke, uploaded 21 Sep): 139,364 views, never seen by our earlier date-sorted scans. Only Discord and Roblox-group links; three GitHub searches found nothing related. Any coupling to a Roblox fighter would be the creator's own client script. Verdict row
Tracking
- Repositories: of 84 tracked repositories, 4 changed, 79 were unchanged and 1 is gone or private: FlyDoom by eganeganegan returns HTTP 404. We keep its record and re-check before removing it. Changed: acamilo-flybrain (24 commits: run infrastructure and status notes), fly-ai (9 commits, not read yet), fly-cartpole (25 commits) and Open Fly (1 commit).
- Links: 219 URLs: 180 ok, 12 redirects, 19 blocked by bot checks, 8 errors (the FlyDoom code and source pages, four YouTube watch pages that were rate-limited, and two bot blocks).
- Videos: 49 of 49 available.
- Re-grades: none. fly-cartpole was re-checked from its results summary at the new commit: 392.5 ± 103.1 steps against 390.3 ± 96.4 for shuffled wiring (the author's permutation p = 0.4771), against 233.8 vs 218.3 (p = 0.1953) at the commit our ledger uses. Same verdict, no difference. We have not read the protocol changes behind the new numbers, so the ledger keeps the older numbers until the next check.
New entries
Every entry was graded from files we opened, or from what the claim publishes when there is nothing to open. The numbers are the authors' own.
| Entry | Kind | Grade | Controls | Deciding evidence |
|---|---|---|---|---|
| Brain Runners | Game | A | Wiring null: helps; no-brain baseline not beaten | An untrained FlyWire brain plays a lane-runner on held-out tracks: 82.3 rows, 27.8 on shuffled wiring, 74.1 for the same rule with no brain. One shuffle, no spread. |
| Doodle Fly | Game | B | None (its two controls change the eyes, not the wiring) | The whole FlyWire brain plays a Doodle-Jump-style game in the browser; target position drives eye neurons, steering neurons press the buttons. |
| FLY67 | Browser demo | B | None | The whole FlyWire brain in a browser tab drives an animated 3D fly that feeds, grooms and escapes; inputs and outputs are hand-set, and one gesture is a labelled script. |
| Fly x Jev | Browser demo | C | None | MaleCNS wiring turns a robot's compound eye into visual signals and a learned memory, but an external commercial model picks every action. |
| Fly plays Gorilla Tag | Game (video claim) | U | None | See the verdict above. |
| Two fly brains fight in a Roblox game | Game (video claim) | U | None | See the verdict above. |
Left out: a repository that uses FlyGym's name was confirmed as a plain copy of FlyGym and excluded; a second one adds its own work (a bridge from the BANC connectome to FlyGym's legs) and is left for the next check; a later copy of Fly x Jev was excluded. None is linked. A research project with its own controls and several new low-star repositories were not opened in time. FLY67's README links a demo video file that returns "not found"; we do not link it.
Gallery
51 videos, 2 new: the creators' own uploads of the Gorilla Tag and Roblox fight videos, both grade U and described from their titles, descriptions and view counts only. The README videos of the other four new entries were checked: none was added (no video, a GIF only, or a file that returns "not found"). All 49 earlier videos were available.
Build your own: re-tested
Pass. From an empty folder on Linux (Python 3.11.2, 2 CPUs): the environment fallback without pip worked as written, the pinned install finished in 37 s, the partial clone at 91bdd1e7 in 9 s, both data checksums match the published table, the first sugar trial gave 82.0 Hz (pass band 75–95 Hz), bit-exact with our first run, and seeds 1 and 2 gave 89 and 81 Hz, also bit-exact. The project's tests: 6 passed in 56.5 s. The fair test's own unit tests: 8 passed. No page fixes were needed. On PyPI, the pins still install on Python 3.11 (Brian2 2.9.0 pinned; the latest is 2.10.1, which needs a newer Python). Re-test details · Try a fair control yourself
Method
- Lead scan: Hacker News, Google News, GitHub, dataset pages and YouTube, now searched both by upload date and by view count (this week and this month), plus the video pages of all fly-related hits.
- Tracking: remote repository heads for every tracked repository, one-at-a-time shallow clones of the changed ones, and a check of every entry link and every video.
- Fair test: the pre-registered design above, run with one trial worker, one fresh process per trial, and every trial written to its own file with property checks, activity and versions. The analysis computed per-arm means, retention and the ledger's effect class with fixed rules.
- Controls ledger: rebuilt with the same fixed rules; the data file validates against its unchanged schema.
- GitHub data: anonymous access; fields reused from earlier checks keep their true dates in the data file.
Limitations
- The fair test's limits are listed above.
- Every ledger number except our own is the authors'.
- The two new verdicts rest on watch-page data only: we could not watch the videos.
- About half of the watch-page view counts were refused (HTTP 429). X and TikTok cannot be searched without a login, and Reddit refuses scripts.
Next
- "Add a body": a candidate list of descending neurons for walking, turning, escape and grooming (present in the model; their published basis is listed but not yet verified), and the FlyGym derivative with a BANC bridge as a design input.
- Finish the fair test cheaply: a gain between ×2 and ×3 that hits the real spike count, matched-gain trials on two more shuffles, and the stimulus-and-readout-keeping null. A selectivity measure (MN9 rate relative to whole-brain activity) next to the MN9 rate would need a new pre-registration.
- Carried flags: confirm whether FlyDoom was removed; read fly-ai's 9 new commits; read fly-cartpole's new protocol before updating its ledger numbers.
Main sources
- Model: philshiu/Drosophila_brain_model @ 91bdd1e7; Shiu et al. 2024, Nature: doi.
- Doom control study: results/a2/summary.json (commit 6b22922).
- Brain Runners: repository (commit 79d8039). fly-cartpole: repository.
- Videos: Gorilla Tag, Roblox fight.
- Every study's arms, sources and commits: controls.json; every entry's sources: projects.json.