buildDocumentation
Renders the document now, unless it is rendered already. Call it at startup when the OpenAPI document is served: rendering generates the schemas, which may block (it infers query fields), so it must not run on a request thread. Later mergeOpenAPI calls only copy the rendered document and never block.