+- **git uses the Windows SSH client.** `setup-windows-no-uac.ps1` sets
+ `core.sshCommand` to `%WINDIR%/System32/OpenSSH/ssh.exe`. Git for Windows
+ otherwise prefers its own bundled MSYS2 `ssh.exe`, which cannot reach the
+ Windows `ssh-agent` service that the elevated half enables - Win32-OpenSSH
+ publishes the agent on a named pipe the MSYS2 build does not speak. Without
+ this, keys loaded with `ssh-add` from PowerShell are invisible to `git`, and a
+ push falls back to hunting for a key file and prompting for its passphrase.
+ The value uses forward slashes on purpose: git parses `core.sshCommand` with
+ shell quoting rules, in which a backslash is an escape character.
+- All three scripts are idempotent — re-running skips anything already installed.
+ BinSkim in particular checks NuGet for the newest stable version *before*
+ downloading: the package is a self-contained .NET build well over 100 MB, and
+ re-provisioning an up-to-date box should not pay for it. The installed version
+ is tracked in `nupkg-version.txt` beside the tool.
+- `setup-windows-no-uac.ps1` runs its steps independently: one failing warns and
+ the rest still run, and it exits 1 if any did. The `.bat` reports that and
+ carries on to the elevated half, which is the part worth the UAC prompt. Use
+ `-Skip` to re-run a subset, e.g. `.\setup-windows-no-uac.ps1 -Skip BinSkim`.
+ Run it **non-elevated**: it writes per-user state (the `HKCU` `PATH`, the
+ `.gitconfig` under `%USERPROFILE%`), so an elevated run would configure the
+ administrator's profile instead. It warns if you do.
+- **Remote access.** OpenSSH Server is installed from the Windows on-demand
+ capability (10/1809+), set to start automatically, and given an inbound TCP 22
+ firewall rule on *all* profiles — a VM's host-only or bridged adapter is
+ routinely classified Public, which is the usual reason a running `sshd` is
+ unreachable. Windows ships no `rsync`, so a build of it
+ ([nuket/rsync-windows](https://github.com/nuket/rsync-windows)) is installed to
+ `C:\Tools\rsync` and added to the **machine** `PATH`. That last detail matters:
+ the remote end of an `rsync` runs non-interactively, with no login shell, and
+ Win32-OpenSSH builds that environment from the registry `PATH` rather than from
+ a profile. Key auth needs `~/.ssh/authorized_keys` ACL'd to just you and
+ `SYSTEM`; accounts in the Administrators group use
+ `C:\ProgramData\ssh\administrators_authorized_keys` instead.