diff --git a/common.sh b/common.sh index 8fb734b..a0179ba 100755 --- a/common.sh +++ b/common.sh @@ -2008,7 +2008,17 @@ run_orch_child() { return 0 else _ec=$? - error "$label — failed (exit $_ec, $(format_duration $(( $(date +%s) - _start ))))" + # Match the severity ladder run_job.sh already records against: exit 1 is a warning, + # exit 2+ is an error. The status in the run record was always derived that way, so a + # child exiting 1 produced a run marked "warn" whose log was full of ❌ ERROR lines — + # and the log is the louder of the two. A job that skipped work it was told to skip read + # exactly like a job that broke. + # + # The label still lands in JOB_FAIL either way. Whether the child succeeded is a separate + # question from how loudly to report it, and the orchestrator's own exit code depends on + # the first one. + local _msg="$label — failed (exit $_ec, $(format_duration $(( $(date +%s) - _start ))))" + if (( _ec == 1 )); then warn "$_msg"; else error "$_msg"; fi JOB_FAIL+=("$label") return 1 fi