[Moto E (2020)] GewdGrief:
Alright, I've done some more reading and tried a couple other things.

This post with a similar problem suggested that it was a faulty partition, and to run:

fastboot oem fb_mode_set

fastboot flash partition gpt.bin

fastboot oem fb_mode_clear

This is what I got

C:\platform-tools>fastboot oem fb_mode_set
OKAY [ 0.002s]
Finished. Total time: 0.004s

C:\platform-tools>fastboot flash partition gpt.bin
Sending 'partition' (45 KB) OKAY [ 0.009s]
Writing 'partition' (bootloader) Validating 'gpt.default.xml'
(bootloader) Committing 'gpt.default.xml'
(bootloader) - flashing 'gpt_main0.bin' to 'partition:0'
(bootloader) Flashing primary GPT image...
(bootloader) Flashing backup GPT image...
OKAY [ 0.121s]
Finished. Total time: 0.252s

C:\platform-tools>fastboot oem fb_mode_clear
OKAY [ 0.002s]
Finished. Total time: 0.005s

C:\platform-tools>fastboot reboot
Rebooting OKAY [ 0.001s]
Finished. Total time: 0.008s

But it just did its normal bootloop after rebooting. [Oh wait, that's different... oh never mind. Just now, as I was writing, it stayed on one of the flashing screens for a significant amount of time, but then continued looping again]

WAIT OKAY, something happened! After the reboot from flashing gpt.bin, I tried flashing the boot image again.

[...directly after the previous commands...]
C:\platform-tools>fastboot flash boot_a boot.img
Sending 'boot_a' (32768 KB) OKAY [ 0.764s]
Writing 'boot_a' (bootloader) *****************************************************
(bootloader) WARNING: Flashing vbmeta image is required prior to
(bootloader) flashing boot image.
(bootloader) *****************************************************
(bootloader) flash permission denied
FAILED (remote: '')
fastboot: error: Command failed

C:\platform-tools>fastboot flash vbmeta_a vbmeta.img
Sending 'vbmeta_a' (4 KB) OKAY [ 0.012s]
Writing 'vbmeta_a' OKAY [ 0.007s]
Finished. Total time: 0.054s

C:\platform-tools>fastboot flash boot_a boot.img
Sending 'boot_a' (32768 KB) OKAY [ 0.763s]
Writing 'boot_a' OKAY [ 0.908s]
Finished. Total time: 1.734s

It accepted the boot image! No more "Preflash validation failed"!

I immediately fastboot getvar all, and I really should have done so after flashing gpt.bin, but oh well. There are some changes!

C:\platform-tools>fastboot getvar all
(bootloader) version: 0.5
(bootloader) version-bootloader: MBM-2.1-ginna_retail-b0c61b8e633-220530
(bootloader) product: ginna
(bootloader) board: ginna
(bootloader) secure: yes
(bootloader) hwrev: PVT
(bootloader) radio: 4
(bootloader) storage-type: emmc
(bootloader) emmc: 32GB SAMSUNG QD63MB RV=08 PV=01 FV=0000000000000001
(bootloader) ram: 2GB SAMSUNG LP3 DIE=8Gb M5=01 M6=06 M7=00 M8=1F
(bootloader) cpu: SDM632
(bootloader) serialno: [...omitted...]
(bootloader) cid: 0x0032
(bootloader) channelid: 0x8d
(bootloader) uid: 101ECD4600000000000000000000
(bootloader) securestate: oem_locked
(bootloader) factory-modes: disabled
(bootloader) iswarrantyvoid: no
(bootloader) max-download-size: 536870912
(bootloader) reason: Volume down key pressed
(bootloader) imei: [...omitted...]
(bootloader) imei2:
(bootloader) meid:
(bootloader) date: 11-10-2020
(bootloader) sku: XT2052-1
(bootloader) carrier_sku: XT2052-1
(bootloader) battid: SB18C66367
(bootloader) iccid:
(bootloader) cust_md5:
(bootloader) max-sparse-size: 268435456
(bootloader) current-time: "Mon Apr 5 23:52: 0 UTC 2021"
(bootloader) ro.build.fingerprint[0]: motorola/ginna_retail/ginna:10/QPG
(bootloader) ro.build.fingerprint[1]: S30.82-141-15-2/e9f0a:user/release
(bootloader) ro.build.fingerprint[2]: -keys
(bootloader) poweroffalarm: 0
(bootloader) ro.build.version.full: <not found>
(bootloader) ro.build.version.qcom: LA.UM.8.6.2.r1-06600-89xx.0
(bootloader) version-baseband: M632_19.00.03.50.04R GINNA_GWLC_CUST
(bootloader) kernel.version[0]: Linux version 4.9.206-perf+ (nobody@andr
(bootloader) kernel.version[1]: oid-build) (gcc version 4.9.x 20150123 (
(bootloader) kernel.version[2]: prerelease) (GCC) ) #1 SMP PREEMPT Fri A
(bootloader) kernel.version[3]: pr 1 01:56:14 CDT 2022
(bootloader) sbl1.git: MBM-2.1-ginna_retail-054f0bdd8c-220530
(bootloader) rpm.git: MBM-2.1-ginna_retail-20f2cf34-220530
(bootloader) tz.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) devcfg.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) keymaster.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) cmnlib.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) cmnlib64.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) prov.git: MBM-2.1-ginna_retail-7b2dc18f40-220530
(bootloader) aboot.git: MBM-2.1-ginna_retail-b0c61b8e633-220530
(bootloader) frp-state: protected (77)
(bootloader) ro.carrier: retus
(bootloader) current-slot: b
(bootloader) running-boot-lun: 0
(bootloader) running-slot: _b
(bootloader) slot-suffixes: _a,_b
(bootloader) slot-count: 2
(bootloader) slot-successful:_a: No
(bootloader) slot-successful:_b: No
(bootloader) slot-bootable:_a: No
(bootloader) slot-bootable:_b: Yes
(bootloader) slot-retry-count:_a: 0
(bootloader) slot-retry-count:_b: 7
(bootloader) pcb-part-no: SB28C75450
(bootloader) is-userspace: no
(bootloader) is-logical:
all: listed above
Finished. Total time: 0.753s

First I noticed that the slots information had changed. There is now an active slot, and slot b now reads "bootable" (which is odd, because I flashed boot_a 🤔), and a retry count that isn't 0! Then I noticed a bunch of the git variables also changed, to MBM-2.1-ginna_retail-[yaddayadda-yadda]

I have no idea what this means, but I call it progress!

________________________________________________________________​

It still bootloops, but I'll keep poking at it.

A change I've notices, however, from even before I flashed gpt.bin, is an inconsistency of how it bootloops.

It either:

immediately falls through from normal bootmode

bootloops for a while and then goes into fastboot

bootloops and turns off

And I haven't really found a pattern why. I've taken to manually starting fastboot (with volume down) when before it would go there by itself. Who knows.