I did have most of these things in mind - alas, time proved to be a real issue (I had only scheduled a couple of hours for creating an interface, and didn't realise I'd given myself too much stuff to wrap my head around - animating the robot is what really ended out killing this project - I did not realise that I could not just launch a background animation thread naturally in JavaScript*. Unfortunately, the technical limitations on implementing the animation are what ate up my time and caused the compile, run and play to be separate functions - I'll be looking into libraries to abstract further away and make coding easier for future Ludum Dares).
The fact you can just put the entire solution into one state's otherwise clause is something I, somewhat embarrassingly, didn't anticipate at all when I was writing it. I finished bang on the deadline, and then on the first play tests went through the most epic facepalm moment ever XD! Unfortunately, even the brevity of code aspect isn't a good heuristic for determining what is a good solution, as the syntax is so cumbersome that just writing out a full solution is often the briefest solution.
The time barrier also made the level generation bad, too. I had an algorithm in mind to generate levels (i.e. generate random robots, and put them at the same place on a random grid, then analyse their paths and and put potatoes at extreme points of the best path there was - removing random squares that were never visited). This would have been easy to code if I had had an hour, but level generation is something I literally had to touch type straight in, try out, and then hope it worked (as I had about five minutes). Instead, I opted to just discard all puzzles for which no one gave a solution and hope that the "old games" list would eventually have some decent puzzles in it. Altogether, this didn't turn out as badly as I had anticipated :-).
Anyway, thanks a lot for playing the game and commenting :-). I hope you got something out of it XD. It's certainly taught me a good amount that I will be trying to use in my next LD ^_^.
*I actually used Brython, but it has the same limitations.