2 The [`select()` function](https://stedolan.github.io/jq/manual/#select(boolean_expression)) only ever evaluates a boolean. The bit that's confusing from the array/`contains()` examples is the addition of the pipeline _inside_ the `select()`. For exact equality. this is not necessary as `select()` can probe an arbitrary path into the object against which it evaluates in order complete it's input expression.
2 While I'm not 💯% on the internals of _why_ this works, deferring execution with [`eval`](https://www.unix.com/man-page/posix/1posix/eval/) seems to do the trick.