Ok, in the todo example, I like the "injection" better. We must think about how to make this customization reusable. The resource definition is a map, maybe we can take advantage this.

Sketch:

    (def valid-entity? [ctx]
      (when-let [f (make-function (get-in ctx [:resource :valid-entity?]))]
        (f ctx)))

    (defdecision post-entity-valid? valid-entity? post! handle-unprocessable-entity)
    (defdecision put-entity-valid? valid-entity? put! handle-unprocessable-entity)

    (def enhanced-resource-stub
      {:post-to-existing? (fn [ctx] (and (=method :post ctx) post-entity-valid?))})

    ;; usage, defresource must be changed to support map as initial argument
    (defresource r enhanced-resource-stub 
      :valid-entity #(not= "invalid" (slurp (get-in % [:request :body]))))