As inserções filhas veriam qualquer pai que tenha sido confirmado ou inserido anteriormente pela mesma transação (commitida ou não).
Uma coisa a verificar é se a inserção do pai está derivando automaticamente o valor da chave primária (por exemplo, por meio de um gatilho).
Ou seja, você emite a instruçãoINSERT em Contracts (contract_sequence_number, ...) valores (10437, ...);
mas um gatilho determina um novo contract_sequence_number da sequência e, na verdade, fornece a chave primária 10438 (ou qualquer outra).
Outro problema pode ser qualquer camada ORM que está atrapalhando o problema por não emitir as inserções na ordem correta ou usar conexões diferentes de um pool para uma única 'transação'.
Verifique também se a inserção do pai não retornou um erro.
Tente fazer uma transação de amostra por meio de um cliente convencional (como SQL*Plus) e veja se funciona. Se a inserção filho falhar lá, basta consultar a entrada mais recente do contrato (por exemplo, onde contract_sequence_number> 10400) e ver se a inserção foi bem-sucedida.