2026-08-19: two consecutive settle rounds on #2216 had first 2, then 5 of 5 failed jobs cancelled at Install steps at exactly their timeout-minutes ceilings (45m x4, 90m x1) — the Ubuntu mirror on GitHub-hosted runners hangs rather than fails, so Acquire::Retries never fires. Fix: bound every apt attempt with timeout (420s update / 600s install), retry 3x with a warning, fail fast with a clear error. Also: ci-gates skill gains §10 (layers 11-14 of the onion: tool contracts, executed-not-read import chains, duplicate artifact names, defaults as invisible contracts, apt-hang mechanics).
2026-08-19: two consecutive settle rounds on #2216 had first 2, then 5 of 5 failed jobs cancelled at Install steps at exactly their timeout-minutes ceilings (45m x4, 90m x1) — the Ubuntu mirror on GitHub-hosted runners hangs rather than fails, so Acquire::Retries never fires. Fix: bound every apt attempt with timeout (420s update / 600s install), retry 3x with a warning, fail fast with a clear error. Also: ci-gates skill gains §10 (layers 11-14 of the onion: tool contracts, executed-not-read import chains, duplicate artifact names, defaults as invisible contracts, apt-hang mechanics).