You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pkgs/id tests: bound the unbounded network awaits (live-iroh connects/receives) so a wedged test cannot hang a nix check phase #5218
Surfaced by the code#5195 investigation (2026-11-03, evidence on that issues closing comment). #5195s test proved fully bounded (all waits are clamped tokio sleeps / timeout-wrapped charges), so it cannot explain the 2026-11-03 fleet-switch hang: a workspace cargo test binary sat single-threaded at 0 CPU for 52 minutes inside a nix check phase and had to be killed by hand (the laptop nix config sets max-silent-time = 0 / timeout = 0, so nothing reaps a hung build).
Lead
The id lib test binary carries live-iroh tests whose connects/receives have no outer timeout. An unbounded network await is the only identified mechanism in the id test surface consistent with an indefinite 0-CPU wait. This is a lead, not an attribution — the hang could not be attributed from outside the nix sandbox.
Ask
Audit the id test suites (lib + integration) for unbounded awaits — iroh connects/receives and any other network or channel waits without deadlines — and bound every one with a loud timeout, so a wedged test fails in seconds with its name attached instead of hanging a build forever. If the audit finds the surface already bounded elsewhere, record that; the remaining value is the inventory.
Every iroh connect/receive await — and any other network or channel wait without a deadline — in the pkgs/id lib and integration test suites is wrapped in a bounded timeout that fails the test loudly with its name attached.
A deliberately wedged await demonstrates the bound: the test fails within its timeout instead of hanging (evidence recorded on the implementing PR).
The full pkgs/id test suite passes in the nix check phase / CI with no test deleted or ignored to achieve the bound.
Related: Investigation source: #5195 (closed, evidence on its closing comment). Different mechanism, same test surface: #5216 (host stack overflow).
Notes: Filed with no labels at all; this pass sets kind/test, priority/high, effort/m, status/needs-triage. Priority high because the failure mode is a silent indefinite hang inside a nix check phase (max-silent-time=0 on the laptop config), which already cost a 52-minute wedged build on 2026-11-03. Verified still live: no merged PR references this issue (search this run returned only an unrelated #4129). Honest framing preserved from the filing: this is a lead, not an attribution — the #5195 hang could not be attributed from outside the sandbox, and #5195's own test proved fully bounded. Risk: bounds set too tight will flake on loaded CI; choose generous deadlines (tens of seconds) whose only job is converting infinity into a named failure. Suggested approach: grep the id test surface for .await on iroh connect/recv paths, wrap at the call site or in a shared test helper.
— fleet monitor intake (protocol §5), 2026-11-03 20:12 CST run. Verified still live this run per the notes above.
Activity
dezren39 commentedon Nov 4, 2026
Intake review
Related: Investigation source: #5195 (closed, evidence on its closing comment). Different mechanism, same test surface: #5216 (host stack overflow).
Notes: Filed with no labels at all; this pass sets kind/test, priority/high, effort/m, status/needs-triage. Priority high because the failure mode is a silent indefinite hang inside a nix check phase (max-silent-time=0 on the laptop config), which already cost a 52-minute wedged build on 2026-11-03. Verified still live: no merged PR references this issue (search this run returned only an unrelated #4129). Honest framing preserved from the filing: this is a lead, not an attribution — the #5195 hang could not be attributed from outside the sandbox, and #5195's own test proved fully bounded. Risk: bounds set too tight will flake on loaded CI; choose generous deadlines (tens of seconds) whose only job is converting infinity into a named failure. Suggested approach: grep the id test surface for .await on iroh connect/recv paths, wrap at the call site or in a shared test helper.
— fleet monitor intake (protocol §5), 2026-11-03 20:12 CST run. Verified still live this run per the notes above.