There is a good reason for why Werkzeug (which Flask is based on) is 15000 lines of code.
Repeating his "I had to make X big to support all of wsgi/http so anyone who made a similar framework but much smaller has made it incomplete or too succint and clever in a bad way" is not evidence.
You say:
>bottle's smaller size means either the implementation is incomplete or the implementation is too clever or both.
That's a statement of fact (actually a dichotomy of facts). What's the evidence to support these are the only two possible options?
The mere fact that Armin had to make Werkzeug bigger "owing to complexities of wsgi/http" is not proof.
To take it as proof is to assume his coding (and understanding of wsgi/http) as the golden standard by which the Bottle developer should be measured.
Who said this is the case? For one, it took him a year after Bottle to support Python 3, so he might not be that focused, anyway.
My problem is that, the way he and you say it, "incomplete" implies broken or lacking, whereas "too clever" implies fancy tricky code that's too succinct for it's own good.
How about the third option that he needlessly convoluted Werkzeug to work around wsgi/http edge cases that no one really faces, whereas Bottle has been pragmatic about it?
Or the fourth option, that Werkzeug is needlessly verbose, whereas Bottle is not "too clever" but just as clever as needed?
I've tried both frameworks, and looked at the code for both, and I'm of the opposite opinion.
Yours is not a very suggestion. It presupposes what is asked to provide evidence for. That's called a circular argument.