These statuses are a little confusing to me.  If I understand correctly, a video will get KEEP_FOREVER when:

1) The user keeps video "A"
2) New suggestions for video "A" arrive and the user is notified
3) The user is asked if they want to swap video "A" with any of the new suggestions
4) The user says "no and don't ask again"

What is the SWAPPABLE status however?  Isn't it possible to swap a video with every status but KEEP_FOREVER?  Or is is:

    SWAPPABLE = !KEEP_FOREVER

Either way I think we're putting too many states into one field.  These are really three different conditions:

1) Video has been kept, swapped similar, or swapped exact (three possibilities)
2) Video can be swapped true/false (boolean)
3) Video has new suggestions true/false (boolean)