WebRTC softphone audio drops while Express middleware keeps catching state.changed events

Problem
Softphone audio cuts out completely around the forty-five second mark, yet the Express middleware keeps catching interaction.media.webrtc.state.changed events with a status: "connected" payload. GC’s locked on 2024-12.960.0. The JWT signature validates fine on the initial handshake, but the renegotiation packet throws a 401 since the route handler can’t verify the second token. Logs are doing jack all to explain why the exp claim is rolling backward by exactly 120 seconds on the second burst.

app.post('/webhooks/gc', (req, res) => {
 const sig = req.headers['x-genesys-signature'];
 if (!jwt.verify(sig, process.env.GC_WEBHOOK_SECRET)) {
 return res.status(401).send('Bad sig');
 }
 console.log('Event:', req.body.event);
});

Console output:
Error: invalid signature. Expected: eyJhbGc...
Payload: { event: 'interaction.media.webrtc.state.changed', status: 'connected', timestamp: 1709812400000 }

The WebSocket Notification API catches the exact same event stream without dropping the JWT validation. The webhook delivery service seems to be reusing a stale signing key during the ICE candidate exchange. Raw packet capture shows the alg header switching to HS512 mid-stream.