From b7c39aa4d4e0813bb63919b70ff845976b514181 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 19 Mar 2026 13:56:40 -0700 Subject: [PATCH] fix(ci): isolate config doc baseline heap pressure --- src/config/doc-baseline.ts | 1 + src/config/schema.ts | 16 +++++++++++----- test/fixtures/test-parallel.behavior.json | 4 ++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/config/doc-baseline.ts b/src/config/doc-baseline.ts index b90b42f3b78..2f6031589d8 100644 --- a/src/config/doc-baseline.ts +++ b/src/config/doc-baseline.ts @@ -497,6 +497,7 @@ async function loadBundledConfigSchemaResponse(): Promise logConfigDocBaselineDebug(`imported ${channelPlugins.length} bundled channel plugins`); return buildConfigSchema({ + cache: false, plugins: manifestRegistry.plugins .filter((plugin) => plugin.origin === "bundled") .map((plugin) => ({ diff --git a/src/config/schema.ts b/src/config/schema.ts index c81e08ea3c3..2329d8fbc78 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -450,6 +450,7 @@ function buildBaseConfigSchema(): ConfigSchemaResponse { export function buildConfigSchema(params?: { plugins?: PluginUiMetadata[]; channels?: ChannelUiMetadata[]; + cache?: boolean; }): ConfigSchemaResponse { const base = buildBaseConfigSchema(); const plugins = params?.plugins ?? []; @@ -457,10 +458,13 @@ export function buildConfigSchema(params?: { if (plugins.length === 0 && channels.length === 0) { return base; } - const cacheKey = buildMergedSchemaCacheKey({ plugins, channels }); - const cached = mergedSchemaCache.get(cacheKey); - if (cached) { - return cached; + const useCache = params?.cache !== false; + const cacheKey = useCache ? buildMergedSchemaCacheKey({ plugins, channels }) : null; + if (cacheKey) { + const cached = mergedSchemaCache.get(cacheKey); + if (cached) { + return cached; + } } const mergedWithoutSensitiveHints = applyHeartbeatTargetHints( applyChannelHints(applyPluginHints(base.uiHints, plugins), channels), @@ -480,7 +484,9 @@ export function buildConfigSchema(params?: { schema: mergedSchema, uiHints: mergedHints, }; - setMergedSchemaCache(cacheKey, merged); + if (cacheKey) { + setMergedSchemaCache(cacheKey, merged); + } return merged; } diff --git a/test/fixtures/test-parallel.behavior.json b/test/fixtures/test-parallel.behavior.json index 9d4d5e58f40..3f7f895a3fb 100644 --- a/test/fixtures/test-parallel.behavior.json +++ b/test/fixtures/test-parallel.behavior.json @@ -23,6 +23,10 @@ "file": "src/cli/command-secret-gateway.test.ts", "reason": "Clean in isolation, but can hang after sharing the broad lane." }, + { + "file": "src/config/doc-baseline.test.ts", + "reason": "Builds the full bundled config schema graph and is safer outside the shared unit-fast heap." + }, { "file": "src/memory/manager.get-concurrency.test.ts", "reason": "Memory manager cache concurrency coverage can spike shared unit-fast heap on Linux Node 24."