The export form sends `""` when the user types no suffix, and the
legacy `/api/export` surface took a plain string there. The job schema
asked for `::sm/text` (not blank) instead, so every suffix-less export
died with `:params-validation` before reaching the worker. The suffix
is a free-form filename fragment the worker concatenates as-is, so the
schema takes any string now, empty included.
AI-assisted-by: glm-5.3-flash