Keep track-core focused on portable track state, scheme runtime, PID runtime, memory strip, and render planning.
Remove the ESP-IDF/nanopb Track adapter headers and sources from the submodule so app/protobuf ownership can live in a separate firmware component.
The standalone CMake and Python binding surface remains unchanged, including the emulator-facing APIs.
Move scheme and PID training runtime behavior into the pure track_core layer and expose render sinks for injected strip application.
Add ESP compatibility adapters, Python bindings/test scaffolding, and in-memory render support so app_track_bt can consume core render and runtime logic without duplicating it.
Cover circular/linear rendering boundaries, all scheme runtime types, scheme render_to parity, PID sample de-duplication, speed suppression, and live tuning in track-core tests.