{"repo":"NousResearch/hermes-agent","public_id":"105865","display_label":"Windows stdout pipe drain hang fixes","summary":"Multiple attempts to address a Windows-specific hang where blocking reads on stdout pipes stall when grandchild processes hold the pipe open. The work explores non-blocking drain approaches using PeekNamedPipe and related techniques.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":115671},"resolution":{"state":"resolved","by":"pr-115671"},"freshness":{"state":"verified","last_verified_at":"2026-09-19T09:35:46+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":67362,"pr_number":115671,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":105865,"pr_number":115671,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":105865,"title":"Windows: terminal/file tool \"local environment\" hangs for minutes (blocking os.read stdout drain, no timeout)","url":null,"state":"closed"},{"kind":"pr","number":105893,"title":"fix(tools): non-blocking Windows stdout drain stops after child exit (#105865)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#105981","number":105981}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":105981,"title":"fix(terminal): prevent Windows stdout drain hangs","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#105893","number":105893},{"kind":"pr","value":"#105893","number":105893},{"kind":"pr","value":"#105893","number":105893}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":109096,"title":"fix(tools): use PeekNamedPipe to drain stdout on Windows to prevent os.read hang (fixes #105865)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#105981","number":105981},{"kind":"pr","value":"#105865","number":105865}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":115671,"title":"fix(terminal): Windows commands return promptly when a grandchild holds the stdout pipe (#105865, #67362, salvage #105981)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_drain_fd_windows.py","tools/environments/base_output.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}