# Architecture The updater is split by responsibility rather than by framework or class hierarchy. - `octo_updater.py` — executable entry point only. - `ui.py` — Tk presentation and user interaction. - `config.py` — application paths and atomic configuration persistence. - `net.py` — HTTPS validation and secure URL opening. - `torrent.py` — torrent parsing, selection, verification, aria2 synchronization, and update workers. - `client.py` — WoW client inspection, locale/config patching, tweaks, and client-specific transformations. - `mods.py` — mod and addon catalogs, release lookup, installation, and removal. - `platform_ops.py` — operating-system operations such as directory links, folder opening, DPI, Defender, process launching, and display APIs. - `app_log.py` — the small thread-safe application log channel shared by workers and the UI. ## Dependency rules `ui.py` may depend on the domain modules. Domain modules must not import `ui.py`. `platform_ops.py` contains OS-specific process/API behavior and must not depend on Tk. `net.py` contains generic network policy and must not contain WoW, torrent, mod, or UI policy. `client.py`, `torrent.py`, and `mods.py` expose ordinary functions/data and do not require the Tk application to be running. No platform class hierarchy, factories, dependency-injection container, repository layer, or plugin framework is used. New abstractions should only be introduced when a concrete requirement requires them.