STAKEFLY / docs watch it live

Results

Every table here is pulled from the task reports in docs/reports/ at build time, so this page cannot say something the reports do not. Nothing on this page is a claim that the fly has an edge, or that it likes anything.

The kernel reproduces upstream (S01)

wirehead reports ours
neurons / directed edges 166,700 / 25,582,938 166,700 / 25,582,938
R1–R6 / R8 inputs 3,335 / 811 3,335 / 811
plastic KC→MBON07/11 edges 7,835 7,835
control, 200 ms white: PAM11 spikes 0 0
stimulated (20 mV into 15 PAM11): PAM11 spikes 261 261 (87.0 Hz per cell)
plastic edges changed after the stimulated 200 ms 3,087 3,087
video-linked reward == manual pulse (spike hash) yes yes

Also measured, not in wirehead's report: the control run changed 1,768 plastic edges on its own. The centred rule moves weights whenever KC and DAN rates deviate from baseline, so "edges moved" is not a reward signal by itself; the number to show is the difference against a matched control, which was 3,095 edges here.

timing, Mac M1 Pro
graph prepare (import + compile) 19 s
engine load (graph + circuits + kernel build cached) 2.6 s
one 50 ms observation, median of 20 0.282 s (min 0.271, max 0.303)
real-time factor 0.18×
peak RSS 0.95 GB

So on the Mac the fly lives about 5.6× slower than wall-clock. For the show that is fine: the loop advances 50 ms of neural time per observation and we report simulated time, as wirehead does.

timing, Linux box (AMD Ryzen 7 9800X3D, g++ 13)
graph prepare, including the 1.1 GB download ~60 s
engine load 1.3 s
one 50 ms observation, median of 20 0.1689 s (min 0.0653, max 0.1758)
real-time factor 0.3×
peak RSS 0.96 GB

The kernel is single-threaded CPU code; the GPU is not used. The box is 1.7× faster than the Mac per observation.

Does the reward change anything? (S04)

Three runs from the same start, same seed, same reels: reward on; reward off; reward on with the plastic weights frozen. What differs between them is what the dopamine current and the rule actually did.

Linux box, threshold 65 Hz, refractory 2 s, 40 minutes of wall time each, run concurrently from the same cold start, same seed (so the reels are the same sequence), same wake-up (2,000 ms of white, Kenyon cells at ~4,000 spikes per 500 ms). Files under runs/s04-box/ on the Mac.

reward no reward reward, weights frozen
neural time 578.5 s 578.6 s 575.0 s
observations 11,529 11,533 11,459
spins (= readout crossings) 126 127 112
spins per neural minute 13.1 13.2 11.7
spins, first half / second half 60 / 66 60 / 67 52 / 60
wins 43 44 37
wagered → returned 126 → 76.0 (60.3 %) 127 → 76.8 (60.5 %) 112 → 62.1 (55.4 %)
balance 1000 → 950.0 949.8 950.1
observations with the reward current on 172 0 148
PAM11 mean / max (Hz) 1.56 / 168 0.00 / 1.3 1.34 / 168
readout mean (Hz) / share ≥ 65 Hz 21.0 / 2.0 % 21.4 / 1.9 % 20.3 / 1.5 %
plastic edges moved / L1 drift 3,648 / 472 3,633 / 412 0 / 0
  • The reward current did what it was built to do and nothing more. PAM11 fired at up to 168 Hz for 200 ms after each win (and never without the current); the rule moved ~3,600 edges. With the reward on, the fly pressed Spin 126 times; with it off, 127. There is no evidence in these runs that dopamine changed how often it plays. The spin rate is 13 per neural minute either way, and it did not rise from the first half to the second in any run beyond what all three share.
  • Frozen weights: 12 % fewer spins, and that is not attributable to learning. The frozen run is the only one whose trajectory diverged early (the weights stop moving from the first observation), and a chaotic spiking network on a different trajectory sees different reels at different moments. No-reward and reward, whose weights both move, stayed within one spin of each other. So the comparison that isolates the rule's effect on behaviour is reward vs no-reward, and that difference is zero.
  • "Edges moved" is not a reward signal. The no-reward run moved 3,633 edges. The centred rule drifts weights whenever Kenyon-cell and dopamine rates deviate from baseline, and the aversive PPL101 cells fire on their own. Only the difference against a matched control says anything, which is why the page shows the count but the docs say what it means.
  • The bankroll did what the paytable says. All three lost about 50 credits on ~120 one-credit spins: an observed return of 55–60 % against the published 94.6 %, which for a paytable with a 300× line and 120 spins is ordinary variance (see S03). The expected loss at 120 spins is 6.5 credits; the realised loss was 50. No run "learned" anything about winning because there is nothing to learn.
  • What would change this. A reward that lasts longer or hits harder than 200 ms at ≤ 40 mV, a readout closer to the mushroom body output, or many more spins. Those are engineering choices, and any of them that produces a difference will be reported with the same three columns.

Test: tests/test_loop.py (7), plus the full suite: 21 passed on the Mac.