f4c55323fa
`hermes setup --reset` calls `save_config(copy.deepcopy(DEFAULT_CONFIG))`, which writes `get_hermes_home()/config.yaml` — the exact file the backup block a few lines below copies to `config.yaml.bak.<timestamp>`. Because the copy ran after the reset, the backup captured the defaults that had just been written, not the user's config. The one invocation where a backup matters most produced a worthless one, and the original was unrecoverable. The block's own comment already claimed it runs "before setup modifies it"; on the --reset path that was false. Move it above the --reset branch so it captures the true pre-setup state on every path. Also report the backup location on the --reset path. --reset is destructive and can leave the wizard early (the non-interactive return exits before the end-of-setup notice), so a user who just lost their config was never told where the copy is. The end-of-setup notice is unchanged for the normal path and is suppressed only when it has already been shown, so no run prints it twice; the shared wording now lives in one helper. Behaviour otherwise preserved: `copy2` (config.yaml holds secrets, so mode is preserved), the try/except fallback to `_backup_path = None`, and the existing notice for the full-setup path. Follow-ups deliberately out of scope: pruning accumulated `.bak.*` files, and printing the notice on the other early-return paths (--portal, section runs). Refs #3522