Strategy: not wiping and reinstalling, but "booting from a pc, flashing the stock boot images back and then doing an OTA, then re-running the root process"
Here are the steps I use:
PART I: Update OTA
1. Place ORIGINAL boot.img in the root of Internal SD:
adb push boot.img /sdcard/
2. Make it permanent (you will lose root after this step so backup patched boot.img):
adb shell
su
dd if=/sdcard/boot.img of=/dev/block/by-name/boot_b
dd if=/sdcard/boot.img of=/dev/block/by-name/boot_a
3. Restart phone:
adb reboot
4. Run OTA update
5. Restart when prompted
PART II: Root
1. Download the latest image off of Microsoft's site:
https://support.microsoft.com/en-us/surfacerecoveryimage
2. Extract the boot.img out of payload.bin.
3. Place boot.img in the root of Internal SD:
adb push boot.img /sdcard/
4. Download the latest Magisk Manager. Open and hit the top install button.
The trick is to use MagiskManager 8.0.3 and Magisk 20.4.
Custom Channel:
https://raw.githubusercontent.com/L...5f596dc2a351270120b31b665fb561294/stable.json
Select patch a file, and select your boot.img. Patch it. It should show up in your Downloads folder renamed magisk_patched_*.img. Remember the name.
5. Move patched file to /sdcard/
adb shell
mv /sdcard/Download/magisk_patched_*.img /sdcard/magisk_patched.img
6. Copy magisk_patched.img to PC
adb pull /sdcard/magisk_patched.img .
7. Fast boot magisk_patched.img:
adb reboot bootloader
fastboot boot magisk_patched.img
8. Make magisk_patched.img permanent:
adb shell
su
dd if=/sdcard/magisk_patched.img of=/dev/block/by-name/boot_b
dd if=/sdcard/magisk_patched.img of=/dev/block/by-name/boot_a
9. Restart/ Done