Skip to content

pkgs/id tests: bound the unbounded network awaits (live-iroh connects/receives) so a wedged test cannot hang a nix check phase #5218

Open

Description

@dezren39

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.

Related

code#5195 (the flake fix; closed), code#5216 (host-side clap stack overflow, separate).

Acceptance criteria

  • 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.

Activity

  1. added
    kind/testTest coverage, test infrastructure, or test-only fixes
    priority/highImportant and time-sensitive
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 4, 2026
  2. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

effort/mMedium: expected under 1 day of workkind/testTest coverage, test infrastructure, or test-only fixesmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/highImportant and time-sensitivestatus/needs-triageNot yet triaged; needs a first look

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions