Sorting a grid before opening a bulk wizard 500'd the submit with "No reader function for tag object". parse-sort returned the grid's whole :matching-header map, which carries a :render fn. That sort rides along in :query-params, which the bulk wizards copy verbatim into their form snapshot (bulk_code.clj:88, invoices.clj:1437). The snapshot is serialized with pr-str into a hidden field and read back with clojure.edn/read-string on submit; a fn pr-strs as #object[...], which edn has no reader for, so wrap-decode-multi-form-state threw before the handler ran. :matching-header was only ever read inside parse-sort itself - nothing downstream consumes it, and apply-toggle-sort in this same namespace already builds entries without it. Keep it as a local binding to derive :name and to drop unknown columns, and leave it out of the result. Fixes transaction bulk-code (11 production 500s over 2026-08-10/11) and the same latent bug in invoice bulk-edit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB