I came to the same conclusion: a massive flat text file in emacs. I was using orgmode for a bit, but it was too convoluted. I have a very simple markup to identify TODO items with [ ], and I nest contiguous items with { }, making it easy to navigate chunks with emacs. I then have 3 keyboard macros to mark/unmark and move the TODO items into a DONE section. It's simple enough I can recreate the system from scratch in a few minutes when I'm at a new terminal.