chore(ci): add quota + 6 covered chatCore leaves to stryker mutate (QG v2 Fase 9 T5 Fase 3 follow-up) (#4209)

Integrated into release/v3.8.29 (round 7). CI-only: stryker mutate += quotaScoring/quotaStrategies (batch f) + 6 covered chatCore leaves (batch g); nightly matrix 5->7 batches. Follow-up to #4205/#4204.
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-06-18 20:16:47 -03:00
committed by GitHub
parent 4c6cb45a6a
commit 8a0863c5a8
2 changed files with 33 additions and 12 deletions

View File

@@ -21,9 +21,11 @@ jobs:
# big modules are now ISOLATED into their own batches (a=auth, b=accountFallback).
# - Onda 3 / Fase 9 T5 re-add: combo.ts was split into 11 leaves; the 8 well-covered
# combo/* leaves are back in `mutate` (covered by the 24 combo-*.test.ts), grouped into
# 2 batches (d=heavy, e=light). chatCore/* leaves + quotaScoring/quotaStrategies (#4204)
# are follow-ups — see _mutate_godfiles_excluded_comment in stryker.conf.json.
# 5 PARALLEL batches, each overriding the mutate set via `--mutate` (Stryker 9 CLI:
# 2 batches (d=heavy, e=light). After #4204 (D7b) merged, the reset-aware quota pair
# quotaScoring/quotaStrategies was added as batch f. A covering-test audit then added the
# 6 chatCore/* leaves with direct unit coverage as batch g; the other 9 chatCore leaves
# remain a follow-up — see _mutate_godfiles_excluded_comment in stryker.conf.json.
# 7 PARALLEL batches, each overriding the mutate set via `--mutate` (Stryker 9 CLI:
# `-m, --mutate <comma-list>`; the conf's `mutate[]` remains the local-run default/union).
# Each batch targets <180min; full coverage every night in parallel (~180min wall-clock).
# The `incremental` cache (per-batch key) makes runs after the first cold one much cheaper,
@@ -44,6 +46,10 @@ jobs:
mutate: "open-sse/services/combo/comboStructure.ts,open-sse/services/combo/autoStrategy.ts,open-sse/services/combo/validateQuality.ts"
- name: e
mutate: "open-sse/services/combo/shadowRouting.ts,open-sse/services/combo/targetSorters.ts,open-sse/services/combo/comboPredicates.ts,open-sse/services/combo/rrState.ts,open-sse/services/combo/comboData.ts"
- name: f
mutate: "open-sse/services/combo/quotaScoring.ts,open-sse/services/combo/quotaStrategies.ts"
- name: g
mutate: "open-sse/handlers/chatCore/comboContextCache.ts,open-sse/handlers/chatCore/idempotency.ts,open-sse/handlers/chatCore/passthroughHelpers.ts,open-sse/handlers/chatCore/responseHeaders.ts,open-sse/handlers/chatCore/sanitization.ts,open-sse/handlers/chatCore/upstreamTimeouts.ts"
timeout-minutes: 180
steps:
- uses: actions/checkout@v6

View File

@@ -196,19 +196,26 @@
"2026-06-18 (Onda 3 / Fase 9 T5 re-add): the combo.ts god-file was split into 11 small",
"leaf modules under open-sse/services/combo/ (PRs #4162/#4175/#4186/#4196/#4204). The",
"routing LOGIC that justified combo.ts being in `mutate` now lives in those leaves, so the",
"8 well-covered combo/* leaves are ADDED back to `mutate` here (comboStructure/autoStrategy/",
"validateQuality/shadowRouting/targetSorters/comboPredicates/rrState/comboData). They are",
"covered by the 24 combo-*.test.ts files already in tap.testFiles. types.ts is omitted",
"(pure type declarations produce 0 mutants).",
"10 well-covered combo/* leaves are ADDED back to `mutate` here (comboStructure/autoStrategy/",
"validateQuality/shadowRouting/targetSorters/comboPredicates/rrState/comboData + the reset-aware",
"quota pair quotaScoring/quotaStrategies, added after #4204 (D7b) merged). They are covered by",
"the 24 combo-*.test.ts files already in tap.testFiles (quota by combo-prescreen/combo-config/",
"combo-strategy-fallbacks). types.ts is omitted (pure type declarations produce 0 mutants).",
"",
"chatCore/* leaves: a covering-test audit (do any tap.testFiles reference each leaf's exported",
"function names?) found 6 with direct unit coverage — comboContextCache/idempotency/",
"passthroughHelpers/responseHeaders/sanitization/upstreamTimeouts — ADDED here (batch g).",
"",
"STILL EXCLUDED (follow-ups, NOT in `mutate` yet):",
" - combo.ts + chatCore.ts barrels: their handleComboChat/handleChatCore CORES were not",
" split (out of scope — Fase 3 ChatCoreContext refactor). The barrels are now thin-ish",
" but still large; keep excluded until the cores are split.",
" - combo/quotaScoring.ts + combo/quotaStrategies.ts: in PR #4204 (D7b), not yet merged.",
" Add them here once #4204 lands (they are covered by combo-prescreen/combo-config tests).",
" - chatCore/* leaves (15 modules): thinner test coverage (only ~7 chatcore-*.test.ts in",
" tap.testFiles); add after a covering-test audit so they don't all 'survive (no coverage)'.",
" - the other 9 chatCore/* leaves (executorHelpers/headers/logTruncation/memoryExtraction/",
" memorySkillsInjection/nonStreamingSse/passthroughToolNames/semanticCache/telemetryHelpers):",
" no tap.testFiles reference their exported symbols by name — they are only exercised",
" TRANSITIVELY via handleChatCore, which the tap unit tests may not fully drive. Adding them",
" blindly would produce 'survived (no coverage)' noise. Add each once it gains a dedicated",
" unit test (or after a Stryker --dryRunOnly confirms the perTest map covers it).",
"See project memory: Quality Gate v2 / Fase 9 (project-combo-split)."
],
"mutate": [
@@ -225,7 +232,15 @@
"open-sse/services/combo/targetSorters.ts",
"open-sse/services/combo/comboPredicates.ts",
"open-sse/services/combo/rrState.ts",
"open-sse/services/combo/comboData.ts"
"open-sse/services/combo/comboData.ts",
"open-sse/services/combo/quotaScoring.ts",
"open-sse/services/combo/quotaStrategies.ts",
"open-sse/handlers/chatCore/comboContextCache.ts",
"open-sse/handlers/chatCore/idempotency.ts",
"open-sse/handlers/chatCore/passthroughHelpers.ts",
"open-sse/handlers/chatCore/responseHeaders.ts",
"open-sse/handlers/chatCore/sanitization.ts",
"open-sse/handlers/chatCore/upstreamTimeouts.ts"
],
"_ignorePatterns_comment": [
"ignorePatterns = files NOT copied into the Stryker sandbox. It does NOT scope",