CI checks
| Check |
What it fails |
Since |
| pgrep-self-match-check.sh | a pgrep -f / pkill -f with a bare literal pattern, or ps \| grep <word> without a bracket or grep -v grep, in tools/, relay/playbooks/, infra/ or packaging/: the pattern matches the shell that runs it (the wave script of 6 October 2026 never started a node on 38 cards because pgrep -f igneumd-0313 saw the launching shell; a kill file killed its caller the same day). Anchor to the executable's path, bracket the first letter, or use -x. Owed (allow-listed, finished measurements): tools/prover-floor/pc2-*.ps1, tools/proving-v1/pc2-*.ps1 (their pkill -f sp1-gpu-server becomes pkill -x), tools/repo/fresh-repo.sh:223, tools/observer/autosync.sh:22, and the live devnet's operational scripts the fleet agent does not own: infra/devnet/restart-hand-nodes.sh, infra/seed-nodes/addpeer-from-mac.sh, relay/playbooks/shard-test.ps1, tools/ci/fixtures/bash-body-ok.ps1, tools/ci/pgrep-self-match-check.sh, tools/ci/prover-socket-check.sh, tools/exec-attacks/net.sh (their owners anchor the pattern when next touched; the hand-node and seed scripts run tonight and were not edited blind) | 6 October 2026, branch gpu-fleet |
| kill by exact command or pid file (owed as a check) | 6 October 2026, 21:09Z: a Mac-side pkill -f <log file name> matched nothing (the log name was a redirect, not part of the command line), the roll-everything script lived on and wiped a box it had been told to hold. Rule: a job is stopped by its pid file (tools/fleet/fleet-bg.sh start|stop <name>) or by a pattern anchored on its exact command line (^python3 -u /root/fleet/in/box-prover.py), never by a word that may or may not appear in it. The check that flags a pkill -f/pgrep -f whose literal is a path or a name that never starts a command line is owed to the CI lane |