I'm a bit confused by the if-path cond-path semantics, looks like navigates to the path if the condition is not false (and considers nil a truthy value) is that correct? An example:
(s/select (s/if-path [:a]
:a
s/STAY)
{:b 2})
;; => [nil]
(s/select (s/if-path (comp boolean :a)
:a
s/STAY)
{:b 2})
;; => [{:b 2}]
@jlle conditions in specter paths are based on whether the path navigates to anything or not
has nothing to do with the navigated values themselves
STOP is "false" for paths
keypath always navigates, so it's always considered "true"