A bug:
(defn- retag [x v]
(assoc (vec x) 0 v))
(defmulti command first)
(s/form (s/multi-spec command retag))
=> (clojure.spec.alpha/multi-spec current.ns/command #object[current.ns$retag 0x708d0436 current.ns$retag@708d0436])
;; should be something like
=> (clojure.spec.alpha/multi-spec current.ns/command current.ns/retag)
Made a report on ask: https://ask.clojure.org/index.php/10969/s-form-s-multi-spec-returns-a-list-with-non-symbolic-objects