         {:keys [type spec-name val in]} (problem-parts problem opts)]
     (expected-str type spec-name val in problems opts)))
 
-;; TODO - rename to :problem/value-group
-(defmethod problem-group-str :value-group [_type spec-name val path problems opts]
+(defmethod problem-group-str :problem/value-group [_type spec-name val path problems opts]
   (let [problem (first problems)
         subproblems (:problems problem)
         {:keys [form in]} (problem-parts (first subproblems) opts)

                       (str s "\n\n"))))))
         (ansi/color (section-label) :footer)
         (ansi/color "Detected" :footer)
         (ansi/color (count problems1) :footer)
         (ansi/color (if (= 1 (count problems1)) "error" "errors") :footer)))))))

(defn ^:private minimal-fspec [form]
  (let [fspec-sp (s/cat

  (walk/postwalk
   (fn [form]
     (if (and (map? form)
              (= :problem/value-group (:expound.spec.problem/type form))
              (= 1 (count (:problems form))))
       (first (:problems form))
       form))
   groups))

(defn ^:private groups [problems]
  (let [grouped-by-in-path (->> problems
                                (group-by :expound/in)
                                vals
                                (map (fn [grp]
                                       (if (= 1 (count grp))
                                         {:expound.spec.problem/type :problem/value-group
                                          :path-prefix               (:expound/path (first grp))
                                          :problems                  grp}
                                         {:expound.spec.problem/type :problem/value-group
                                          :path-prefix               (apply lcs1 (map :expound/path grp))
                                          :problems                  grp}))))]

    (->> grouped-by-in-path
         (reduce
