mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
Two jobs of run 39040406916 died with the runner's own annotation, 'The hosted runner lost communication with the server'. Both left every diagnostic step pending, so no artifact exists for either. For the swarm one the in-band sampler ruled starvation out — 9324M of 15947M available, stall60 0.0%, 25 seconds before the cut — and nothing in the repository can tell the remaining causes apart. A stuck NFS mount wedges tasks in uninterruptible D state, which shows as I/O pressure while memory pressure stays flat, and this drill runs its own NFS node. /proc/pressure/io and /proc/pressure/cpu were read nowhere in the repository. They are now sampled beside memory, with the D-state count, every ten seconds instead of thirty, and an I/O stall at or above half the minute aborts the step while the runner is still alive to upload the banner. cpu reads 'some', not 'full': the full line is pinned at 0.00 system-wide, measured 13.50 against 0.00 on this host, so reading it like memory would have shipped a metric that can never move. Dump runner state was switched off for swarm, so the one post-mortem that survives a step failure never ran there. It runs now, and the swarm drill gets the step timeout its compose sibling has had all along — 350, the number test_distro_budget_fits_timeout already derives the distro budget from. The sampler moved to its own module: the additions took matrix.py past the file-size cap, and the lint asks for a split rather than a marker. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>