I'm not sure where that particular request is coming from, to be sure, but HTTP/3 requests don't work like that.
https://www.rfc-editor.org/rfc/rfc9114.html#section-4.1-1 specifically https://www.rfc-editor.org/rfc/rfc9114.html#section-4.1-3
Also, I'm writing a HTTP server at the moment, so I'm pretty familiar with the protocols. (Not claiming to be an expert, but the reason I responded is that I've put A LOT of effort into understanding the protocols at a low level that last month or so, and I wanted to help if I could.)
I would go into this assuming that either there is something else on the page with that path, or an errant javascript request, or something else is mangling the message before it gets to you.
HTTP/2 and HTTP/3 both allow you to do a server push (where the server tells the client that it wants to send multiple files to it), and that might be what gunicorn is doing (I'm not familiar with it).
But, again, HTTP/3 does not chain together requests as a single path in the way that you described.
As for why it switched from 2 to 3, perhaps it was the fact that you were attempting to send multiple files that prompted the connection upgrade? Maybe it's the presence of a https connection (HTTP/3 requires TLS, but HTTP/2 does not).