fix: split github contracts from script check
This commit is contained in:
@@ -14,7 +14,7 @@ const parsed = Bun.YAML.parse(readFileSync(configPath, "utf8")) as {
|
||||
minOwnerConcurrency?: number;
|
||||
defaultTempUnschedulable?: {
|
||||
enabled?: boolean;
|
||||
rules?: Array<{ statusCode?: number; keywords?: string[]; durationMinutes?: number }>;
|
||||
rules?: Array<{ statusCode?: number; keywords?: string[]; durationMinutes?: number; description?: string }>;
|
||||
};
|
||||
};
|
||||
profiles?: { entries?: Array<{ profile?: string; accountName?: string; capacity?: number; loadFactor?: number; openaiResponsesWebSocketsV2Mode?: string | null }> };
|
||||
@@ -28,6 +28,8 @@ const defaultPriority = parsed.pool?.defaultAccountPriority ?? 0;
|
||||
const defaultCapacity = parsed.pool?.defaultAccountCapacity ?? 0;
|
||||
const defaultLoadFactor = parsed.pool?.defaultAccountLoadFactor ?? 0;
|
||||
const desiredCapacity = entries.reduce((total, entry) => total + (entry.capacity ?? defaultCapacity), 0);
|
||||
const explicitMinOwnerConcurrency = parsed.pool?.minOwnerConcurrency;
|
||||
const resolvedMinOwnerConcurrency = explicitMinOwnerConcurrency ?? desiredCapacity;
|
||||
const allowedWebSocketModes = new Set(["off", "ctx_pool", "passthrough"]);
|
||||
const wsEnabledEntries = entries.filter((entry) => entry.openaiResponsesWebSocketsV2Mode && entry.openaiResponsesWebSocketsV2Mode !== "off");
|
||||
const localWsEnabled = parsed.localCodex?.supportsWebSockets === true || parsed.localCodex?.responsesWebSocketsV2 === true;
|
||||
@@ -56,7 +58,21 @@ if (localWsEnabled) {
|
||||
} else {
|
||||
assertCondition(wsEnabledEntries.length === 0, "local Codex WebSocket transport disabled means all account WSv2 capability declarations must be off or omitted", { localCodex: parsed.localCodex, wsEnabledEntries });
|
||||
}
|
||||
assertCondition((parsed.pool?.minOwnerConcurrency ?? 0) >= desiredCapacity, "pool owner concurrency must not bottleneck the declared account capacity set", { minOwnerConcurrency: parsed.pool?.minOwnerConcurrency, desiredCapacity });
|
||||
assertCondition(
|
||||
explicitMinOwnerConcurrency === undefined || (Number.isInteger(explicitMinOwnerConcurrency) && explicitMinOwnerConcurrency > 0),
|
||||
"explicit pool owner concurrency override must be a positive integer when declared",
|
||||
{ minOwnerConcurrency: explicitMinOwnerConcurrency },
|
||||
);
|
||||
assertCondition(
|
||||
resolvedMinOwnerConcurrency >= desiredCapacity,
|
||||
"pool owner concurrency must auto-resolve or be configured to cover the declared account capacity set",
|
||||
{
|
||||
minOwnerConcurrency: explicitMinOwnerConcurrency,
|
||||
minOwnerConcurrencySource: explicitMinOwnerConcurrency === undefined ? "auto-capacity-sum" : "yaml",
|
||||
resolvedMinOwnerConcurrency,
|
||||
desiredCapacity,
|
||||
},
|
||||
);
|
||||
if (parsed.pool?.defaultTempUnschedulable?.enabled === true) {
|
||||
assertCondition(rules.length > 0, "enabled temporary unschedulable policy must declare rules", parsed.pool?.defaultTempUnschedulable);
|
||||
assertCondition(rules.every((rule) => Number.isInteger(rule.statusCode) && (rule.statusCode ?? 0) >= 100 && (rule.statusCode ?? 0) <= 599), "temporary unschedulable rules must declare valid HTTP status codes", rules);
|
||||
@@ -116,7 +132,7 @@ console.log(JSON.stringify({
|
||||
ok: true,
|
||||
checks: [
|
||||
"routing config is schema-valid without profile-specific test gates",
|
||||
"pool owner concurrency covers the YAML account capacity set",
|
||||
"pool owner concurrency auto-resolves or covers the YAML account capacity set",
|
||||
"profile load factor overrides are YAML-controlled positive integers",
|
||||
"public Caddy response-header timeout is long enough for Codex compact",
|
||||
"optional WebSocket mode overrides use supported values",
|
||||
|
||||
Reference in New Issue
Block a user