Headless custom app fails bench build on Frappe Cloud v15 - TypeError paths[0] undefined

I have a headless backend-only Frappe v15 custom app with no frontend assets. Deploying on Frappe Cloud fails with:

TypeError: paths[0] must be of type string. Received undefined at get_all_files_to_build (esbuild.js:192)

What is the minimum required file structure to pass bench build? No public folder, no JS, pure Python API app.