Contributor Guide¶
This section is for changing Kanama itself: runtime code, generated wrappers, Android support, demos, documentation, and release-facing validation.
Start with the root CONTRIBUTING.md, then read the page that matches the area
you are changing:
- Architecture before touching bootstrap, FFI, script lifetime, ClassDB registration, or hot reload.
- Wrapper Maintenance before changing generated wrappers, generator policy, ABI helpers, or generated KDoc.
- Godot Upgrade Runbook before bumping the Godot engine baseline.
- API Coverage and Wrapper Generator Report before promoting wrapper coverage or changing generator skip policy.
- Hot Reload Internals before changing script reload behavior or reload smoke checks.
- Demo Porting Rules before changing demo ports or gameplay parity checks.
- Android Internals before changing Android runtime or export support.
- Web Internals before changing the in-development Kotlin/Wasm Web backend, its generated proxy, or the versioned JS bridge.
Landing a change that removes a limitation is its own kind of change: the
comments asserting that limitation are now false and nothing else will notice.
Grep for them, and see "Documented Limitations" in the root CONTRIBUTING.md
for the KANAMA-BLOCKED marker that makes the machine-checkable ones fail the
build the day they go stale.
Use the narrowest useful check while iterating, then run the broader local gate before release-facing changes:
mkdocs build --strict
python3 scripts/check_wrapper_generator.py
./gradlew jar
./scripts/local_ci.sh /path/to/godot-4.7-stable
For release-facing changes, prefer the fresh-clone gate so the result does not depend on your active development checkout or old local build state:
./scripts/fresh_clone_smoke.sh /path/to/godot-4.7-stable