7b4cff1874
#196 built SubtitleAction with an empty backend list, correctly: no translation backend existed when it was written. #216 then built translation_backends() and wired it into AppState, so the API can translate. Merged, the reconcile loop still got Vec::new() and its translate step reported "no engine" in every real deployment. Neither branch was wrong alone; the gap only exists once both are in.