`exp` generated in milliseconds instead of epoch seconds
Bad input: Setting `exp: Date.now() + 3600` directly in JWT payload.
Failure: Tokens are interpreted as expired or invalid by standards-compliant validators.
Fix: Use epoch seconds (`Math.floor(Date.now()/1000) + ttl`) and verify clock skew.