--- id: "59" title: "init_kotlin_app genera gradlew stub no funcional" status: completado type: feature domain: [] scope: app-scoped priority: alta depends: [] blocks: [] related: [] created: 2026-05-10 updated: 2026-05-17 tags: [] --- ## Sintoma Al scaffoldear app Kotlin con `fn run init_kotlin_app `, el `gradlew` generado es un stub que delega a `gradle/wrapper/gradlew` (no existe) y luego a `gradle` system (no instalado). Resultado: silenciosamente falla. ## Reproducir ```bash ./fn run init_kotlin_app foo_app cd apps/foo_app ./gradlew :app:assembleDebug # (no output, exit silente) ``` ## Causa `bash/functions/pipelines/init_kotlin_app.sh` linea ~XXX genera placeholder gradlew. No descarga `gradle-wrapper.jar` real ni invoca `gradle wrapper --gradle-version 8.6`. ## Workaround actual Copiar wrapper de otra app: ```bash cp apps/voice_guide/frontend/android/gradle/wrapper/gradle-wrapper.jar /gradle/wrapper/ cp apps/voice_guide/frontend/android/gradlew /gradlew chmod +x /gradlew ``` ## Fix propuesto Una de: - Descargar `gradle-wrapper.jar` desde `https://raw.githubusercontent.com/gradle/gradle/v8.6.0/gradle/wrapper/gradle-wrapper.jar` (~60KB) durante scaffold + escribir `gradlew` real (no stub). - Vendor del wrapper jar en `bash/functions/pipelines/templates/kotlin/gradle-wrapper.jar` y copiar al scaffold. - Detectar gradle system, invocar `gradle wrapper --gradle-version 8.6` post-mkdir. Recomendado: vendor (option B) — sin dependencia de red en cada scaffold. ## Validacion Tras fix, `./fn run init_kotlin_app smoke && cd apps/smoke && ./gradlew --version` debe imprimir Gradle 8.6 sin errores.