Brain episodes on pymunk-reference, superdex-reference

Rendering matches the published pygame frame (white canvas, LightSlateGray T with its two-box seam, RoyalBlue pusher, LightGreen goal, red cross = the commanded target). 40 episodes from runs/episodes.sqlite; planner rule; executor at the measured human mouse-stream speeds; 200 steps at 10 Hz. Captions are the stored narratives (docs/episode_store.md).

The same brain on SuperDex contact

superdex-reference is the published Push-T task - same T, goal, seeded start, 100 Hz pixel PD law on a kinematic pusher - running on SuperDex physics: a real table with Coulomb friction (0.5) under the block, a penalty contact with friction (0.5) between pusher and block, and the block's geometric inertia, where the published environment has no friction anywhere and a velocity wipe for support. Same 10 seeds and the same rule planner as the pymunk-reference sections below; each episode is paired with the latest 200-step pymunk-reference episode on its seed.

Engine comparison. Same seeds, same planner, on pymunk-reference versus on superdex-reference.

seedsituationboutspeak px/sangle errorposition errorcoveragecov ≥ .95 atSOLVED at
577aligned, faron pymunk-reference31143° → 1°173 → 3 px0.923––
on superdex-reference31143° → 2°173 → 40 px0.377––
428aligned, moderateon pymunk-reference31122° → 2°59 → 1 px0.9546670
on superdex-reference41142° → 1°59 → 2 px0.957127131
412inverted, nearon pymunk-reference5114167° → 75°32 → 9 px0.298––
on superdex-reference5113167° → 31°32 → 15 px0.469––
422mixed, faron pymunk-reference511475° → 1°103 → 2 px0.961192195
on superdex-reference611475° → 4°103 → 1 px0.913––
438mixed, moderateon pymunk-reference611441° → 4°82 → 0 px0.926––
on superdex-reference411441° → 3°82 → 30 px0.338––
402flipped, far, near a wallon pymunk-reference2114138° → 130°142 → 136 px0.000––
on superdex-reference2114138° → 128°142 → 142 px0.000––
430flipped, moderateon pymunk-reference4114126° → 18°97 → 18 px0.511––
on superdex-reference4114126° → 13°97 → 33 px0.254––
429mixed, faron pymunk-reference311424° → 2°186 → 3 px0.933––
on superdex-reference311424° → 2°186 → 9 px0.812––
425inverted, far, near a wallon pymunk-reference11111170° → 150°150 → 147 px0.000––
on superdex-reference11111170° → 142°150 → 153 px0.000––
787already nearly solvedon pymunk-reference411419° → 5°18 → 1 px0.901––
on superdex-reference211419° → 1°18 → 1 px0.9777175

2 of 10 solve outright (428, 787) on superdex-reference, against 2 of 10 on pymunk-reference. Final coverage is higher than on pymunk-reference on 3, unchanged on 2 (402, 425), lower on 5 (577, 422, 438, 430, 429).

