The router was fine. That's the bit I keep coming back to. It had been fine for three years, did exactly what I asked, and never once dropped a connection I cared about. So naturally, on the second evening of the new year, I decided it needed newer firmware.
The flash took. The reboot did not. No lights past power, no DHCP, no web UI, nothing on the LAN. I'd bricked a working device for the crime of being slightly out of date.
What saved it was a habit I nearly skipped: opening the case first and finding the four-pin serial header on the board before flashing anything. With a USB-to-UART adapter at 3.3V and picocom -b 115200 /dev/ttyUSB0, I caught the bootloader mid-tantrum, dropped into its menu, and TFTP'd a known-good image back over before the watchdog gave up. Ten minutes of breath-holding and it came back.
The lesson isn't "don't flash routers". It's that the serial console is the difference between a recoverable mistake and a trip to the bin. If a device has a header and you're about to do something stupid to it, solder it on while the thing still works. Future-you, at 2am, will be very grateful. I should have just gone to bed.