Flattening a nested record to its leaves
I think this is good usage of tree-seq. It's intended for walking trees, right? If your settings will have ragged depth it's probably the cleanest approach.

The only main cleanup I see is that this predicate can be pointfree if you want:

#(and (map-entry? %)
      (not (associative? (second %))))
; =
(every-pred map-entry? (comp not associative? second))


On the other hand, I don't see a huge need for records here at all, as opposed to maps.


Nested maps will de/serialize fine as-is with EDN (or JSON if there's nothing crazy in them)
They're idiomatic across the Clojure community
Define a clojure.spec spec for them if you want
Records don't give you type safety anyway, and you're not using any of their class-abilities like extending protocols.
Records are a bit faster if you're building thousands, but that doesn't look like the case here