Skip to content

test(sse): repair two base-red gates on release/v3.8.49 - #8490

Merged
diegosouzapw merged 4 commits into
diegosouzapw:release/v3.8.49from
backryun:fix/base-red-usage-buffer
Jul 25, 2026
Merged

diegosouzapw merged 4 commits into
diegosouzapw:release/v3.8.49from
backryun:fix/base-red-usage-buffer

Conversation

@backryun

Copy link
Copy Markdown
Contributor

Why

release/v3.8.49 is red at its own HEAD (36f8fd10) — Quality Gates and Release-Green (continuous) both fail there, with no PR involved. Every PR opened against this base therefore shows the same four red checks regardless of content:

✖ No new ESLint warnings
✖ Fast Quality Gates
✖ Unit Tests fast-path (2/4)
✖ Unit Tests fast-path (4/4)

Ownership check before touching anything — of the base-red triage already in flight, none of these two causes is covered: #8480 is the compression ladder, #8481 the antigravity catalog, #8482 the resilience/translator regressions (its eslint-suppressions.json hunk adds an entry for oauth-refresh-connection-dedup-8059.test.ts, which has no any on this base — that's for its own change, not this drift). Shard 2/4 (combo-quota-share-cooldown-wait) does look like #8482's; it is not touched here.

1. Unit shard 4/4 — chatcore-client-usage-buffer.test.ts, 5/5 failing

#8331/#8356 (e8719783e) inserted an options parameter between clientResponseFormat and deps:

applyClientUsageBuffer(translatedResponse, body, clientResponseFormat, options = {}, deps = DEFAULT_DEPS)

The five call sites still passed deps fourth, so the injected spies landed in the options slot and the real implementations ran — every calls.*.length assertion saw 0 (0 !== 1). The Parameters<typeof applyClientUsageBuffer>[3] cast inside makeDeps() is what let this compile and reach the branch.

Call sites updated to (resp, body, format, {}, deps); the cast repointed to [4].

Two cases added for the parameter that caused the break, since nothing at this layer exercised it:

2. No new ESLint warnings — claude-to-openai-think-close-5123.test.ts, 4 errors

Its eslint-suppressions.json entry allows count: 2, but the file had grown to four (chunk: any) callbacks. Suppressions are count-based, so the two extra ones were unsuppressed and npm run lint — the exact command the gate runs — exited 1.

Bumping the frozen count would have hidden it again, so the cause is fixed instead: collectChunks() now returns StreamChunk[] rather than unknown[], narrowing once at the boundary so all four callbacks need no annotation at all. With zero any left, the suppression entry is stale and is removed — a small ratchet improvement rather than a bigger allowlist.

Validation

All on a clean worktree of the base commit:

before after
npm run lint 4 errors clean
chatcore-client-usage-buffer.test.ts 0 pass / 5 fail 7 / 7
claude-to-openai-think-close-5123.test.ts 3 / 3 3 / 3

Test files plus one allowlist deletion; no production code changes.

Note

