The module graph is the product
Every rule of the game — gravity, collision, stomping, enemy AI, the level generator — lives in pure Kotlin with no Compose and no platform code, as functions of the form (state, input) → state. That is why 395 tests run in under a second, and why the browser build was cheap: the game side of the graph reaches nothing platform-specific, so Firebase, billing and ads simply cannot follow it into a tab.
“Retune a reducer and the demo above inherits it — the web cannot drift from the game.”
Levels are generated from authored templates, so all 600 of them are shaped by hand and laid out by seed — always fair, never the same twice. The renderer is 100% Compose Canvas: one declarative tree that draws to a phone surface and a browser canvas without a single branch.




