2026-08-02 — Fire test: KMPNativeBase rendered by the engine¶
The roadmap's "prueba de fuego": migrate a real template (Sebas1705/KMPNativeBase, 113 files, KMP Android+Desktop+iOS with convention plugins) and render it with the released CLI.
Results¶
- First render: paths, packages and
rootProject.namerenamed correctly; 13 files kept old identity. Three causes: - The convention-plugin namespace uses the bare token
kmpbase(kmpbase.kmp.library,kmpbase.detekt) — a third identity the manifest had to declare. Template fix:kmpbase → {project_name.flat}(longest-first ordering makes the bare token safe). - Desktop storage dirs (
.kmpbase/,kmpbase_secure) — same token, same fix. - Engine bug found: the slash variant of dotted identities only applied to paths, not content — docs citing
dev/template/kmpbasepaths kept the old identity. Fixed in planner (slash variant now applies to both), spec updated, regression test added. - Second render: zero leftovers across all 114 output files. Plugin IDs, storage dirs and doc paths all renamed.
Takeaways¶
- The "template compiles + canonical identity" model works on a real, non-trivial multi-module Gradle project.
- Writing a template's manifest is mostly identity archaeology: finding every form the canonical identity takes (dotted, bare token, slash form, storage dirs). The dry-run + leftover-grep loop finds them fast.
- KMPNativeBase's
template.yml(3 identity entries, 2 variables) lives in the local migration workspace, ready to be committed to the template repo.