Both _should_sync_commands and _save_command_hash contained an identical
~35-line block building the command data list and computing the SHA-256 hash.
Extracted into a new synchronous helper method _compute_command_hash() that
both callers now delegate to.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>