Lack of a conformity check of lower to upper bound of a type parameter

I have just noticed that this compiles both in Scala 2 and Scala 3:

class Ops[+A, +O[_]] {
  def orElse[X, B[x] >: O[x] <: Opt[x]](alt: => B[X]) :B[X] = alt
}
class Opt[+A] extends Ops[A, Opt]

In the example, O[x] does not conform (necessarily) to Opt[x]. OTH, a declaration of an abstract type with a lower bound not statically conforming to its upper bound is an error.

Is this on purpose and may we rely it will remain so in the forseable future?