# Learned FlyBrain controller: active experimental release

The public controller menu now includes **FlyBrain · trained neural readout**. Select it under Local controllers. The original FlyBrain default and the existing RGB-Mic Transformer are preserved. This release is a working learned-control experiment, not a demonstrated reliable-navigation upgrade.

## What is learned

The 139,255-neuron / 2,698,236-edge FlyBrain circuit is still the fixed recurrent network. A richer left/right visual and microphone encoder supplies its inputs. The trained 18,722-parameter motor readout receives 192 filtered descending-neuron spike features, with short and longer temporal filters. It never receives raw camera features directly, a map, true position, goal coordinates, rangefinder readings, contact labels or wheel odometry. No camera-to-motor bypass replaces the circuit. The connectome itself was not retrained.

The model was trained on 6,000 observations using the currently served camera model, including the visible boundary-wall fix. Teacher geometry was used only to generate offline training labels. Whole episodes were split between fitting and validation. These are existing scene families, not unseen-building validation.

Four neural updates produce each 0.15-second simulated action in the new mode. Sensor capture and inference occur in the browser. An exact RGB panel shows the policy camera; the separate Three.js view remains a spectator renderer.

## Matched closed-loop measurements

Each method was run on the same nine existing scene/profile combinations: indoor, outdoor and legacy room, each with good, poor and faulty hardware; seed 101; up to 60 simulated seconds. Both Fly variants use four neural updates per 0.15-second decision in this benchmark. This is a small comparison, not a statistically established improvement.

| Controller | Native targets reached | Mean recorded contacts | Mean best-distance progress | Mean path |
| --- | ---: | ---: | ---: | ---: |
| Original FlyBrain, matched benchmark | 0/9 | 6.22 | 1.01 m | 7.14 m |
| New learned FlyBrain readout | 0/9 | 5.89 | 1.04 m | 5.22 m |
| Newly retrained Transformer candidate, NOT promoted | 0/9 | 10.33 | 0.98 m | 3.76 m |

The learned readout reduced the average recorded contact count slightly, from 6.22 to 5.89, but it still reached no native room targets. Its shorter path is not automatically an advantage. It remains an explicitly selectable experiment; it did not replace the default as a claimed better navigator.

The newly retrained Transformer candidate reached one separate, simpler obstacle-free target but zero of nine native targets, with 10.33 average recorded contacts. It was not installed over the existing Transformer. The transformer row above therefore describes the rejected new candidate, NOT the currently selected website Transformer.

Contact counters are properties of this nominal simulator, not a certified physical-safety metric. In particular, the current collision logic may not count a moving simulated person entering the space of a stationary robot. Zero recorded contacts cannot establish safe human clearance.

## Verification

- PyTorch-to-JavaScript parity: 12 cases passed; maximum error 1.42e-07.
- Learned-controller input and causal-dependence tests: 24/24 passed. Hidden-state getters are ignored; zero or silenced output spikes produce zero wheel commands; sensor changes alter neural stimulation; the readout has no raw-sensor bypass.
- Actual public-page browser checks: **28/28 passed**, desktop 1400 × 1000 and mobile 390 × 844. Exact controller RGB, real spike-only decoding, four neural updates per sensor frame, hardware/scene switches, pending-batch stop and switching back to Transformer all passed. No JavaScript or console errors. [Browser evidence](browser-qa.json).
- [Per-episode evaluation](evaluation.json), [training report](training-report.json), [model parity](parity.json), [input/causal tests](contract-tests.json), [deployment fingerprints](deployment.json).

## Candidates deliberately not activated

A separate 56,041-parameter learned RGB/microphone collision critic was trained on 12,000 observations and 108,000 counterfactual action labels. In closed-loop tests its avoidance wrapper increased total recorded contacts, despite reducing human-contact counters. That wrapper is NOT deployed. The files retain the negative result rather than hiding it.

An isolated perspective-ground-contact renderer and analytic visual-memory/mapping controllers were also tested. They did not establish robust goal navigation and were NOT merged into the shared camera or presented as learned FlyBrain intelligence.

None of this release restarted either AGILLM trainer, the simulator backend, or a physical robot. Existing CNS and human-controller choices from parallel work were preserved. This report does not independently validate those separate controllers.

## Reproducibility

Implementation and training recipes are under `experiments/intelligence-current/` on GETH. The website is served from `/opt/meccanoid-sim-20260921/site/`. Published learned weights: [fly-spike-readout-current.json](../../assets/fly-spike-readout-current.json). Runtime implementation: [fly-spike-readout.js](../../js/fly-spike-readout.js). Training/evaluation recipes and raw generated data remain in the server project for reproducibility.

Active sensor SHA256: `08cabc999602319f26425603d4bde1f002336574e0ce560da5a272a5363ee3b6`.
Learned weights SHA256: `1a44f930d6ff2cf0b6f396c11947c67be91465c371f47a2a6872bdb1c4382e08`.
Deployment timestamp: `2026-09-21T17:38:23.265206+00:00`.

## Final rendered screenshots

[Desktop](learned-fly-desktop.png) · [Mobile](learned-fly-mobile.png). These are actual browser screenshots, not generated illustrations.
