Expand description
Composite engine that delegates per (kind, model).
The worker no longer has an engine knob in its config: instead,
engine::build() returns a MultiEngine populated with every
backend compiled into the binary (synthetic always; llama /
whisper / image-candle / video / tts when their cargo features
are on).
For each incoming job MultiEngine picks the first engine in
the list that advertises support for the requested model. If no
engine claims the exact model it falls back to the first engine
that handles the task kind at all. Real backends are inserted
ahead of synthetic so they win when both could serve the same
(kind, model). If nothing matches the dispatch fails with the
“cannot serve