The process screen had its own safeDownloadName and the CLI process command its own wx
writer, next to render/files' safeFileName and saveDownload. Keep one: safeFileName (last
path segment of either separator; empty, dot, dot-dot and control characters refused) and
saveDownload, which now takes the process writer's friendlier rule for default names (flag wx,
then name-1.ext, name-2.ext when taken) and returns the path written; an explicit --out still
replaces the file. process run DOWNLOAD_FORM, table download, table export and report run all
use it; the duplicates and their test move into files.test.ts.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>