Repository navigation
[eslint-refiner] ESLint Refiner — 2026-08-11: 2 issues filed on require-spawn-error-listener; memory-gap reconciled #51959
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-08-12T05:48:47.250Z.
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Overview
Reviewed the two ESLint factory rules that had never been reviewed before:
require-spawn-error-listener(shipped 2026-08-09) andrequire-mkdtempsync-try-catch(shipped 2026-08-10). Filed 2 issues on the former; the latter is clean. Also discovered and reconciled a ~1-month gap in this workflow's persisted repo-memory.Key issues filed
isSpawnBindingonly recognizesspawnvia a direct import orrequire()destructure, soconst spawnImpl = options.spawnImpl ?? spawn;is invisible to the rule. Live atcopilot_sdk_sidecar.cjs:128-131(currently safe, but unprotected against regression). Same defect shape as the priorCORE_ALIASESDI-parameter gap (eslint-factory: core-method-resolve.ts CORE_ALIASES gap makes 8 sibling rules blind to DI-style core parameter names #49489).hasErrorListeneraccepts a listener attached anywhere in scope, including inside a conditional branch that doesn't cover every path from thespawn()call. This is the third occurrence of this exact "whole-block/whole-callback branch-order false negative" defect class in this factory (previously eslint-factory: no-unsafe-promise-catch-error-property guard is whole-callback, causing branch-order false negatives #42915, eslint-factory: no-core-error-then-process-exit only checks adjacent statements — misses intervening statements (FN) #46993, eslint-factory: require-return-after-core-setfailed misses bare switch-case fall-through (FN) and flags trailing function declar [Content truncated due to length] #46992). No live occurrence found; filed proactively given the repeat pattern.require-mkdtempsync-try-catchgot a clean review — no issue filed. It's a thin wrapper over the sharedtry-catch-rule-utilshelpers already hardened during the 2026-07-08 review ofrequire-fs-sync-try-catch, and its own 11-case test suite already covers the tricky shapes (destructured bindings, ESM namespace import, computed access, catch-less try/finally).Memory-gap reconciliation
This workflow's repo-memory (
state.json/history.jsonl) was last updated 2026-07-08, recording 12 reviewed rules. The actual rule inventory has grown to 44 rules, and GitHub issue history (gh api search/issues?q=repo:github/gh-aw+label:eslint-factory) shows the workflow kept running and filing issues daily through 2026-08-10 — the memory push itself was silently failing or landing elsewhere for about a month, without affecting the underlying mission. Cross-referencing that issue history againsteslint-factory/src/index.tsshowed 42 of 44 rules already have at least one filed issue; only the two rules reviewed today had zero.state.jsonhas been rewritten to reflect the accurate inventory and to record this reconciliation so future runs trust the GitHub issue history over stale local state.Full grounding detail
require-spawn-error-listener — live call sites checked:
process_runner.cjs:92— true negative, unconditionalchild.on("error", ...)at line 187.apply_samples.cjs:627— true positive (real app bug), no listener anywhere in file.start_mcp_gateway.cjs:583— true positive (real app bug), detached+unref()child with no listener anywhere in file.copilot_sdk_sidecar.cjs:131— missed entirely due to the DI-fallback binding gap (issue 1 above); has a listener at line 159 but the rule never evaluates the call site.require-mkdtempsync-try-catch — live call sites checked:
artifact_client.cjs:371,419,generate_git_bundle.cjs:246,251,restore_aic_usage_cache_fallback.cjs:166,fuzz_template_substitution_harness.cjs:65,check_daily_aic_workflow_guardrail.cjs:280. Traced ancestor try-blocks by hand for 3 of 5; all confirmed or strongly indicated as protected. No novel gap found — any remaining edge case matches a known, already-accepted scope limit shared across ~10 sibling try-catch rules (rule doesn't cross function-call boundaries), not a new defect.Other open issues:
#50496(require-nan-check-after-env-numeric-parse, ternary-wrapped env parse escapes detection) remains open — flagging as a candidate to nudge if it stays open much longer. Every other eslint-factory-labeled issue is closed.Next
require-spawn-error-listener's two filed issues; re-verifycopilot_sdk_sidecar.cjs:131gets covered once the DI-fallback fix lands.index.tsfirst per usual cadence.All reactions