Skip to content

[Deep Research] Fatal worker errors do not stop sibling capability executions #205

Description

@Guo-Yixin

Problem

ResearchRunner executes capability fetches with four concurrent workers. When a worker encounters a fatal error outside the normal capability outcome path, the runner records workerError and stops scheduling new work, but already-running sibling workers continue executing because they only receive the caller's external signal.

This can leave provider calls running after the research run has already failed. Concurrent completion order can also make checkpoint outcomes depend on timing rather than the declared research plan.

Expected behavior

  • A fatal worker error should abort in-flight sibling capability executions.
  • The first fatal error should remain the root error.
  • Persisted capability outcomes should follow the planned capability order.

Proposed scope

  • Add an internal fail-stop AbortController combined with the external signal.
  • Abort sibling workers when the first fatal worker error occurs.
  • Keep checkpoint and outcome ordering deterministic.
  • Add a regression test with one fatal worker and one hanging sibling.

Activity

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

Metadata

Metadata

Assignees

Labels

claimedClaimed by a contributor and currently in progress

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions