Curiouser and curiouser.
I used a terminal program instead to play the part of avrdude. Here's what happens if I send STK_READ_SIGN while the bootloader is running:
Optiboot responds with STK_INSYNC, 0x1E950F, STK_OK, exactly as it should.
So what happens if I send the 3 byte STK_GET_PARAMETER command?
Exactly what should happen. Optiboot responds with STK_INSYNC, 0x03, STK_OK. So why doesn't it do it when avrdude sends it?

