well, to start with, cleave[1] and cleave[2] are not heteronyms since they are pronounced identically, and heteronyms, by definition, have different meanings AND pronunciations.

furthermoreover, and in the second place, someone has coined contranym to mean a word which has two opposite meanings, and cleave is often (mistakenly?) included on lists of such words. and someone else has coined antagonym to mean the same thing.

see also the previous thread under Q&A "words which are their own antonyms" (or words to that effect).