The scope-aware sans-transport core: drain the http request body from
inbound (accumulating HttpRequest chunks until more_body is false) and
hand app the full @spec.HttpScope alongside the assembled body, returning the
outbound events app emits. This is the seam a framework binds to — a
framework reads what the ergonomic Request drops: root_path (for mounted
sub-apps), extensions (to gate a feature on what the server advertises),
client/server peers, the asgi handshake, and state (the map a
lifespan startup seeds and the server copies onto every request scope). It is
the synchronous analog of the ASGI (scope, receive, send) callable for the
common drain-then-handle shape; run_http_app is the Request-level wrapper
over it. Non-http scopes yield [].