Here is an example of changes which are incrementally compatible, but not transitively so:
https://github.com/granders/avro-experiment/blob/master/src/main/java/geoff/AvroThingy.java
In this case, compatibility is caused by dropping a default value from a field.
Consider adding tighter logic (or at least documentation) to disallow this.