Bom dia!
Muito bem, a lógica está muito bem construída e o padrão de código excelente!
Contudo, há um pequeno erro no código.
estoque_novo = input("Informa a nova quantidade do produto:")
if produto in estoque:
estoque[produto] = estoque_novo # essa linha aqui
print(estoque)
A variável estoque_novo está vindo como uma string. Portanto, o produto está sendo atualizado para uma string com o número da nova quantidade, e não o número em si.
Esse é a maior preocupação que devemos ter ao lidarmos com linguagens de tipagem dinâmica, como Python. Se não tomarmos cuidado, podemos acabar passando uma string para algo que deveria ser um int, e depois tentar fazer operações inválidas com esse dado, como:
estoque_minimo = estoque[produto] / 30 # Se estoque[produto] for uma string, vai estourar uma exceção aqui
preco_estoque = estoque[produto] * 2 # Se estoque[produto] for '50' ao invés de 50, teremos '5050' ao invés de 100
Mas a lógica e o padrão de código estão sensacionais! Parabéns! Apenas lembre-se de prestar atenção para os tipos dos dados.