9f95efb215
Greptile's review flagged mktemp -t as non-portable between BSD and GNU. The suggested replacement (mktemp "$TMPDIR/...XXXXXX.json") is correct about dropping -t but still puts X's in the middle of the template name (XXXXXX.json), which BSD mktemp does not substitute — only X's at the end of the basename are replaced on BSD. Verified on macOS: mktemp "$TMPDIR/last30days-test.XXXXXX.json" → /var/folders/.../last30days-test.XXXXXX.json (X's left literal) The fully portable form uses trailing X's and drops the .json suffix (engine reads by path, not extension): mktemp "$TMPDIR/last30days-test.XXXXXX" → /var/folders/.../last30days-test.DXAHzR (X's substituted) Verified on bash and zsh, BSD/macOS. GNU/Linux is already fine since GNU substitutes X's wherever they appear in the basename. Applied to both --competitors-plan (comparison-mode block) and --plan (Step 1 block) tmpfile writes.