                   (fn [cf]
                     (let [val (get cf (setting-key setting) ::setting-not-found)]
                       (if (= val ::setting-not-found)
-                        (c/assertion-violation `access
-                                               "setting not found"
-                                               (setting-key setting) (map section-key sections) setting config)
+                        (let [path (map section-key sections)]
+                          (c/assertion-violation `access
+                                                 (str "setting " (setting-key setting)
+                                                      " not found at path " (vec path))
+                                                 path setting config))
                         val)))))
 
 (defn section-subconfig

             nil)]
    (if (range-error? val)
      (c/error `setting-default-value
               "setting is missing in configuration map"
               (range-error-path val)
               (range-error-value val)
               (range-description (range-error-range val))
               (range-error-range val))
      val)))

(define-record-type

                    cf (get cf (section-key sec) ::section-not-found)]
                (case cf
                  ::section-not-found
                  (let [path (map section-key sections)]
                    (c/assertion-violation `access-section
                                           (str "section " (vec path) " not found")
                                           path config))
                  (letfn [(schemarec [schema cf]
                            (cond
                              (map-schema? schema)
