From 06a9ed702fdeb8a40cbd05a115e32631aac3072b Mon Sep 17 00:00:00 2001 From: Codex Date: Sat, 27 Jun 2026 08:48:49 +0000 Subject: [PATCH] fix: use scenario run budget for sentinel scheduler --- scripts/web-probe-sentinel-scheduler.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/web-probe-sentinel-scheduler.ts b/scripts/web-probe-sentinel-scheduler.ts index 7bc38aed..acc441c8 100644 --- a/scripts/web-probe-sentinel-scheduler.ts +++ b/scripts/web-probe-sentinel-scheduler.ts @@ -156,14 +156,18 @@ function sentinelSchedules(spec: ReturnType, const scenarioCadences = enabledScenarios .map((scenario) => typeof scenario.cadence === "string" ? parseDurationSeconds(scenario.cadence) : null) .filter((value): value is number => value !== null && value > 0); + const scenarioTimeouts = enabledScenarios + .map((scenario) => numberAtNullable(scenario, "maxRunSeconds")) + .filter((value): value is number => value !== null && value > 0); const runtimeInterval = numberAt(runtime, "scheduler.intervalMs"); const yamlTimeout = numberAtNullable(cicd, "targetValidation.maxSeconds"); + const schedulerTimeout = scenarioTimeouts.length > 0 ? Math.max(...scenarioTimeouts) : null; return { sentinelId: sentinel.id, enabled: row.enabled && sentinel.enabled && enabledScenarios.length > 0, publicBaseUrl: stringAt(publicExposure, "publicBaseUrl").replace(/\/+$/u, ""), cadenceSeconds: Math.min(...(scenarioCadences.length > 0 ? scenarioCadences : [Math.max(1, Math.round(runtimeInterval / 1000))])), - timeoutSeconds: options.timeoutSeconds ?? yamlTimeout ?? 300, + timeoutSeconds: options.timeoutSeconds ?? schedulerTimeout ?? yamlTimeout ?? 300, scenarioIds: enabledScenarios.map((scenario) => String(scenario.id || sentinel.id)), }; });