Repository navigation
fix(check): await the now-async getExecutor in the known-symbols gate (#11421) - #11582
Merged
diegosouzapw merged 2 commits intoAug 26, 2026
Conversation
…cheaper-inference#11421) cheaper-inference#11421 made the executor registry lazy: `getExecutor()` became `async` and returns a Promise so the class is imported and constructed on first use. It updated the gate's source parser (`const executors` → `const lazyExecutors`) but not the resolver half, which still calls `getExecutor(alias)` synchronously. A Promise is never `instanceof BaseExecutor`, so every registered alias is reported non-conforming — all 142 of them: [executor] 142 alias(es) registrado(s) não resolvem para um BaseExecutor válido That fails `Fast Quality Gates` on every branch, and worse, the sub-check is now dead: it cannot pass, so it can no longer distinguish a genuinely broken executor from the 141 false positives around it. - `findNonConformingExecutors` awaits the resolver. A rejection counts as non-conforming too — with lazy loading an alias's import can fail at runtime, and a dead symbol is exactly what this sub-check exists to find. The sync version could not have seen that failure mode at all. - The unit-test fixture for `extractExecutorAliases` still declared `const executors`, which the post-cheaper-inference#11421 parser cannot locate, so that test was red as well. It now carries the lazy thunk shape the real file has. - Two cases added: the resolver is awaited rather than judged as a Promise, and a rejecting lazy load is flagged. No production code touched — every runtime caller of `getExecutor` already awaits.
This was referenced Aug 26, 2026
diegosouzapw
merged commit Aug 26, 2026
1ea1345
into
cheaper-inference:release/v3.8.51
10 of 16 checks passed
diegosouzapw
pushed a commit
that referenced
this pull request
Aug 26, 2026
Merged via /merge-batch (lote 2026-08-26 batch 2, v3.8.51). 7 conflitos, todos triviais/duplicados (mesmos base-reds já corrigidos por PRs paralelas mergeadas neste lote — #11580/#11582/#11583/#11585/#11588/#11589/#11590/#11591/#11609): mantida a versão já validada nesses casos. Validado: 68/68 testes passando. Obrigado por resolver os base-reds.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…cheaper-inference#11421) (cheaper-inference#11582) Merged via /merge-batch (lote 2026-08-26, v3.8.51). Boarded no worktree combinado junto com outras ~30 PRs; validação única: typecheck/complexity/cognitive-complexity/changelog-integrity verdes, file-size rebaseado onde necessário (crescimento legítimo), lint com os mesmos 228 achados pré-existentes confirmados via sonda contra o tip puro (não introduzidos por este lote), e ~370 testes focados (unit + vitest) passando. Obrigado pela contribuição.
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…per-inference#11608) Merged via /merge-batch (lote 2026-08-26 batch 2, v3.8.51). 7 conflitos, todos triviais/duplicados (mesmos base-reds já corrigidos por PRs paralelas mergeadas neste lote — cheaper-inference#11580/cheaper-inference#11582/cheaper-inference#11583/cheaper-inference#11585/cheaper-inference#11588/cheaper-inference#11589/cheaper-inference#11590/cheaper-inference#11591/cheaper-inference#11609): mantida a versão já validada nesses casos. Validado: 68/68 testes passando. Obrigado por resolver os base-reds.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The gate cannot pass
Fast Quality Gatesfails on every branch. Its remaining sub-check failure is:142 out of 142. That number is the tell — this is not 142 broken executors.
Cause
#11421 (
7cfabfc5c, ~5h ago)made the executor registry lazy, so
getExecutor()is nowasyncand hands back aPromise; the class is imported and constructed on first use. That PR did touch this
gate — but only its source parser:
The resolver half was left as it was:
A Promise is never
instanceof BaseExecutor, so every alias is judged non-conforming.Probed directly under
bun:The production side of #11421 is fine — I grepped every
getExecutor(call site inopen-sse/,src/,scripts/andbin/, and each one already awaits. Only the gatewas left behind.
Why this is worth more than a green X
While the sub-check reports 142/142 it is not just failing, it is dead. It cannot
tell a genuinely broken executor from the 141 false positives standing next to it, so
the whole class of defect it was built to catch — an alias that silently routes to the
DefaultExecutorfallback instead of failing — is currently unguarded.The fix
findNonConformingExecutorsawaits the resolver.import()can now fail at runtime; that is precisely the dead symbol this sub-check exists to
find, and the synchronous version could not have seen that failure mode at all.
extractExecutorAliasesstill declaredconst executors,which the post-perf(executors): lazy-load the executor registry — defer class imports + construction to first use (#11220) #11421 parser cannot locate — so that test was red too. It now carries
the lazy thunk shape the real file has.
rejecting lazy load is flagged.
No production code touched.
Verification
The gate goes green, and reports what it should:
It is not passing vacuously. I pointed one alias's lazy import at a module that does
not exist (
auggie→./does-not-exist.ts) and re-ran it:Exactly one, correctly named — and that is a failure mode the pre-#11421 synchronous
check could never have detected, because a failed lazy import only surfaces on await.
Unit tests —
tests/unit/check-known-symbols.test.ts:Ran under Bun 1.3.14 with an isolated
DATA_DIR, matching how CI invokes it(
bun scripts/check/check-known-symbols.ts).