From 4fc0cb7ec4a6f6a56d84b67c24b3e1584388c28d Mon Sep 17 00:00:00 2001 From: Ashley Mensah Date: Tue, 28 Apr 2026 17:30:18 +0200 Subject: [PATCH] fix(ci): pace API requests to avoid rate limit thrashing --- .../scripts/classify-candidates.mjs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/issue-resolution/scripts/classify-candidates.mjs b/.github/issue-resolution/scripts/classify-candidates.mjs index 6a35712ac..336187da3 100644 --- a/.github/issue-resolution/scripts/classify-candidates.mjs +++ b/.github/issue-resolution/scripts/classify-candidates.mjs @@ -198,10 +198,21 @@ function enforcePolicy(modelOut, pre) { console.log(`Classifying ${candidates.length} candidates with ${MODEL}...\n`); +// 15 req/min limit → 1 request every 4s. Use 4.5s for safety margin. +const PACE_MS = 4500; +let lastRequestTime = 0; + +async function paced(fn) { + const elapsed = Date.now() - lastRequestTime; + if (elapsed < PACE_MS) await sleep(PACE_MS - elapsed); + lastRequestTime = Date.now(); + return fn(); +} + const decisions = []; for (const candidate of candidates) { const pre = preScore(candidate); - const modelOut = await callGitHubModel(candidate); + const modelOut = await paced(() => callGitHubModel(candidate)); const finalDecision = enforcePolicy(modelOut, pre); decisions.push({