{"repo":"NousResearch/hermes-agent","public_id":"58596","display_label":"DaemonThreadPoolExecutor compatibility fixes for Python 3.14","summary":"Multiple reports and proposed fixes for DaemonThreadPoolExecutor breaking on Python 3.14 due to internal ThreadPoolExecutor changes, specifically the removal or restructuring of the _initializer attribute and _worker signature.","subsystem":"agent","counts":{"members":14,"open_issues":2,"open_issues_distinct":2,"open_prs":1,"closed_issues":1,"merged_prs":1,"attempt_prs":10},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":112209},"resolution":{"state":"partially_resolved","by":"pr-112209"},"freshness":{"state":"verified","last_verified_at":"2026-09-16T01:41:46+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.14373626373626372},"fix_edges":[{"issue_number":58596,"pr_number":112209,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":107121,"pr_number":112209,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":111813,"pr_number":112209,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":58596,"title":"DaemonThreadPoolExecutor crashes on Python 3.14: `_initializer` attribute removed","url":null,"state":"closed"},{"kind":"issue","number":59896,"title":"[Bug] DaemonThreadPoolExecutor breaks on Python 3.14 — parallel tool calls fail with AttributeError","url":null,"state":"open"},{"kind":"issue","number":63769,"title":"bug(delegation): saturated child pool crashes synchronous fallback with missing _initializer","url":null,"state":"open"},{"kind":"pr","number":58598,"title":"fix(tools): adapt DaemonThreadPoolExecutor for Python 3.14 _worker signature","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":58699,"title":"fix(daemon-pool): support Python 3.14 _worker signature change (#58596)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"4432bccea8","number":0},{"kind":"pr","value":"#112209","number":112209}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":59157,"title":"fix(daemon_pool): guard against missing _initializer attr on Python 3.14","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#58598","number":58598},{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#47634","number":47634}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":59897,"title":"fix(tools): DaemonThreadPoolExecutor Python 3.14 compatibility","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#59897","number":59897},{"kind":"pr","value":"#59896","number":59896},{"kind":"pr","value":"#58596","number":58596}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":63777,"title":"fix(daemon_pool): handle missing initializer in _adjust_thread_count","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459},{"kind":"pr","value":"#57459","number":57459}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":63780,"title":"fix(daemon_pool): support Python 3.14 ThreadPoolExecutor WorkerContext signature","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#57459","number":57459}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":65182,"title":"fix(daemon_pool): support CPython 3.14 ThreadPoolExecutor internals","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#58699","number":58699},{"kind":"pr","value":"#58699","number":58699},{"kind":"pr","value":"#58699","number":58699}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":72955,"title":"fix(tools): spawn daemon workers with the 3.14 worker context","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#65182","number":65182},{"kind":"pr","value":"#57459","number":57459}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":76756,"title":"fix(tools): support Python 3.14 worker context in DaemonThreadPoolExecutor (#76621)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#65182","number":65182},{"kind":"pr","value":"#70873","number":70873},{"kind":"pr","value":"#61224","number":61224},{"kind":"pr","value":"#63780","number":63780},{"kind":"pr","value":"#63777","number":63777},{"kind":"pr","value":"#76621","number":76621},{"kind":"pr","value":"#58596","number":58596}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":95364,"title":"fix(tools): DaemonThreadPoolExecutor compatibility with Python 3.14","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#65182","number":65182}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":112209,"title":"fix(tools): daemon pool spawns workers on Python 3.14 (#58596, #111813, salvage #111814)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","tests/tools/test_daemon_pool.py","tools/daemon_pool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}