Crate Dependency Order

mid-math        (no engine deps — pure math foundation)
mid-ptr         (no engine deps — type-erased pointer wrappers)
mid-platform    (no engine deps — Mutex/Arc/atomics/cells)
mid-collections (no engine deps — SparseSet, generational index, FFI span)
mid-arena       (no engine deps — bump/slot/compact arenas)
mid-alloc       (no engine deps — custom allocators, SpinLock)
mid-common      (uses mid-math — shared traits and error types)
mid-log         (uses mid-common)
mid-trace       (uses mid-common)
mid-geom        (uses mid-math — geometric algorithms)
mid-ecs         (uses mid-math, mid-common, mid-collections)
mid-net         (uses mid-math, mid-common)
mid-physics     (uses mid-math, mid-geom)
mid-anim        (uses mid-math, mid-ecs)

The crates with no engine-internal dependency at all (mid-math, mid-ptr, mid-platform, mid-collections, mid-arena, mid-alloc) are the ones safest to work on in parallel — nothing else in the workspace has to land first for one of them to be usable, and nothing about them can be blocked by another crate's own unfinished state.

See each crate's own page for what it actually depends on today versus this list's target shape — a couple of these (mid-physics, mid-anim, mid-app, mid-time) currently exist as early v0 stubs rather than finished crates.