In gather_sig_shares(), FIRE removes a signer from sign_wait_signer_ids before validating the response. If validation fails, the signer is missing from signature_shares but still present in public_nonces, so aggregation panics on self.signature_shares[signer_id].