Miniscript or_i, d: – do they always imply a witness input?

The question: is the following description of the behavior of these fragments correct?

The or_i fragment and d: wrappers all have an IF in their script that does not take the value from the argument(s), but from some external source. This external source cannot be the result of another miniscript fragment, because the fragments are composed as nested expression, not as a sequence of actions. This means that an input to IF in or_i, d: have to come from the witness that is specified at the spending time (that should be 1 or 0 due to MINIMALIF).

EDIT: removed j: wrapper from the question and the description because it does not take the value from external source, it just checks for the size of the data that X consumes