---
name: a-sigtermed-upload-artifact-step-scores-success
description: "SIGTERM on a hung actions/upload-artifact node process makes the step conclude SUCCESS, not failure; only the run's artifact list shows the upload never happened"
metadata:
  node_type: memory
  type: feedback
  originSessionId: 31d6d584-78be-4488-bd9e-059440e14deb
  modified: 2026-09-25T11:38:59.224Z
---

Measured 2026-09-25, golden 36122001936 (v0.73.0, #331), twohost-b on kitsubito: "Upload bench ledger"
(upload-artifact@v4, continue-on-error) hung on a network stall — node pid at 0% CPU, one ESTAB socket to
140.82.113.22:443 with Send-Q 1623, ~6 min. Gater (doyle) ruled SIGTERM by pid before the 60-min job wall
(12:03:42Z). After the kill the step concluded **success** — continue-on-error was never exercised — and the
job went green. `gh api .../runs/<id>/artifacts` showed `bench-ledger-twohost-b` ABSENT (the other 5 present).

**Why:** a killed upload and a real upload render identically at step and job level; the green is false.
**How to apply:** after any manual kill of an upload step, verify with the artifact LIST and record the gap as
a labelled hole, never as a clean run. Also: a failed-jobs-only rerun of ONE twohost leg cannot go green —
its partner won't rerun, so it reds on the rendezvous budget (golden.yml ~:1202); the fallback is a FULL
same-sha rerun, referred to the gater with a floor check. Kill by pid, one ssh per kill
([[pkill-f-matches-the-ssh-command-line-that-carries-it]]). Related: [[a-stale-target-makes-a-check-pass-harder-not-fail]].
