I’m still working my way around the edges of this, but I think it’s starting to come together.
A covenant is an agreement between two entities. The structure is fairly standardized, and while there may be some common exchanges, notionally each is a unique construct. Each Covenant consists at least two terms, and usually three or more.
The first term identifies the entities bound by the covenant, acknowledging their relationship.
The second term identifies and makes explicit the conditions under which the covenant may be terminated… or possibly that it is irrevocable, though that is likely uncommon, since it binds both.
After that come a number of terms, each identifying an exchange involved in the covenant. Each term can have several clauses specifying elements of how the term is to be implemented, and may identify a specific termination clause for the term. Very specifically it may include a clause outlining penalties for failing to comply or perform.
Note that there are many possible exchanges, and that while they do tend to be at least somewhat fair, there is room for negotiation. In principle both parties choose to enter the covenant, but circumstances can certainly cause entities to enter covenants that they might prefer not to.
The definition of covenant used above could apply to almost any contract in-game, really. A feudal covenant outlines the boons and duties on each side of the arrangement (simply, the liege grants land and support to a vassal in exchange for taxes and loyal service). A demon lord binds a lesser demon to his will, exchanging power for souls collected by his vassal. A god makes an aspiring immortal his herald, exchanging power and longevity for a mortal agent who can act on his behalf in the mortal realm.