[eslint-refiner] ESLint Refiner daily report — 2026-09-24 (0 issues filed; #61543 appears fixed upstream) #63108
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by ESLint Refiner. A newer discussion is available at Discussion #63360. |
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
Daily ESLint Refiner sweep of
eslint-factory(62 custom rules, unchanged count) against the liveactions/setup/js/**/*.cjscorpus. Disciplined 0-issue day — every avenue investigated was either already fixed upstream, already open and re-confirmed unfixed, or a structurally-real-but-corpus-ungrounded theory that doesn't clear the filing bar. One valuable discovery: an open issue's underlying bug appears already fixed in source.Key findings
require-spawnsync-error-check(require-spawnsync-error-check: CHILD_PROCESS_OBJECTS name allowlist misses the common cp require alias #61543) looks fixed upstream but is still open.isSpawnSyncCallnow resolves thechild_processnamespace object via the sharedisChildProcessObjectBindingscope-resolved helper instead of the old hardcodedCHILD_PROCESS_OBJECTSname Set — exactly the gap require-spawnsync-error-check: CHILD_PROCESS_OBJECTS name allowlist misses the common cp require alias #61543 describes. This workflow has noclose_issue/comment safe-output, so it needs a human (or PR-capable workflow) to verify and close it. This is the second confirmed case of a fix landing without the issue being closed (after prefer-actions-exec-over-child-process: false positive on shim.cjs dual-mode standalone/github-script files #61044 on 2026-09-23) — the ~1wk bot auto-expiry is not a reliable signal that a theme is actually dead.require-invalid-date-check-before-compare— arithmetic-derived duration variables (e.g.(a.getTime() - b.getTime())/1000) still escape NaN-comparison tracking.no-string-fallback-for-non-string-message— nullish-coalescing/type-narrowed aliases of a catch binding still aren't resolved to the same key.require-fetch-response-body-try-catch— a trailing.catch()/.then()chained directly onto the body-read call still hides it from theAwaitExpressionvisitor.require-error-code-in-thrown-error) expired 2026-09-23, not refiled. Both gaps are still structurally present in source, but re-grounding against the live corpus found the same result as their original filing: the registry's one non-ERR_-prefixed export (POLICY_FILE_PROTECTION_DENIED_REASON_CODE) is only ever assigned to an object property (reasonCode: ...), never used inside a thrownErrormessage, so there's still no live trigger. Per this project's established practice for ungrounded latent themes, these are documented but not refiled a second time without new evidence.detect_agent_errors.cjs. Both newJSON.parsecall sites and thefs.readFileSynccall are already correctly wrapped intry/catch. No gap found.Full methodology and rule-by-rule detail
grep -l '= createRule(' eslint-factory/src/rules/*.ts(excluding.test.ts) — unchanged since 2026-09-19.gh api "repos/github/gh-aw/issues?state=open&labels=eslint-factory"(4 open: no-string-fallback-for-non-string-message: false positive on type-narrowed catch-param alias (recurrence of #60757) #62560, require-invalid-date-check-before-compare: arithmetic-derived duration variables still escape tracking (recurrence of #60577) #62317, require-spawnsync-error-check: CHILD_PROCESS_OBJECTS name allowlist misses the common cp require alias #61543, require-fetch-response-body-try-catch: trailing .catch()/.then() on the body-read call hides it from the rule #61542) cross-checked against a broader title/body search that also surfaced the two now-expired require-error-code-in-thrown-error: ERROR_CODE_PATTERN does not recognize error_codes.cjs non-ERR_/E0xx exports #61285/require-error-code-in-thrown-error: nested identifier aliases inside binary/template messages bypass write-once resolution (fals #61284.git log/git show --statis conclusively unusable for change detection in this repo — the 2026-09-23→09-24 HEAD move (606cfab → e04de66, Improve detection and diagnostics for missing Copilot custom agent #63048) is the 7th consecutive all-insertions shallow-clone squash artifact (881 files, 0 deletions). Pivoted instead to grepping the PR's actual named subject file (detect_agent_errors.cjs) directly for rule-relevant patterns (JSON.parse,readFileSync,catch,throw new Error) rather than relying on a diff.require-spawnsync-error-check: read current source line-by-line; confirmedisSpawnSyncCall(line 158) now callsisChildProcessObjectBinding(callee.object.name, callee.object, sourceCode)fromtry-catch-rule-utils.ts, matching the shared helper 4 sibling rules already use.require-fetch-response-body-try-catch: confirmed theAwaitExpressionvisitor still requiresgetMemberPropertyName(callee)to be literallyjson/text(line 175) before any chain-unwrap logic runs — a trailing.catch()/.then()resolvesmethodNametocatch/thenand short-circuits.require-invalid-date-check-before-compare: confirmed theBinaryExpressionvisitor andresolveVariablehelper still only track comparison operands, not arithmetic-derived assignments.no-string-fallback-for-non-string-message: confirmedalternateChainKeymust still textually equalmessageChainKey(minus.message) with no alias resolution for nullish-coalescing narrowing.require-error-code-in-thrown-error: re-readmessageReferencesErrorCode— itsBinaryExpression/TemplateLiteralnested-identifier branches (lines 20–30) still match by bareERROR_CODE_PATTERNname only, never viaresolveWriteOnceInitializerChain(unlike the top-levelIdentifierbranch inauditMessageExpression).ERROR_CODE_PATTERNis stillERR_*/E[0-9]{3}-only. Grepped all 3 live consumers ofPOLICY_FILE_PROTECTION_DENIED_REASON_CODE(approve_workflow_run.cjs:372,push_to_pull_request_branch.cjs:529,1124) — all arereasonCode:property assignments, none inside a thrownErrormessage.core-method-resolve.tsmulti-hopcorealias theory (carried from 09-23): re-grepped forconst \w+ = core;-shape bindings across the corpus — still zero occurrences, theory remains undocumented-but-ungrounded.try-catch-rule-utils.tsVariableDeclaration-suggestion gap (~14 fs-sync/child-process rules affected, eslint-factory: shared try/catch suggestion builder silently skips VariableDeclaration call sites #57868/eslint-factory: shared try/catch suggestion builder still skips VariableDeclaration call sites -- recurrence of expired issue 57 #59891) and theno-json-stringify-equalityindirect-operand gap (no-json-stringify-equality: misses indirect template-literal comparisons (live gap: trace_graders.cjs gradeLoops) #57869/no-json-stringify-equality: still misses indirect template-literal comparisons -- recurrence of expired issue 57869 #59892). Both require a source-level fix this workflow cannot submit (nocreate_pull_requestsafe-output) — flagging here for a human or PR-capable workflow.Next actions
try-catch-rule-utils.tsVariableDeclarationsuggestions;no-json-stringify-equalityindirect operands) — this refiner workflow can only file issues, not PRs.Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions