Good to know, thanks. My USB power monitor is in a package which hasn’t left China yet, so it’s hard to get a reading on my system…
Thinking for a bit about what easytarget suggested - possibly, when Linux boots and the USB drivers start up, the board is going through a USB-client reset or enumeration process which touches the USB C port. This might cause the upstream USB host (charger or supply in this case) to reset its USB PD or QC logic, dropping back to 5 volts of output. It might take a while for the supply and the board’s CH224D (or whatever) to go back through the PD negotiation process and switch back up to 12 volts - and perhaps this doesn’t always happen properly, or at all?
Even if it does happen, the step-down to 5 volts might be occurring at just the worst possible time… when the core CPUs are running at full speed trying to bring up the kernel, and when the NVMe is going through its own link negotiation and training (which might be a high-power moment if it tries to use a high clock rate on the interface). I could easily see a momentary brown-out occurring under these circumstances… and that might account for both the NVMe failure-to-train, and the “USB overcurrent” warning (which might really mean “under-voltage detected on the downstream USB power pins”?).
It would be interesting looking at the VBus DC voltage on the board, between the USB C jack and the buck regulator, and see if it bobbles during the boot process. The schematics indicate a test point, somewhere thereabouts… I wonder if it’s actually accessible and safe to tack a test lead to…