The host integration release, a full audit of the embedding
contract answered:
- The engine opens no threads: parallelism rides the host's task
executor (the same enqueue/finish contract as Box2D v3 and
Maul3D), and the Threads::Threads dependency is gone. - The host owns diagnostics: a contextful assert handler sees
every internal failure first, and the CPU-backend guard that
was the one release-abort now refuses with a null id. - Refusals carry typed reasons (m2Result / m2LastResult).
- Worlds weigh themselves (m2World_MemoryBytes).
- The threading contract is written into the header and raced in
CI: distinct worlds on distinct threads, bit-identical to
serial. - The API census counts itself: 277 frozen 1.x functions,
regenerated and asserted by CI.
Worker-count invariance, the golden hash, and every determinism
gate held to the bit throughout.