When restarting node, reversible losts are lost. When we restart without waiting for live (
wait_for_live=False) which means that, node will wait until first block is produced or received - the last block processed by node will be the last irreversible (HEAD block might be old enough to make transactions exceed the expiration time).
This could be observed with
node.dump_config() method because when calling without
close=True, node will be restarted but also will have HEAD block older by reversible blocks amount (21). It causes the first transaction to fail because of exceeding it's own TTL (Time To Live).