Severity: low | Category: correctness | Phase: P3.8
Problem
_dispatch_pr_merged_webhook constructs GitHubIntegration() (eagerly opening an AsyncClient) only to read gh.repo (just os.getenv('GITHUB_REPO')), then discards it without close() — a socket leak per merge.
Evidence
codeframe/ui/routers/pr_v2.py:204
Acceptance criteria
Read GITHUB_REPO from env directly, or try/finally: await gh.close().
Dependencies
None
Filed from the SaaS launch-readiness audit. Atomic: one developer, one session. Work order: strictly P0.1 → P3.12 (no forward dependencies).
Severity: low | Category: correctness | Phase: P3.8
Problem
_dispatch_pr_merged_webhookconstructsGitHubIntegration()(eagerly opening an AsyncClient) only to readgh.repo(justos.getenv('GITHUB_REPO')), then discards it withoutclose()— a socket leak per merge.Evidence
codeframe/ui/routers/pr_v2.py:204Acceptance criteria
Read
GITHUB_REPOfrom env directly, ortry/finally: await gh.close().Dependencies
None
Filed from the SaaS launch-readiness audit. Atomic: one developer, one session. Work order: strictly P0.1 → P3.12 (no forward dependencies).