Skip to content

perf(db): drop two conversation_turn_nodes indexes no query reads - #15354

Merged
diegosouzapw merged 179 commits into
diegosouzapw:release/v3.8.52from
maxmad64bis:perf/drop-unused-turn-node-indexes
Oct 6, 2026
Merged

diegosouzapw merged 179 commits into
diegosouzapw:release/v3.8.52from
maxmad64bis:perf/drop-unused-turn-node-indexes

Conversation

@maxmad64bis

@maxmad64bis maxmad64bis commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

⚠️ base-red inherited: #15306

Summary

Two indexes on conversation_turn_nodes (171 of the table's 494 megabytes on a large database) have no SQL reader: every query filters on conversation_id or sweeps on last_seen_at, and anchor lookup happens in memory after a grouped load. The migration drops them, which stops the per-row maintenance cost on the pre-routing write path. The drop takes seconds without rewriting the table; pages are reusable at once, the file itself only shrinks after VACUUM.

Related Issues

Validation

  • Change type: DB
  • Focused tests and category gates from the golden path
  • npm run lint — ESLint on the touched files is clean; the full run is red on the base (🔴 Release branch not green: release/v3.8.52 #15306).
  • Reconciled with the current active release base; focused checks rerun afterward
  • Production-code changes include a new or updated automated test in this PR

Tests Added Or Updated

  • tests/unit/db/migration-197-drop-unused-turn-node-indexes.test.ts: indexes gone from sqlite_master, every inventoried query takes an index, double run is a no-op.

Coverage Notes

  • src/lib/db/migrations/197_drop_unused_turn_node_indexes.sql: covered by tests/unit/db/migration-197-drop-unused-turn-node-indexes.test.ts.

Reviewer Notes

  • Behavior: No application code is touched: the columns stay and only the two indexes go (the table is 274 MB, the dropped indexes 106 and 66, the kept ones 46 and 27), so a third-party reader loses an index, not data. The retention sweep still takes its index after the drop (subquery on last_seen_at). Dropping both indexes takes about 3 seconds on an 830-thousand-row copy and doesn't rewrite the table; the file only shrinks after VACUUM. Inserting 2000 rows takes about 33 ms with the indexes and 29 ms without, so the gain is less write work on the per-request path.
  • Merge: Number 197 is also claimed by feat(proxy-subscription): generate the local proxy-core configuration (opt-in) #15141 (oldest, 2026-09-29); whichever lands second renumbers at rebase, since the release check refuses gaps in the sequence. Migration counters follow the release train, so they're untouched here.

Reads filter on conversation_id and retention sweeps on last_seen_at; EXPLAIN pins the kept indexes.
@maxmad64bis
maxmad64bis force-pushed the perf/drop-unused-turn-node-indexes branch from d219e00 to ff451f3 Compare October 3, 2026 01:03
@maxmad64bis
maxmad64bis marked this pull request as ready for review October 3, 2026 01:41
diegosouzapw and others added 23 commits October 6, 2026 11:33
…purify 3.4.16 and patched npm-bundled copies in the image (diegosouzapw#15325)

- next/eslint-config-next 16.3.5 -> 16.3.6 (critical RCE in next/og ImageResponse).
- override axios ^1.20.0 so ibm-cloud-sdk-core's exact 1.18.0 pin cannot keep the vulnerable copy.
- @grpc/grpc-js 1.14.5, dompurify 3.4.16 via lockfile.
- Dockerfile npm-internals overlay: undici 6.29.0, brace-expansion 5.0.12, ip-address 10.7.3.
node-forge has no patched release yet (dev-only, via promptfoo -> jks-js).
…gosouzapw#15003)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…zapw#15225)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
… Rule diegosouzapw#16 (diegosouzapw#15389)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
… text (diegosouzapw#15399)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…alog (diegosouzapw#15396)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…iegosouzapw#15395)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…osouzapw#15378)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
diegosouzapw#15432)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…get (diegosouzapw#15433)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…#15434)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…pw#15463)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…pass (diegosouzapw#15560)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…ead of failing silently (diegosouzapw#15362)

Validated in a combined 14-PR board on the current release tip (112313a): 111 focused tests, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…zapw#15224)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…umn name" (diegosouzapw#15236)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…guard (diegosouzapw#15239)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…rt failures (diegosouzapw#15248)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
… in pool visibility (diegosouzapw#15374)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…ouzapw#15375)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…osouzapw#15398)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
…diegosouzapw#15402)

Validated in a combined board on the current release tip: focused node:test + vitest suites, typecheck:core, open-sse typecheck, gate-manifest, mutation-test-coverage, file-size, changelog-integrity, complexity, env-doc-sync, test-discovery, vitest-exclusions, error-helper, cli-i18n and the i18n new-keys/ui-coverage gates green. Thank you for the contribution.
lorenzozanee and others added 28 commits October 6, 2026 19:24
…15541)

Onda 6. Este squash entra com o crédito de @lorenzozanee (docs: clarify npm 11 allow-scripts setup for global installation).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @lorenzozanee.
…iegosouzapw#15413)

Onda 6. Este squash entra com o crédito de @QuangBlue (fix(kiro): stop discovery from stamping a fake 200k context window).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @QuangBlue.
…souzapw#15332)

Onda 6. Este squash entra com o crédito de @QuangBlue (fix(api): keep Next's upgrade listener off the run-next server).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @QuangBlue.
… runs (diegosouzapw#15331)

Onda 6. Este squash entra com o crédito de @QuangBlue (fix(api): standalone server owns SIGTERM so graceful-shutdown cleanup runs).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @QuangBlue.
…pw#15597)

Onda 6. Este squash entra com o crédito de @insoln (fix(sse): scope type-only context errors in combo streams).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @insoln.
…ate (diegosouzapw#15598)

Onda 6. Este squash entra com o crédito de @insoln (fix(sse): accept first-party Claude empty end_turn in combo quality gate).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @insoln.
…uzapw#12797) (diegosouzapw#15557)

Onda 6. Este squash entra com o crédito de @insoln (fix(sse): stabilize standalone compression worker resolution (diegosouzapw#12797)).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @insoln.
…s-platform (diegosouzapw#15572)

Onda 6. Este squash entra com o crédito de @Junior-HJ (test(compression): make worker-specifier and RTK TOML assertions cross-platform).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @Junior-HJ.
…namespaced root (diegosouzapw#15452)

Onda 6. Este squash entra com o crédito de @yourspraveen (fix(api): stop restricted-key /v1/models leaking aggregator rows via namespaced root).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @yourspraveen.
… Go (diegosouzapw#15453)

Onda 6. Este squash entra com o crédito de @yourspraveen (fix(providers): keep a third-party agent's own User-Agent on OpenCode Go).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @yourspraveen.
…fig auto table (diegosouzapw#15467)

Onda 6. Este squash entra com o crédito de @yourspraveen (docs(readme): list auto/subscription and auto/thrifty in the zero-config auto table).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @yourspraveen.
…iegosouzapw#15458)

Onda 6. Este squash entra com o crédito de @skygunner (fix(combo): keep declared priority order ahead of session stickiness).

O board único validou os 19 PRs (sem o diegosouzapw#15412): file-size OK, changelog OK, i18n drift OK, typecheck:core OK, complexity e cognitive dentro do baseline. Testes focados: 390 passaram, 1 skip. O teste novo de GHE Copilot Sonnet 5.5 falhou no head original e foi corrigido no board; esse ajuste entra com o diegosouzapw#15478, fora deste squash.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @skygunner.
…iegosouzapw#15478)

Onda 6. Este squash entra com o crédito de @lorenzozanee (fix(providers): declare Claude target format for GHE Copilot models).

O board único validou o conjunto. O teste novo exige `targetFormat: "claude"` em todo modelo GHE Copilot cujo id começa com `claude-`. O catálogo da release já lista `claude-sonnet-5-5` sem esse campo; a linha foi acrescentada no fork para o teste passar, no mesmo formato das outras linhas Claude.

O rebaseline de file-size e o adopt de i18n ficam num follow-up, depois dos três PRs restantes da onda.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @lorenzozanee.
…5476)

Onda 6. Este squash entra com o crédito de @lorenzozanee (fix(providers): update the pinned Copilot CLI version).

O pin suportado passa de 1.0.88 para 1.0.91. A consulta ao registro npm, o cache de 6 horas e o timeout de 20s da release ficam. Uma versão mais nova continua substituindo o pin, e GITHUB_COPILOT_CLI_VERSION no ambiente continua vencendo os dois.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @lorenzozanee.
…rted prompt_tokens (diegosouzapw#15054)

Onda 6. Este squash entra com o crédito de @skygunner (fix(context): calibrate the chars/4 guard estimate with provider-reported prompt).

A calibração do diegosouzapw#14931 entra no caminho já dividido: estimativa de contexto, cauda de streaming e resposta não-streaming. O patch original em chatCore.ts não cabe mais nesse layout.

O rebaseline de file-size e o adopt de i18n ficam num follow-up.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @skygunner.
…souzapw#15694)

Follow-up da onda 6. Nenhum código de produto.

Tetos medidos no tip depois dos squashes:

- `open-sse/executors/opencode.ts` 1518 → 1519 (diegosouzapw#15453)
- `tests/unit/combo/quota-weighted-strategy.test.ts` novo, congelado em 1217 (diegosouzapw#15480)

O adopt de i18n grava o hash atual de `README.md` (diegosouzapw#15541, diegosouzapw#15467) e `docs/reference/ENVIRONMENT.md` (diegosouzapw#15542). Não traduz.

File-size OK (171 congelados, 47 testes congelados). i18n drift PASS (sources=152, targets=10032).

⚠️ base-red inherited: diegosouzapw#15306
…#15535)

Correções já validadas no board. Este squash entra com o crédito de @HouMinXi (fix(combo): skip hedging when the request body is large).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @HouMinXi.
…zapw#15406)

Correções já validadas no board. Este squash entra com o crédito de @HouMinXi (fix(dashboard): read OpenCode model limits from the catalog).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @HouMinXi.
…zapw#15499)

Correções já validadas no board. Este squash entra com o crédito de @lorenzozanee (fix(executors): route GHE Copilot GPT-6 models to Responses).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @lorenzozanee.
…lists (diegosouzapw#15602)

Correções já validadas no board. Este squash entra com o crédito de @Junior-HJ (fix(cursor): bridge native tool execs by schema shape, not just name lists).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @Junior-HJ.
…odelsFromGithubCatalog (diegosouzapw#15525) (diegosouzapw#15578)

Correções já validadas no board. Este squash entra com o crédito de @alltomatos (fix(providers): append new models from GitHub catalog in enrichCodexModelsFromGitHub).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @alltomatos.
…wn models as 429 (diegosouzapw#15024)

Correções já validadas no board. Este squash entra com o crédito de @mdc2122 (fix(cursor): live-discover cursor-api models and stop reporting unknown models as missing).

O board único passou changelog, typecheck:core, complexity e cognitive. Os 5 testes de guide-settings que falham com HTTP 422 também falham no tip: o guard de escrita recusa o alvo fora de um mount quando `/.dockerenv` existe. Não é regressão deste PR.

O rebaseline de file-size dos arquivos que cresceram fica num follow-up, depois destes squashes.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @mdc2122.
Follow-up das correções. Nenhum código de produto.

Tetos medidos no tip depois dos squashes:

- `src/app/api/providers/[id]/models/route.ts` 2432 → 2446 (diegosouzapw#15024)
- `tests/unit/combo-routing-engine.test.ts` 3625 → 3663 (diegosouzapw#15535)

File-size OK. i18n drift já estava PASS neste tip.

⚠️ base-red inherited: diegosouzapw#15306
…combos/auto (diegosouzapw#15353)

Onda 8. Este squash entra com o crédito de @maxmad64bis (fix(api): resolve auto-combo candidate capabilities once in GET /api/combos/auto).

O merge com o tip atual é limpo: cinco arquivos, sem superfície protegida. O rebaseline de file-size da onda, se houver, fica no follow-up depois dos PRs que ainda conflitam.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @maxmad64bis.
… of blocking the whole provider (diegosouzapw#15469)

Onda 8. Este squash entra com o crédito de @maxmad64bis (feat(dashboard): token refresh failures can pause per account instead of blocking the whole provider).

O conflito com o tip foi resolvido no fork: o formato atual do `chatCore` dividido ficou, e as opções do breaker (scope, limiar, cooldown, connectionId) foram reaplicadas nos dois call sites de `refreshWithRetry`. O teto de file-size não entra neste squash; o follow-up mede depois da onda.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @maxmad64bis.
…ouzapw#15483)

Onda 8. Este squash entra com o crédito de @maxmad64bis (fix(noauth): show active free-tier pauses on the account card).

diegosouzapw#15402 e diegosouzapw#15443 já estavam neste branch e entram com ele. O comportamento que o diegosouzapw#15436 já publicou ficou o da release. O cartão de pausa e a rota de visibilidade são deste PR. O teto de file-size fica para o follow-up da onda.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @maxmad64bis.
… pool members (diegosouzapw#15314)

Onda 8. Este squash entra com o crédito de @maxmad64bis (feat(proxies): accept operator-provided dated egress observations for pool members).

A migration ficou em `199_proxy_operator_egress.sql`. O 199 sai de `KNOWN_GAPS` porque o arquivo existe. O 200, que já existia, continua fora da lista. A flag `PROXY_OPERATOR_EGRESS_ENABLED` permanece desligada por padrão. O teto de file-size fica para o follow-up da onda.

⚠️ base-red inherited: diegosouzapw#15306

Obrigado, @maxmad64bis.
Migration 201. Do not reserve 200. 197 and 198 stay gaps until their files exist.
@diegosouzapw
diegosouzapw merged commit 6847b57 into diegosouzapw:release/v3.8.52 Oct 6, 2026
5 of 9 checks passed
@maxmad64bis
maxmad64bis deleted the perf/drop-unused-turn-node-indexes branch October 7, 2026 20:38
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.