"One writer, many readers — and the writer is the engine."
Producer and Consumers
Track 3 said there's one model. This track says where it lives and who's allowed to touch it. The answer: the engine produces and owns the music model. Everyone else — the UI, the Sidekick, any future bridge — is a consumer that receives the model through the API. The engine writes; clients read. That single ownership line is what makes the model trustworthy: there's exactly one place it can be created or changed.
What the API Surface Looks Like
Concretely, the boundary is a small set of endpoints. You hand the engine audio and it does the analysis (owning the resulting model); you ask for a track and it hands you the model; you ask for an easy-mode version and it computes and returns a new model. Nothing on the client side ever reaches past these endpoints into the engine's guts.
Ember's Pattern, Transplanted
This isn't a new invention for Bonfire — it's lifted directly from Ember. Ember owns image generation and exposes an API that Cinder consumes; Cinder never imports Ember's sampling internals. Bonfire owns music analysis and exposes an API that its UI consumes; the UI never imports the engine's analysis internals. Same shape, different medium. The reason it's worth copying: an engine with a clean API boundary can feed consumers it hasn't even met yet (Rule 2 — cost absorbed downstream, not pushed up).