parquet.thrift in parquet-format defines the the sort order for INT96 to be signed. ParquetMetadataConverter.java in parquet-mr uses unsigned ordering instead. In practice, INT96 is only used for timestamps and neither signed nor unsigned ordering of the numeric values is correct for this purpose. For this reason, the INT96 sort order should be specified as undefined.
(As a special case, min == max signifies that all values are the same, and can be considered valid even for undefined orderings.)