Ambas oraciones son gramaticalmente correctas. La diferencia es que had't is está en tiempo pasado, mientras que have't está en tiempo presente. En contexto, Haven't es la oración gramaticalmente correcta. Si no hubiera tenido sentido, ya que se debe preservar el orden de los eventos.
¿Dónde usamos haven't y hadnt?
Haven't=presente perfecto ex: No he ido a la tienda todavía. Hadn't=pasado perfecto ex: cuando ella llegó a casa, yo no había ido a la tienda todavía.
¿Es que no lo he hecho o no lo he hecho?
No pude hacer es un tiempo pasado continuo y significa que no pudiste hacer algo a tiempo. No he podido hacer es del tiempo presente perfecto y significa que no pudiste hacer algo en el pasado pero todavía tienes tiempo para hacerlo. Ejemplo: No pude terminar mi tarea a tiempo, así que me castigaron.
¿Cómo se usa havent?
No se ha referido al pasado hasta ahora. Entonces, si no ha hecho algo, no lo ha hecho durante un período de tiempo específico (día, mes, nunca, etc.) No se refiere a un punto de tiempo específico que ya pasó.
¿No es gramaticalmente correcto?
" Have had" (y es negativo 'haven't had') se usan cuando 'have' continuó desde algún tiempo en el pasado hasta ahora - el 'time punto de vista' es AHORA. "No he desayunado hoy". - Entre el comienzo de hoy y AHORA, no he desayunado.