it is quite messy and I am often lost in it. I don't know if you've ever looked at the makeinfo source code, but believe me, it is worse than what you are describing. (I have never really looked at texi2html, despite maintaining it briefly. :)
makeinfo does not do multiple passes at all. It started life as simply converting to Info format, which is basically plain text. For that narrow purpose, it was fine, but it grew (badly) from there, even though HTML/XML/Docbook output is very different from plain text. It has all the same kinds of special cases you are describing, and more. So I'm not worried about texi2html being harder to maintain or structurally worse than makeinfo :). I'll try to write something to rms soon, to gain direction. Thanks, Karl
