The runtime crate. Holds the world loop, the ECS, the GraphicsSystem renderer
driver, audio, and physics. The GPU-free render-prep lives in
concinnity_core::render and the hardware backends (Metal/DirectX/Vulkan/
Win32) in concinnity-device; this crate drives them through a
Box<dyn RenderBackend> from concinnity_device::init_backend and never
names a concrete backend. Depends on concinnity-core and concinnity-device
(no concinnity-cook, no image decoders). The editor crate (concinnity-dev)
drives this crate's App / renderer through the public API widened here; the
modules the editor reaches
into are pub so it can name their paths, but individual internals stay
pub(crate) unless the editor specifically needs them.