Stack a multi-step job into one row

When a script or a rule does several things in one run (start, step 1, step 2, done), you usually do not want each one as a separate row. Give every event of that run the same run id and Tempo stacks them into one.

The bundled tempo-post tool has this built in:

RUN="$(uuidgen | cut -c1-12)"
post() { tempo-post --provider scripts.shell --run-id "$RUN" "$@"; }

post --title "Backup started"  --run-total 4 --status "start"
post --title "Compressing"     --status "step 1"
post --title "Uploading"       --status "step 2"
post --title "Backup complete" --status "done" --final

--run-id shares the key (it lands in metadata.runID), --status labels each step, --run-total shows progress, and --final marks completion. Every event with that run id collapses into one stack; the next run gets a fresh id and a fresh stack.

If a score already groups by something else (the Hazel score groups by rule), make ${metadata.runID} the first grouping template. A run id then wins when it is present, and the normal grouping applies when it is not, so both styles live under one score.