Every call to POST /api/render and every item in POST /api/render/batch writes exactly one RenderLog row, whether it succeeded or failed. The row captures the tenantId, a source and category label, how long the render took (durationMs), the output sizeBytes, the engine used, a success flag, an optional error message, and the requestId of the originating call. This gives operators a per-tenant history of render volume, latency, failure rate, and output size without inspecting the documents themselves.
A RenderLog is written even when no document is stored — default stream-mode renders still log. On failure the row records durationMs: 0 and sizeBytes: 0 with success: false and the error string.
