* docs: bring the provider count to the live 358 across the reference, diagrams and llm.txt mirrors
* chore(skills): regenerate the cli-tunnel SKILL.md for the tunnel create positional
* test: clear the ESLint errors in the volcengine upsert and resource-pressure tests
* test(autoCombo): complete the mode-pack ProviderCandidate fixtures for the open-sse typecheck
* fix(ci): allow the opencode-plugin-v2 workspace package in the pack artifact policy
* docs: list the WAL, vacuum, sql.js and pressure self-restart env vars in .env.example
* refactor(db): move the synced-model provider purge into its persistence module to break the models/providers cycle
* test(memory): use a plain label for the rerank loopback key fixture so gitleaks stays at zero
* chore(ci): register the eleven covering unit tests in stryker tap.testFiles
* test(grok-cli): run the reset-credit tests on a fixture clock inside the captured token window
* test(combo): seed real provider connections for the reset-aware strategy tests
* fix(db): keep operator custom models out of the listing-only synced catalog reader
* fix(i18n): translate the new settings and combo keys for vi and pt-BR and restore the zh-TW glossary term
* fix(sse): carry the upstream error code and type through the provider execution pipeline
* test(sse): re-point the chatCore and combo source guards at the split modules and refresh the translate-path golden
* fix(oauth): keep the server-only OAuth constants out of the provider detail client bundle
* test: align the sql.js, webpack, injection-scan and error-boundary guards with their merged contracts
* docs(changelog): record the v3.8.51 base-red sweep
* fix(sse): anchor the glued-prefix sk- credential pattern so error redaction scans in linear time
* docs(changelog): note the linear credential scan in the base-red sweep
---------
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
Validado numa worktree combinada com as 16 PRs desta leva sobre `release/v3.8.51`: typecheck:core limpo, check-file-size e check-changelog-integrity OK, complexity 2788/3218 e cognitive 1261/1437 (ambos sob a baseline), ESLint 0 erros nos 152 arquivos alterados, 771 testes unitários focados, 49 de integração e a suíte vitest:ui completa (2149) verdes.
A decodificação dos campos aninhados 10/20/30 do `GetRemainingResets` ao vivo (último commit) é o que separa isto de um palpite sobre o formato do frame. Mostrar zero em vez de esconder a linha é a escolha certa: crédito zerado é informação, ausência de linha é ambiguidade.
Validado em lote numa worktree combinada com os 9 PRs desta leva sobre o tip de `release/v3.8.51`: `typecheck:core` limpo, `check:provider-consistency` OK (273 entradas REGISTRY, **356** providers canônicos), `check-docs-counts-sync` exit 0 e **300/300** nos testes que a leva toca.
O crescimento de arquivo que os PRs empilham uns sobre os outros foi rebaselinado num único registro datado (`_rebaseline_2026_09_03_houminxi_batch`), com a decomposição por arquivo: `providers/page.tsx` +18 (import CSV do #12504 + busca do #12495 no mesmo painel), `accountFallback.ts` +6 (o #12566 sobre o rebaseline que o #12590 já registrou — os dois tocam `checkFallbackError`) e `chatCore.ts` +3 (invalidez de cache de quota no 429 do #12325). As violações restantes (`codex.ts`, `stream.ts`) foram medidas também no tip puro e são drift da base, não desta leva.
* test(infra): retry recursive temp-dir removal instead of failing a shard on ENOTEMPTY (#11966)
Two shards on release/v3.8.51 went red in one day with the same signature —
"ENOTEMPTY, Directory not empty: /tmp/omniroute-<test>-XXXXXX" — from
combo-same-provider-cascade (Unit Tests fast-path 4/4, on a PR that touches only
.github/) and auth-policy-embeddings-webfetch-7785 (the 20k-test TIA step). Both pass
alone and on re-run: the cleanup races something still writing into the directory
(SQLite WAL/-shm checkpoint, a worker, the backup) and under a loaded hosted runner
the window opens. 1154 test files do their own cleanup with
fs.rmSync(dir, { recursive: true, force: true }); 57 already asked for retries.
One-shot codemod (scripts/ad-hoc/codemod-rm-maxretries.mjs, kept for the record):
every rm / rmSync / rmdirSync option object with `recursive: true` and no
`maxRetries` gains `maxRetries: 5, retryDelay: 100` — Node itself then retries
ENOTEMPTY/EBUSY/EPERM for up to ~0.5 s before giving up. 2243 call sites in 1292
files under tests/, the shared tests/_setup/isolateDataDir.ts exit hook included.
Only the option object changes: no call site, assertion or import is touched.
Validation: prettier and ESLint (with the frozen suppressions) clean on all 1292
files; a random 20-file sample runs green (quota-redis-store hangs identically on
the untouched tree — it needs a Redis on localhost, an environment matter). The
four unit shards on this PR are the full run.
* fix(quality): let check-forgotten-sibling-tests read a 1,000-file diff
The gate shells out to `git diff` through execFileSync with Node's default 1 MB
maxBuffer; the 1,292-file codemod in this PR is the first diff large enough to
overflow it, and the gate died with `spawnSync git ENOBUFS` before comparing
anything. 64 MB is far above any real PR and costs nothing when unused.