Internal v2 groundwork: the shared per-container update loop (_process_update_batch) — the single core both the auto-update pass and manual 'Update all' run through — moves from the Telegram bot onto the UpdateEngine, with a thin passthrough left on the bot. Verbatim, byte-for-byte move; behaviour and notifier fan-out unchanged, full test suite green. The heart of update orchestration now lives outside the chat adapter.