577 · aligned, far. plans: translate → translate → translate → translate. 173 → 40 px, 3° → 2° in 3 bouts; coverage 0.377 when the horizon runs out at step 200. Plan 3 (translate) overshot: 13 → 40 px.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 3 bouts, 3° → 1°, 173 → 3 px, coverage 0.923, not solved. On superdex-reference: 3 bouts, 3° → 2°, 173 → 40 px, coverage 0.377, not solved. Position error +37 px, angle +1°, coverage -0.546; still short of 0.95. cebc8fc04320
428 · aligned, moderate. plans: translate → finish → finish. SOLVED at step 131: coverage crossed 0.95 at 127 and the pusher was 10 px clear 4 steps later; 59 → 2 px, 2° → 1°, coverage 0.957 in 4 bouts.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 3 bouts, 2° → 2°, 59 → 1 px, coverage 0.954, SOLVED at step 70. On superdex-reference: 4 bouts, 2° → 1°, 59 → 2 px, coverage 0.957, SOLVED at step 131. Solved both times, at step 70 on pymunk-reference and 131 on superdex-reference. 29664a029923
412 · inverted, near. plans: rotate → rotate → rotate → rotate → rotate → rotate. 32 → 15 px, 167° → 31° in 5 bouts; coverage 0.469 when the horizon runs out at step 200. Plan 4 (rotate) overshot: 10 → 35 px.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 5 bouts, 167° → 75°, 32 → 9 px, coverage 0.298, not solved. On superdex-reference: 5 bouts, 167° → 31°, 32 → 15 px, coverage 0.469, not solved. Position error +6 px, angle -44°, coverage +0.171; still short of 0.95. 028374b78684
422 · mixed, far. plans: translate → translate → translate → rotate → finish → finish. 2 finish plans in a row bring the position error to 1 px, but the angle sits at 4° and coverage stalls at 0.913: 0.95 needs ~2°.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 5 bouts, 75° → 1°, 103 → 2 px, coverage 0.961, SOLVED at step 195. On superdex-reference: 6 bouts, 75° → 4°, 103 → 1 px, coverage 0.913, not solved. Position error -1 px, angle +4°, coverage -0.048; still short of 0.95. c2649d382026
438 · mixed, moderate. plans: translate → rotate → translate → rotate → translate. 82 → 30 px, 41° → 3° in 4 bouts; coverage 0.338 when the horizon runs out at step 200. Plan 2 (rotate) overshot: 2 → 32 px.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 6 bouts, 41° → 4°, 82 → 0 px, coverage 0.926, not solved. On superdex-reference: 4 bouts, 41° → 3°, 82 → 30 px, coverage 0.338, not solved. Position error +30 px, angle -1°, coverage -0.589; still short of 0.95. 61303b3d0047
402 · flipped, far, near a wall. plans: rotate → translate → translate. Little progress per bout: 2 bouts take 138° → 128° and 142 → 142 px (5.0° and 0.2 px per bout against the human's 5.5° and 20 px). The block starts 102 px from a wall (under 115): the likely cause is an edge that faces the wall.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 2 bouts, 138° → 130°, 142 → 136 px, coverage 0.000, not solved. On superdex-reference: 2 bouts, 138° → 128°, 142 → 142 px, coverage 0.000, not solved. Position error +5 px, angle -2°, coverage 0.000; still short of 0.95. bbf5baa7391a
430 · flipped, moderate. plans: rotate → rotate → rotate → translate. 97 → 33 px, 126° → 13° in 4 bouts; coverage 0.254 when the horizon runs out at step 200. Plan 3 (rotate) overshot: 10 → 36 px.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 4 bouts, 126° → 18°, 97 → 18 px, coverage 0.511, not solved. On superdex-reference: 4 bouts, 126° → 13°, 97 → 33 px, coverage 0.254, not solved. Position error +16 px, angle -6°, coverage -0.257; still short of 0.95. 23eb26bb7a5c
429 · mixed, far. plans: translate → translate → translate → finish. 186 → 9 px, 24° → 2° in 3 bouts; coverage 0.812 when the horizon runs out at step 200.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 3 bouts, 24° → 2°, 186 → 3 px, coverage 0.933, not solved. On superdex-reference: 3 bouts, 24° → 2°, 186 → 9 px, coverage 0.812, not solved. Position error +6 px, angle +1°, coverage -0.121; still short of 0.95. 3df7d0dcc197
425 · inverted, far, near a wall. plans: rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → translate → translate. Little progress per bout: 11 bouts take 170° → 142° and 150 → 153 px (2.5° and -0.3 px per bout against the human's 5.5° and 20 px). The block starts 99 px from a wall (under 115): the likely cause is an edge that faces the wall.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 11 bouts, 170° → 150°, 150 → 147 px, coverage 0.000, not solved. On superdex-reference: 11 bouts, 170° → 142°, 150 → 153 px, coverage 0.000, not solved. Position error +6 px, angle -7°, coverage 0.000; still short of 0.95. 3133015a89ee
787 · already nearly solved. plans: rotate → rotate. SOLVED at step 75: coverage crossed 0.95 at 71 and the pusher was 10 px clear 4 steps later; 18 → 1 px, 19° → 1°, coverage 0.977 in 2 bouts. The last plan was a rotate, not a finish: it solved on precision alone.On pymunk-reference (brain_pymunk_ref, 2026-09-25): 4 bouts, 19° → 5°, 18 → 1 px, coverage 0.901, not solved. On superdex-reference: 2 bouts, 19° → 1°, 18 → 1 px, coverage 0.977, SOLVED at step 75. Now SOLVED at step 75; on pymunk-reference it was not. 498400a72fc1

The pymunk-reference baseline for the engine comparison

The same 10 seeds re-run on pymunk-reference with the code that produced the brain_superdex_ref episodes, so the engine comparison pairs like with like; the before/after rows are against each seed's earlier pymunk-reference episode.

seedsituationboutspeak px/sangle errorposition errorcoveragecov ≥ .95 atSOLVED at
577aligned, farbefore31143° → 1°173 → 38 px0.360––
after31143° → 1°173 → 3 px0.923––
428aligned, moderatebefore31122° → 2°59 → 1 px0.9546670
after31122° → 2°59 → 1 px0.9546670
412inverted, nearbefore5114167° → 75°32 → 9 px0.298––
after5114167° → 75°32 → 9 px0.298––
422mixed, farbefore511475° → 1°103 → 2 px0.961192195
after511475° → 1°103 → 2 px0.961192195
438mixed, moderatebefore611441° → 4°82 → 0 px0.926––
after611441° → 4°82 → 0 px0.926––
402flipped, far, near a wallbefore2114138° → 130°142 → 136 px0.000––
after2114138° → 130°142 → 136 px0.000––
430flipped, moderatebefore4114126° → 18°97 → 18 px0.511––
after4114126° → 18°97 → 18 px0.511––
429mixed, farbefore311424° → 0°186 → 35 px0.391––
after311424° → 2°186 → 3 px0.933––
425inverted, far, near a wallbefore11111170° → 150°150 → 147 px0.000––
after11111170° → 150°150 → 147 px0.000––
787already nearly solvedbefore411419° → 5°18 → 1 px0.901––
after411419° → 5°18 → 1 px0.901––

2 of 10 solve outright (428, 422). Final coverage is higher than before on 2, unchanged on 8 (428, 412, 422, 438, 402, 430, 425, 787), lower on 0.

577 · aligned, far. plans: translate → translate → finish → finish. 173 → 3 px, 3° → 1° in 3 bouts; coverage 0.923 when the horizon runs out at step 200.Before (brain_rule, 2026-09-25): 3 bouts, 3° → 1°, 173 → 38 px, coverage 0.360, not solved. After: 3 bouts, 3° → 1°, 173 → 3 px, coverage 0.923, not solved. Position error -36 px, angle 0°, coverage +0.563; still short of 0.95. 51443cb0cae8
428 · aligned, moderate. plans: translate → finish. SOLVED at step 70: coverage crossed 0.95 at 66 and the pusher was 10 px clear 4 steps later; 59 → 1 px, 2° → 2°, coverage 0.954 in 3 bouts.Before (brain_finish, 2026-09-25): 3 bouts, 2° → 2°, 59 → 1 px, coverage 0.954, SOLVED at step 70. After: 3 bouts, 2° → 2°, 59 → 1 px, coverage 0.954, SOLVED at step 70. Identical to before, to the pixel. 560477a27c1d
412 · inverted, near. plans: rotate → rotate → rotate → rotate → rotate → rotate. 32 → 9 px, 167° → 75° in 5 bouts; coverage 0.298 when the horizon runs out at step 200. Plan 3 (rotate) overshot: 11 → 38 px.Before (brain_rule, 2026-09-25): 5 bouts, 167° → 75°, 32 → 9 px, coverage 0.298, not solved. After: 5 bouts, 167° → 75°, 32 → 9 px, coverage 0.298, not solved. Identical to before, to the pixel. 80212882aa18
422 · mixed, far. plans: translate → translate → rotate → translate. SOLVED at step 195: coverage crossed 0.95 at 192 and the pusher was 10 px clear 3 steps later; 103 → 2 px, 75° → 1°, coverage 0.961 in 5 bouts. The last plan was a translate, not a finish: it solved on precision alone.Before (brain_finish, 2026-09-25): 5 bouts, 75° → 1°, 103 → 2 px, coverage 0.961, SOLVED at step 195. After: 5 bouts, 75° → 1°, 103 → 2 px, coverage 0.961, SOLVED at step 195. Identical to before, to the pixel. 7dfd49ee5908
438 · mixed, moderate. plans: translate → translate → finish → finish → finish → finish → finish. 5 finish plans in a row bring the position error to 0 px, but the angle sits at 4° and coverage stalls at 0.926: 0.95 needs ~2°.Before (brain_finish, 2026-09-25): 6 bouts, 41° → 4°, 82 → 0 px, coverage 0.926, not solved. After: 6 bouts, 41° → 4°, 82 → 0 px, coverage 0.926, not solved. Identical to before, to the pixel. 58e4492de34f
402 · flipped, far, near a wall. plans: rotate → rotate → translate. Little progress per bout: 2 bouts take 138° → 130° and 142 → 136 px (4.2° and 2.8 px per bout against the human's 5.5° and 20 px). The block starts 102 px from a wall (under 115): the likely cause is an edge that faces the wall.Before (brain_rule, 2026-09-25): 2 bouts, 138° → 130°, 142 → 136 px, coverage 0.000, not solved. After: 2 bouts, 138° → 130°, 142 → 136 px, coverage 0.000, not solved. Identical to before, to the pixel. 680c2112f194
430 · flipped, moderate. plans: rotate → rotate → rotate → rotate → rotate. 97 → 18 px, 126° → 18° in 4 bouts; coverage 0.511 when the horizon runs out at step 200. Plan 3 (rotate) overshot: 11 → 37 px.Before (brain_finish, 2026-09-25): 4 bouts, 126° → 18°, 97 → 18 px, coverage 0.511, not solved. After: 4 bouts, 126° → 18°, 97 → 18 px, coverage 0.511, not solved. Identical to before, to the pixel. 12c27103b7b1
429 · mixed, far. plans: translate → translate → finish → finish. 186 → 3 px, 24° → 2° in 3 bouts; coverage 0.933 when the horizon runs out at step 200.Before (brain_rule, 2026-09-25): 3 bouts, 24° → 0°, 186 → 35 px, coverage 0.391, not solved. After: 3 bouts, 24° → 2°, 186 → 3 px, coverage 0.933, not solved. Position error -32 px, angle +2°, coverage +0.542; still short of 0.95. 4fb86590d35b
425 · inverted, far, near a wall. plans: rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate → rotate. Little progress per bout: 11 bouts take 170° → 150° and 150 → 147 px (1.9° and 0.3 px per bout against the human's 5.5° and 20 px). The block starts 99 px from a wall (under 115): the likely cause is an edge that faces the wall.Before (brain_rule, 2026-09-25): 11 bouts, 170° → 150°, 150 → 147 px, coverage 0.000, not solved. After: 11 bouts, 170° → 150°, 150 → 147 px, coverage 0.000, not solved. Identical to before, to the pixel. 34c8ff2f8a26
787 · already nearly solved. plans: rotate → rotate → translate → finish → finish. 2 finish plans in a row bring the position error to 1 px, but the angle sits at 5° and coverage stalls at 0.901: 0.95 needs ~2°. Plan 2 (rotate) overshot: 2 → 31 px.Before (brain_finish, 2026-09-25): 4 bouts, 19° → 5°, 18 → 1 px, coverage 0.901, not solved. After: 4 bouts, 19° → 5°, 18 → 1 px, coverage 0.901, not solved. Identical to before, to the pixel. 86d061bfe80f

With a success criterion and a finishing behaviour

Solved = block coverage ≥ 0.95 and the pusher backed off ≥ 10 px from the T. The brain is told that finish line and the precision it needs (~6 px, ~2°, from the human final bouts); plans carry an intent (rotate / translate / finish); finish pushes through the CoG with a step scaled to the remaining error; and once coverage crosses 0.95 the pusher backs straight out along the outward normal to the 37 px standoff instead of idling in contact. Same 5 seeds, before and after.

seedsituationboutspeak px/sangle errorposition errorcoveragecov ≥ .95 atSOLVED at
422mixed, farbefore511475° → 1°103 → 3 px0.944192–
after511475° → 1°103 → 2 px0.961192195
438mixed, moderatebefore411341° → 4°82 → 2 px0.909––
after611441° → 4°82 → 0 px0.926––
787already nearly solvedbefore411419° → 3°18 → 31 px0.411––
after411419° → 5°18 → 1 px0.901––
430flipped, moderatebefore4114126° → 18°97 → 18 px0.511––
after4114126° → 18°97 → 18 px0.511––
428aligned, moderatebefore51122° → 4°59 → 28 px0.44766–
after31122° → 2°59 → 1 px0.9546670

2 of 5 solve outright (422, 428), none of which did before. Final coverage is higher than before on 4, unchanged on 1 (430), lower on 0.

422 · mixed, far. plans: translate → translate → rotate → translate. SOLVED at step 195: coverage crossed 0.95 at 192 and the pusher was 10 px clear 3 steps later; 103 → 2 px, 75° → 1°, coverage 0.961 in 5 bouts. The last plan was a translate, not a finish: it solved on precision alone.Before (brain_rule, 2026-09-25): 5 bouts, 75° → 1°, 103 → 3 px, coverage 0.944, coverage crossed 0.95 at step 192 but not solved. After: 5 bouts, 75° → 1°, 103 → 2 px, coverage 0.961, SOLVED at step 195. Now SOLVED at step 195; before it was not. a8d6e4ad885c
438 · mixed, moderate. plans: translate → translate → finish → finish → finish → finish → finish. 5 finish plans in a row bring the position error to 0 px, but the angle sits at 4° and coverage stalls at 0.926: 0.95 needs ~2°.Before (brain_rule, 2026-09-25): 4 bouts, 41° → 4°, 82 → 2 px, coverage 0.909, not solved. After: 6 bouts, 41° → 4°, 82 → 0 px, coverage 0.926, not solved. Position error -1 px, angle 0°, coverage +0.018; still short of 0.95. 9a5daa8adf08
787 · already nearly solved. plans: rotate → rotate → translate → finish → finish. 2 finish plans in a row bring the position error to 1 px, but the angle sits at 5° and coverage stalls at 0.901: 0.95 needs ~2°. Plan 2 (rotate) overshot: 2 → 31 px.Before (brain_rule, 2026-09-25): 4 bouts, 19° → 3°, 18 → 31 px, coverage 0.411, not solved. After: 4 bouts, 19° → 5°, 18 → 1 px, coverage 0.901, not solved. The overshoot is gone: 18 → 31 px before, 18 → 1 px after. c4413d2d92f7
430 · flipped, moderate. plans: rotate → rotate → rotate → rotate → rotate. 97 → 18 px, 126° → 18° in 4 bouts; coverage 0.511 when the horizon runs out at step 200. Plan 3 (rotate) overshot: 11 → 37 px.Before (brain_rule, 2026-09-25): 4 bouts, 126° → 18°, 97 → 18 px, coverage 0.511, not solved. After: 4 bouts, 126° → 18°, 97 → 18 px, coverage 0.511, not solved. Identical to before, to the pixel. 43db96745302
428 · aligned, moderate. plans: translate → finish. SOLVED at step 70: coverage crossed 0.95 at 66 and the pusher was 10 px clear 4 steps later; 59 → 1 px, 2° → 2°, coverage 0.954 in 3 bouts.Before (brain_rule, 2026-09-25): 5 bouts, 2° → 4°, 59 → 28 px, coverage 0.447, coverage crossed 0.95 at step 66 but not solved. After: 3 bouts, 2° → 2°, 59 → 1 px, coverage 0.954, SOLVED at step 70. Now SOLVED at step 70; before it was not. 69a6d69527c3

15 episodes across the situation space

seedsituationboutspeak px/sangle errorposition errorcoverage
577aligned, far31143° → 1°173 → 38 px0.360
428aligned, moderate51122° → 4°59 → 28 px0.447
412inverted, near5114167° → 75°32 → 9 px0.298
422mixed, far511475° → 1°103 → 3 px0.944
438mixed, moderate411341° → 4°82 → 2 px0.909
402flipped, far, near a wall2114138° → 130°142 → 136 px0.000
430flipped, moderate4114126° → 18°97 → 18 px0.511
429mixed, far311424° → 0°186 → 35 px0.391
425inverted, far, near a wall11111170° → 150°150 → 147 px0.000
787already nearly solved411419° → 3°18 → 31 px0.411
783958inverted, moderate5113163° → 47°53 → 31 px0.372
204aligned, far41142° → 4°175 → 9 px0.778
234flipped, near4114124° → 27°33 → 38 px0.279
205mixed, moderate411471° → 2°83 → 10 px0.792
194flipped, far, near a wall2114130° → 127°129 → 127 px0.000

Mean coverage 0.433; 5 of 15 above 0.5; 2 of 15 reach the 0.95 coverage line and 0 of 15 are solved in 200 steps. Peak pusher speed 111–114 px/s.

577 · aligned, far. plans: bar_top → stem_L → bar_top → stem_tip. 173 → 38 px, 3° → 1° in 3 bouts; coverage 0.360 when the horizon runs out at step 200. Plan 3 (bar_top) overshot: 11 → 38 px. 814a2c60c749
428 · aligned, moderate. plans: stem_tip → stem_L → stem_R → stem_L → stem_R. Coverage crossed 0.95 at step 66 but no step had the pusher 10 px clear while it held, so it never counts as solved; final coverage 0.447 (max 0.955). Plan 2 (stem_L) overshot: 7 → 32 px. 68b3131bba3f
412 · inverted, near. plans: bar_bottom_L → bar_end_L → bar_bottom_L → bar_top → bar_end_L → bar_top. 32 → 9 px, 167° → 75° in 5 bouts; coverage 0.298 when the horizon runs out at step 200. Plan 3 (bar_bottom_L) overshot: 11 → 38 px. 6239891f7e28
422 · mixed, far. plans: bar_end_L → bar_bottom_L → bar_top → stem_tip → bar_top. Coverage crossed 0.95 at step 192 but no step had the pusher 10 px clear while it held, so it never counts as solved; final coverage 0.944 (max 0.969). Plan 3 (bar_top) overshot: 3 → 28 px. 4961a8065d99
438 · mixed, moderate. plans: bar_end_R → bar_top → stem_R → stem_L → stem_R. The plans bring the position error to 2 px, but the angle sits at 4° and coverage stalls at 0.909: 0.95 needs ~2°. Plan 3 (stem_R) overshot: 6 → 34 px. 93eadb4723e4
402 · flipped, far, near a wall. plans: bar_top → bar_top → bar_top. Little progress per bout: 2 bouts take 138° → 130° and 142 → 136 px (4.2° and 2.8 px per bout against the human's 5.5° and 20 px). The block starts 102 px from a wall (under 115): the likely cause is an edge that faces the wall. 2bb043199659
430 · flipped, moderate. plans: bar_end_R → bar_top → bar_end_R → stem_L → bar_top. 97 → 18 px, 126° → 18° in 4 bouts; coverage 0.511 when the horizon runs out at step 200. Plan 3 (bar_end_R) overshot: 11 → 37 px. ad2e48185dea
429 · mixed, far. plans: bar_top → bar_top → stem_L → stem_R. 186 → 35 px, 24° → 0° in 3 bouts; coverage 0.391 when the horizon runs out at step 200. Plan 3 (stem_L) overshot: 10 → 35 px. 47eeac3076c8
425 · inverted, far, near a wall. plans: bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R → bar_bottom_R. Little progress per bout: 11 bouts take 170° → 150° and 150 → 147 px (1.9° and 0.3 px per bout against the human's 5.5° and 20 px). The block starts 99 px from a wall (under 115): the likely cause is an edge that faces the wall. 0ce5e4d27b0b
787 · already nearly solved. plans: bar_end_L → stem_R → stem_L → stem_R. Overshoot: plan 2 (stem_R) took the position error from 2 to 31 px and the episode ends farther from the goal than it started, 18 → 31 px (19° → 3°). Coverage peaked at 0.905 before ending at 0.411. 9a0d643d4b92

Earlier episodes, rendered with the previous colour scheme

783958 · inverted, moderate. plans: bar_end_L → bar_bottom_L → bar_end_L → stem_R → bar_top. 53 → 31 px, 163° → 47° in 5 bouts; coverage 0.372 when the horizon runs out at step 200. Plan 3 (bar_end_L) overshot: 5 → 32 px. 7ed33cd31d33
204 · aligned, far. plans: stem_R → bar_top → stem_R → bar_top. 175 → 9 px, 2° → 4° in 4 bouts; coverage 0.778 when the horizon runs out at step 200. Coverage peaked at 0.893 before ending at 0.778. 3aaa1b8bbe92
234 · flipped, near. plans: bar_top → bar_end_L → stem_R → bar_top → bar_bottom_L. Overshoot: plan 2 (bar_end_L) took the position error from 6 to 31 px and the episode ends farther from the goal than it started, 33 → 38 px (124° → 27°). Coverage peaked at 0.463 before ending at 0.279. abc17ed663cb
205 · mixed, moderate. plans: stem_L → bar_top → stem_L → stem_R. 83 → 10 px, 71° → 2° in 4 bouts; coverage 0.792 when the horizon runs out at step 200. Plan 3 (stem_L) overshot: 8 → 34 px. 98165505e18e
194 · flipped, far, near a wall. plans: bar_top → bar_top → bar_top. No progress: 129 → 127 px, 130° → 127°, coverage 0.000 after 2 bouts. The block starts 103 px from a wall (under 115): the likely cause is an edge that faces the wall. d79c980d82e4