I hit this while validating a TS7-readiness series (#8473, #8483, #8485, #8489 — tracked in #8484): all four carry these same four red checks, none of which they cause. Merging this should clear two of them for every open PR on this base, not just mine.

`release/v3.8.49` is red at its own HEAD (36f8fd1) — `Quality Gates` and
`Release-Green (continuous)` both fail — so every PR opened against it inherits
four failing checks regardless of content. Two of those causes had no owner:
diegosouzapw#8480/diegosouzapw#8481/diegosouzapw#8482 cover the compression ladder, the antigravity catalog, and the
resilience/translator regressions respectively, none of them these.

1. `chatcore-client-usage-buffer.test.ts` — 5/5 failing.

   diegosouzapw#8331/diegosouzapw#8356 (e871978) inserted an `options` parameter between
   `clientResponseFormat` and `deps` on `applyClientUsageBuffer()`. The five call
   sites here still passed `deps` in the fourth position, so the injected spies
   landed in the `options` slot and the real implementations ran — every
   `calls.*.length` assertion saw 0. The `Parameters<typeof
   applyClientUsageBuffer>[3]` cast in `makeDeps()` masked the type error, which is
   why it reached the branch. Call sites updated to `(resp, body, format, {}, deps)`
   and the cast repointed to `[4]`.

   Two cases added for the parameter that caused this, since nothing at this layer
   exercised it: `preserveContextBudgetInVisibleUsage` re-folds `context_budget_*`
   into the visible fields for the Claude-Code path, and the default path keeps the
   real unbuffered diegosouzapw#8331 numbers.

2. `claude-to-openai-think-close-5123.test.ts` — 4 unsuppressed
   `@typescript-eslint/no-explicit-any` errors, failing `npm run lint`.

   Its suppression entry allows `count: 2` but the file had grown to four `(chunk:
   any)` callbacks. Rather than raise the frozen count, the cause is fixed:
   `collectChunks()` returns `StreamChunk[]` instead of `unknown[]`, narrowing once
   at the boundary so all four callbacks need no annotation. The suppression entry
   is then stale and removed, which ratchets the file to zero.

Test-only plus one allowlist deletion; no production code. Verified on a clean
worktree of the base commit: `npm run lint` clean (was 4 errors),
`chatcore-client-usage-buffer` 7/7 (was 0/5), `claude-to-openai-think-close-5123`
3/3.
@backryun
backryun requested a review from diegosouzapw as a code owner July 24, 2026 23:03
….8.49

`check:file-size` fails on release/v3.8.49 at its own HEAD (36f8fd1), which is
what turns `Fast Quality Gates` red for every PR against this base:

  tokenHealthCheck.ts   832 -> 841
  chat.ts              1865 -> 1866
  auth.ts              2475 -> 2486
  accountFallback.ts   1941 -> 1960
  combo.ts             3630 -> 3642

None of these files is touched by this PR. The growth was inherited from already
merged PRs that did not bump their entries, so there is no offending branch left
to fix — the same situation the baseline already records under
`_rebaseline_2026_07_02_5798_release_green`, and the procedure it documents is to
raise the frozen values with a justification note.

Raised to the current base values only. The files stay frozen and cannot grow
further; an in-flight PR that adds lines to them bumps its own entry as usual
(diegosouzapw#8482 touches accountFallback.ts and combo.ts and will need that).
@backryun

Copy link
Copy Markdown
Contributor Author

Pushed a third base-red cause: check:file-size, which is what turns Fast Quality Gates red.

Five files exceed their frozen line counts on release/v3.8.49 at its own HEAD — none of them touched by this PR:

file frozen actual
src/lib/tokenHealthCheck.ts 832 841
src/sse/handlers/chat.ts 1865 1866
src/sse/services/auth.ts 2475 2486
open-sse/services/accountFallback.ts 1941 1960
open-sse/services/combo.ts 3630 3642

Growth inherited from already-merged PRs that did not bump their entries, so there is no offending branch left to fix. The baseline already records this exact scenario under _rebaseline_2026_07_02_5798_release_green ("base-red for EVERY PR->release … no offending PR branch left to fix"), and the documented remedy is to raise the frozen values with a justification note — which is what this commit does, to the current base values only. The files stay frozen; an in-flight PR that adds lines bumps its own entry as usual.

Locally on the base commit: check:file-size, check:build-scope, check:pack-policy, typecheck:core, npm run lint all green.

Remaining after this PR

Unit Tests fast-path (2/4) — tests/unit/serial/combo-quota-share-cooldown-wait-timing.test.ts, the case "non quota-share (priority): short 429 cooldown → waits and re-dispatches (2nd pass 200)". It fails on a clean base checkout too, and it exercises the combo cooldown-wait path that #8482 is already rewriting (lockoutHintVerified → lockoutHintMs comparison logic). Left alone deliberately so as not to race that PR.

`check:mutation-test-coverage --strict` fails on release/v3.8.49 at its own HEAD:
11 unit tests that cover mutated modules are absent from `stryker.conf.json`
`tap.testFiles`, so their mutant kills do not count. The gate does not self-heal —
it names the exact files to add.

  open-sse/services/accountFallback.ts  + 8247-accountfallback-model-unhealthy,
                                          8248-accountfallback-nvidia-degraded,
                                          model-lockout-exact-cooldown-cap,
                                          repro-antigravity-404-family-cooldown-hijack
  src/sse/services/auth.ts              + 7993-noauth-proxy-routing,
                                          8200-perplexity-web-401-cooldown,
                                          sse-auth-antigravity-credits
  src/server/authz/routeGuard.ts        + authz/route-guard-vnc-session-local-only
  open-sse/utils/error.ts               + error-sensitive-redaction
  open-sse/utils/publicCreds.ts         + adobe-firefly
  src/shared/utils/circuitBreaker.ts    + 8332-combo-vision-fallback

None is a file this PR touches, and the gate reports the identical 11 on a worktree
carrying none of these base-red fixes. Additions only (11 insertions, 0 deletions);
the array stays sorted. This widens what the mutation run accounts for rather than
relaxing anything.
@backryun

backryun commented Jul 24, 2026 •

Copy link
Copy Markdown
Contributor Author

@diegosouzapw — owner decision needed on the complexity ratchet. It is the last base-red gate on this branch and I did not touch it, because every prior rebaseline of this metric is recorded as owner-approved.

State

check:complexity-ratchets fails on release/v3.8.49 at its own HEAD (36f8fd1):

metric baseline measured delta file
complexity (cyclomatic + max-lines-per-function) 2130 2169 +39 config/quality/complexity-baseline.json
cognitive-complexity 951 956 +5 config/quality/quality-baseline.json

Trust-but-verify: both numbers are identical on a worktree carrying none of this PR's changes, so this PR is complexity-net-zero — it only touches two test files, eslint-suppressions.json, file-size-baseline.json, and stryker.conf.json.

Why it needs you

The precedent is explicit and recent:

_rebaseline_2026_07_20_owner_night_drain: "Owner-approved (chat, 2026-07-20 ~00:50): 2072->2130. The day's 17 merged PRs consumed the entire slack … Owner chose a wide margin for the remainder of the v3.8.49 cycle instead of per-PR extraction."

That margin is now spent — the cycle has run 39 past it. Same class as before (inherited merge-burst drift; the ratchet does not run on the PR→release fast path, so it accrues unmeasured), but raising a complexity ceiling is a standing policy loosening, not a mechanical unblock like the file-size and stryker entries in this PR, so I'm not doing it unilaterally.

Where the drift sits

Concentrated, if you'd rather extract than raise:

file cyclomatic/max-lines cognitive
open-sse/handlers/imageGeneration.ts 27 14
open-sse/executors/chatgpt-web.ts 20 11
open-sse/services/adobeFireflyClient.ts 18 12
src/app/(dashboard)/dashboard/usage/components/EvalsTab.tsx 14 —
open-sse/services/combo.ts 11 6

Options

  1. Raise with margin — e.g. complexity 2130 → 2195 and cognitive 951 → 965 (measured + ~26 / +9 headroom for the rest of the cycle). Mirrors the 2026-07-20 decision. I'll push it here with a justification note the moment you say a number.
  2. Raise to exactly measured — complexity 2169, cognitive 956. Tightest, but the next merge re-reds the queue.
  3. Leave it and let the v3.8.49 release close rebaseline — the file-size note already says the captain's rebaseline-at-release supersedes these; if the release is near, this PR merges with one known-red gate.
  4. Extract instead — the three files above account for ~65 of the cyclomatic violations. Separate PR, not this unblock.

I'd suggest (1): it matches your last call on this exact metric and clears the queue for every PR on this base, not just mine. Numbers are yours to set.

Rest of the PR

The other three base-red causes are fixed and verified green locally on the base commit: npm run lint (was 4 errors), check:file-size (5 inherited overages), check:mutation-test-coverage --strict (11 unregistered covering tests), plus chatcore-client-usage-buffer.test.ts back to 7/7 from 0/5. The remaining Unit Tests fast-path (2/4) is the combo cooldown-wait case that #8482 is already rewriting — deliberately untouched.

@diegosouzapw

Copy link
Copy Markdown
Owner

Thanks for the thorough diagnosis here — this is exactly the kind of base-red triage we want (root-caused to the actual signature change from #8331/#8356, not just re-suppressed).

I reproduced all three claims independently on a clean worktree of the base tip:

  • chatcore-client-usage-buffer.test.ts: confirmed the old 4-arg call sites break under the current (resp, body, format, options, deps) signature (0 !== 1 / TypeError), and your fix brings it to 7/7 including the two new preserveContextBudgetInVisibleUsage cases.
  • claude-to-openai-think-close-5123.test.ts: confirmed 4 real any usages vs. the frozen count: 2; your StreamChunk narrowing brings it to a clean lint run and 3/3 passing.
  • The file-size-baseline.json and stryker.conf.json chore commits: confirmed both gates fail on the base tip exactly as described and pass after your changes.

One heads-up: I independently opened #8505 about an hour after your last commit here, fixing the same eslint-suppression entry (different approach — a local OpenAIChatChunk type vs. your StreamChunk). Since your PR predates it and also covers the file-size and stryker fixes that #8505 doesn't touch, we'll merge this one and just rebase the small overlapping hunk if #8505 lands first — no action needed on your end unless GitHub flags a conflict, in which case a quick rebase on your branch will do it.

No production code touched, no missing tests, nothing else to flag. Planning to merge as-is.

…rrent base tip

The entry frozen in this PR (1960) was the value at 36f8fd1; the base has
since advanced to 1cafd32 and the file is 1966 there, so check:file-size
would still have been red on the merge commit. Re-measured to 1966.

Same inherited drift the note already documents: check:file-size does not run
on the PR->release fast path, so growth accrues unmeasured between release
rebaselines. The other four entries still match the current tip
(tokenHealthCheck 841, chat 1866, auth 2486, combo frozen 3642 >= 3640).
@backryun

Copy link
Copy Markdown
Contributor Author

@diegosouzapw — thanks for the independent reproduction on all three, and for the #8505 heads-up.

Pushed one more commit, because this PR as you reviewed it would still have left check:file-size red on the merge commit.

The accountFallback.ts entry I froze here was 1960 — the value at 36f8fd10, the base tip when I measured. The base has since advanced to 1cafd328c and the file is 1966 there, so the cap was already stale by 6 lines a few hours after I set it. Re-measured to 1966 and extended the baseline note to record why.

I re-checked the other four against the current tip; all still correct:

file frozen tip actual
src/lib/tokenHealthCheck.ts 841 841
src/sse/handlers/chat.ts 1866 1866
src/sse/services/auth.ts 2486 2486
open-sse/services/accountFallback.ts 1960 → 1966 1966
open-sse/services/combo.ts 3642 3640

check:file-size is green on the branch again.

Worth naming the pattern rather than just patching it: this is the same structural cause the note already cites — check:file-size does not run on the PR→release fast path, so growth accrues unmeasured between release rebaselines. Any freeze-to-exact-current-value has a shelf life measured in hours while the cycle is busy. So this entry can go stale again before merge. If it does, I'll re-measure — but merging promptly, or letting the release-captain rebaseline absorb it, is the more durable answer than me chasing the tip.

On #8505: no conflict from my side either way. It prunes the same suppression entry with a local OpenAIChatChunk; I used StreamChunk. Whichever lands first, I'll rebase the overlapping hunk out of this PR — the file-size and stryker commits here are untouched by it.

Still open from my side: the complexity-ratchet decision in my comment above (2130 → 2169 measured, cognitive 951 → 956, both net-zero from this PR). I left it alone deliberately. Since posting it I noticed the release-green bot's own footer on #8007 classifies exactly this drift as "expected mid-cycle and rebaselined at release — NOT a contributor concern", which reads like the answer is "leave it to the captain". If that's right, no action needed and I'll stop raising it — just confirming, because check:complexity-ratchets is a separate gate from the release-green validation that footer describes, and it is the last one red here.

@diegosouzapw
diegosouzapw merged commit 7a8f915 into diegosouzapw:release/v3.8.49 Jul 25, 2026
5 checks passed
@backryun

Copy link
Copy Markdown
Contributor Author

Correction to my comment above, now that this has merged.

I wrote — and put into the _rebaseline_2026_07_25_v3849_basered_filesize note that shipped with this PR — that "check:file-size does not run on the PR→release fast path, so growth accrues unmeasured". That is wrong. check:file-size is a step in the fast-gates job of quality.yml and runs on every PR→release/**. I inherited the claim from the older _rebaseline_2026_06_29_v3841_release note and repeated it without checking the workflow.

The drift is real; the reason is different. These gates compare absolute values against the frozen file rather than the PR's own delta, so once the base is over a cap, every PR is red on that gate — which is why red gets merged past, which is how the next unbumped growth lands. This PR is itself an example: it merged with Fast Quality Gates and No new ESLint warnings both still FAILURE, and within hours providers/page.tsx (1990 > 1927, from #8349) and tokenHealthCheck.ts (843 > 841) were over.

Traced it end-to-end and filed #8522 with a proposal to make the PR-time comparison base-relative, keeping the absolute check for push to release/** and nightly release-green. The stale note text should be corrected too — I'll fold that into whichever PR touches the baseline next rather than opening one just for a comment.

@backryun
backryun deleted the fix/base-red-usage-buffer branch July 25, 2026 07:48
diegosouzapw pushed a commit that referenced this pull request Jul 25, 2026
…egistry.test.ts (#8544)

* chore(ci): resync stale no-explicit-any suppression count for proxy-registry.test.ts

tests/unit/proxy-registry.test.ts is frozen at 55 no-explicit-any
violations but only has 54 since #8447 (d7f9475) removed one. ESLint
fails the run with "There are suppressions left that do not occur
anymore", making `npm run lint` exit 2 on release/v3.8.49 for every PR
that branches off it.

Same class as #8007 / #8490, different file: no code to fix here — the
count simply drifted down, so this resyncs it via --prune-suppressions.

Base-red inherited from release/v3.8.49; both the suppressions file and
proxy-registry.test.ts are byte-identical to that branch.

* docs(changelog): add fragment for this PR
@diegosouzapw diegosouzapw mentioned this pull request Jul 28, 2026
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
…#8490)

* test(sse): repair two base-red gates on release/v3.8.49

`release/v3.8.49` is red at its own HEAD (d61504d) — `Quality Gates` and
`Release-Green (continuous)` both fail — so every PR opened against it inherits
four failing checks regardless of content. Two of those causes had no owner:
diegosouzapw#8480/diegosouzapw#8481/diegosouzapw#8482 cover the compression ladder, the antigravity catalog, and the
resilience/translator regressions respectively, none of them these.

1. `chatcore-client-usage-buffer.test.ts` — 5/5 failing.

   diegosouzapw#8331/diegosouzapw#8356 (f698fec) inserted an `options` parameter between
   `clientResponseFormat` and `deps` on `applyClientUsageBuffer()`. The five call
   sites here still passed `deps` in the fourth position, so the injected spies
   landed in the `options` slot and the real implementations ran — every
   `calls.*.length` assertion saw 0. The `Parameters<typeof
   applyClientUsageBuffer>[3]` cast in `makeDeps()` masked the type error, which is
   why it reached the branch. Call sites updated to `(resp, body, format, {}, deps)`
   and the cast repointed to `[4]`.

   Two cases added for the parameter that caused this, since nothing at this layer
   exercised it: `preserveContextBudgetInVisibleUsage` re-folds `context_budget_*`
   into the visible fields for the Claude-Code path, and the default path keeps the
   real unbuffered diegosouzapw#8331 numbers.

2. `claude-to-openai-think-close-5123.test.ts` — 4 unsuppressed
   `@typescript-eslint/no-explicit-any` errors, failing `npm run lint`.

   Its suppression entry allows `count: 2` but the file had grown to four `(chunk:
   any)` callbacks. Rather than raise the frozen count, the cause is fixed:
   `collectChunks()` returns `StreamChunk[]` instead of `unknown[]`, narrowing once
   at the boundary so all four callbacks need no annotation. The suppression entry
   is then stale and removed, which ratchets the file to zero.

Test-only plus one allowlist deletion; no production code. Verified on a clean
worktree of the base commit: `npm run lint` clean (was 4 errors),
`chatcore-client-usage-buffer` 7/7 (was 0/5), `claude-to-openai-think-close-5123`
3/3.

* chore(ci): rebaseline five inherited file-size overages on release/v3.8.49

`check:file-size` fails on release/v3.8.49 at its own HEAD (d61504d), which is
what turns `Fast Quality Gates` red for every PR against this base:

  tokenHealthCheck.ts   832 -> 841
  chat.ts              1865 -> 1866
  auth.ts              2475 -> 2486
  accountFallback.ts   1941 -> 1960
  combo.ts             3630 -> 3642

None of these files is touched by this PR. The growth was inherited from already
merged PRs that did not bump their entries, so there is no offending branch left
to fix — the same situation the baseline already records under
`_rebaseline_2026_07_02_5798_release_green`, and the procedure it documents is to
raise the frozen values with a justification note.

Raised to the current base values only. The files stay frozen and cannot grow
further; an in-flight PR that adds lines to them bumps its own entry as usual
(diegosouzapw#8482 touches accountFallback.ts and combo.ts and will need that).

* chore(ci): register 11 covering unit tests in stryker tap.testFiles

`check:mutation-test-coverage --strict` fails on release/v3.8.49 at its own HEAD:
11 unit tests that cover mutated modules are absent from `stryker.conf.json`
`tap.testFiles`, so their mutant kills do not count. The gate does not self-heal —
it names the exact files to add.

  open-sse/services/accountFallback.ts  + 8247-accountfallback-model-unhealthy,
                                          8248-accountfallback-nvidia-degraded,
                                          model-lockout-exact-cooldown-cap,
                                          repro-antigravity-404-family-cooldown-hijack
  src/sse/services/auth.ts              + 7993-noauth-proxy-routing,
                                          8200-perplexity-web-401-cooldown,
                                          sse-auth-antigravity-credits
  src/server/authz/routeGuard.ts        + authz/route-guard-vnc-session-local-only
  open-sse/utils/error.ts               + error-sensitive-redaction
  open-sse/utils/publicCreds.ts         + adobe-firefly
  src/shared/utils/circuitBreaker.ts    + 8332-combo-vision-fallback

None is a file this PR touches, and the gate reports the identical 11 on a worktree
carrying none of these base-red fixes. Additions only (11 insertions, 0 deletions);
the array stays sorted. This widens what the mutation run accounts for rather than
relaxing anything.

* chore(ci): re-measure accountFallback.ts file-size cap against the current base tip

The entry frozen in this PR (1960) was the value at d61504d; the base has
since advanced to 59ef81b and the file is 1966 there, so check:file-size
would still have been red on the merge commit. Re-measured to 1966.

Same inherited drift the note already documents: check:file-size does not run
on the PR->release fast path, so growth accrues unmeasured between release
rebaselines. The other four entries still match the current tip
(tokenHealthCheck 841, chat 1866, auth 2486, combo frozen 3642 >= 3640).

---------

Co-authored-by: backryun <busan011@ormbiz.co.kr>
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
…egistry.test.ts (diegosouzapw#8544)

* chore(ci): resync stale no-explicit-any suppression count for proxy-registry.test.ts

tests/unit/proxy-registry.test.ts is frozen at 55 no-explicit-any
violations but only has 54 since diegosouzapw#8447 (0222e01) removed one. ESLint
fails the run with "There are suppressions left that do not occur
anymore", making `npm run lint` exit 2 on release/v3.8.49 for every PR
that branches off it.

Same class as diegosouzapw#8007 / diegosouzapw#8490, different file: no code to fix here — the
count simply drifted down, so this resyncs it via --prune-suppressions.

Base-red inherited from release/v3.8.49; both the suppressions file and
proxy-registry.test.ts are byte-identical to that branch.

* docs(changelog): add fragment for this PR
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…#8490)

* test(sse): repair two base-red gates on release/v3.8.49

`release/v3.8.49` is red at its own HEAD (75eb952) — `Quality Gates` and
`Release-Green (continuous)` both fail — so every PR opened against it inherits
four failing checks regardless of content. Two of those causes had no owner:
diegosouzapw#8480/diegosouzapw#8481/diegosouzapw#8482 cover the compression ladder, the antigravity catalog, and the
resilience/translator regressions respectively, none of them these.

1. `chatcore-client-usage-buffer.test.ts` — 5/5 failing.

   diegosouzapw#8331/diegosouzapw#8356 (d4ab3af) inserted an `options` parameter between
   `clientResponseFormat` and `deps` on `applyClientUsageBuffer()`. The five call
   sites here still passed `deps` in the fourth position, so the injected spies
   landed in the `options` slot and the real implementations ran — every
   `calls.*.length` assertion saw 0. The `Parameters<typeof
   applyClientUsageBuffer>[3]` cast in `makeDeps()` masked the type error, which is
   why it reached the branch. Call sites updated to `(resp, body, format, {}, deps)`
   and the cast repointed to `[4]`.

   Two cases added for the parameter that caused this, since nothing at this layer
   exercised it: `preserveContextBudgetInVisibleUsage` re-folds `context_budget_*`
   into the visible fields for the Claude-Code path, and the default path keeps the
   real unbuffered diegosouzapw#8331 numbers.

2. `claude-to-openai-think-close-5123.test.ts` — 4 unsuppressed
   `@typescript-eslint/no-explicit-any` errors, failing `npm run lint`.

   Its suppression entry allows `count: 2` but the file had grown to four `(chunk:
   any)` callbacks. Rather than raise the frozen count, the cause is fixed:
   `collectChunks()` returns `StreamChunk[]` instead of `unknown[]`, narrowing once
   at the boundary so all four callbacks need no annotation. The suppression entry
   is then stale and removed, which ratchets the file to zero.

Test-only plus one allowlist deletion; no production code. Verified on a clean
worktree of the base commit: `npm run lint` clean (was 4 errors),
`chatcore-client-usage-buffer` 7/7 (was 0/5), `claude-to-openai-think-close-5123`
3/3.

* chore(ci): rebaseline five inherited file-size overages on release/v3.8.49

`check:file-size` fails on release/v3.8.49 at its own HEAD (75eb952), which is
what turns `Fast Quality Gates` red for every PR against this base:

  tokenHealthCheck.ts   832 -> 841
  chat.ts              1865 -> 1866
  auth.ts              2475 -> 2486
  accountFallback.ts   1941 -> 1960
  combo.ts             3630 -> 3642

None of these files is touched by this PR. The growth was inherited from already
merged PRs that did not bump their entries, so there is no offending branch left
to fix — the same situation the baseline already records under
`_rebaseline_2026_07_02_5798_release_green`, and the procedure it documents is to
raise the frozen values with a justification note.

Raised to the current base values only. The files stay frozen and cannot grow
further; an in-flight PR that adds lines to them bumps its own entry as usual
(diegosouzapw#8482 touches accountFallback.ts and combo.ts and will need that).

* chore(ci): register 11 covering unit tests in stryker tap.testFiles

`check:mutation-test-coverage --strict` fails on release/v3.8.49 at its own HEAD:
11 unit tests that cover mutated modules are absent from `stryker.conf.json`
`tap.testFiles`, so their mutant kills do not count. The gate does not self-heal —
it names the exact files to add.

  open-sse/services/accountFallback.ts  + 8247-accountfallback-model-unhealthy,
                                          8248-accountfallback-nvidia-degraded,
                                          model-lockout-exact-cooldown-cap,
                                          repro-antigravity-404-family-cooldown-hijack
  src/sse/services/auth.ts              + 7993-noauth-proxy-routing,
                                          8200-perplexity-web-401-cooldown,
                                          sse-auth-antigravity-credits
  src/server/authz/routeGuard.ts        + authz/route-guard-vnc-session-local-only
  open-sse/utils/error.ts               + error-sensitive-redaction
  open-sse/utils/publicCreds.ts         + adobe-firefly
  src/shared/utils/circuitBreaker.ts    + 8332-combo-vision-fallback

None is a file this PR touches, and the gate reports the identical 11 on a worktree
carrying none of these base-red fixes. Additions only (11 insertions, 0 deletions);
the array stays sorted. This widens what the mutation run accounts for rather than
relaxing anything.

* chore(ci): re-measure accountFallback.ts file-size cap against the current base tip

The entry frozen in this PR (1960) was the value at 75eb952; the base has
since advanced to 1651617 and the file is 1966 there, so check:file-size
would still have been red on the merge commit. Re-measured to 1966.

Same inherited drift the note already documents: check:file-size does not run
on the PR->release fast path, so growth accrues unmeasured between release
rebaselines. The other four entries still match the current tip
(tokenHealthCheck 841, chat 1866, auth 2486, combo frozen 3642 >= 3640).

---------

Co-authored-by: backryun <busan011@ormbiz.co.kr>
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…egistry.test.ts (diegosouzapw#8544)

* chore(ci): resync stale no-explicit-any suppression count for proxy-registry.test.ts

tests/unit/proxy-registry.test.ts is frozen at 55 no-explicit-any
violations but only has 54 since diegosouzapw#8447 (c883922) removed one. ESLint
fails the run with "There are suppressions left that do not occur
anymore", making `npm run lint` exit 2 on release/v3.8.49 for every PR
that branches off it.

Same class as diegosouzapw#8007 / diegosouzapw#8490, different file: no code to fix here — the
count simply drifted down, so this resyncs it via --prune-suppressions.

Base-red inherited from release/v3.8.49; both the suppressions file and
proxy-registry.test.ts are byte-identical to that branch.

* docs(changelog): add fragment for this PR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants