{"repo":"NousResearch/hermes-agent","public_id":"115982","display_label":"Portal fetch timeout not actually enforced","summary":"A bug where the supposed wall-clock timeout on portal account fetching was not truly bounded — the ThreadPoolExecutor join would block indefinitely. These items address enforcing the timeout so that usage and billing endpoints release promptly when the portal stalls.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":116757,"merged_at":"2026-09-20T07:35:05+00:00"},"resolution":{"state":"resolved","by":"pr-116757"},"freshness":{"state":"verified","last_verified_at":"2026-09-20T07:35:05+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":115982,"pr_number":116757,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-20T07:35:05+00:00"}],"members":[{"kind":"issue","number":115982,"title":"`_fetch_portal_account`'s \"wall-clock-bounded\" fetch is not bounded — `with ThreadPoolExecutor` joins the hung worker","url":null,"state":"closed"},{"kind":"pr","number":115992,"title":"fix(account-usage): enforce portal fetch wall-clock timeout","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9573f44ca541","number":0},{"kind":"pr","value":"#116757","number":116757},{"kind":"pr","value":"#115982","number":115982},{"kind":"pr","value":"#115993","number":115993}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":115993,"title":"fix(agent): make the portal account fetch wall-clock bound actually hold","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9573f44ca541","number":0},{"kind":"pr","value":"#116757","number":116757},{"kind":"pr","value":"#115982","number":115982},{"kind":"pr","value":"#115993","number":115993}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":116757,"title":"fix(usage): /usage and /billing release at their timeout when the Nous portal stalls (#115982, salvage #115993)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/account_usage.py","agent/billing_usage.py","tests/agent/test_account_usage_fetch.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}