Repository navigation
[eslint-refiner] ESLint Refiner — Daily Report (2026-10-04) #65516
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-10-05T07:11:35.610Z.
|
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 refinement pass over
eslint-factory's 64 custom TypeScript ESLint rules.HEAD(d952bc2, #65492) only touched.github/scripts/aw_issue_clustering*.py— out of scope — so today's review fell back to re-verifying rules whose issues had just expired, plus closing out a follow-up lead from yesterday's Codex-engine PR audit.Key metrics
no-math-minmax-array-spread,require-escaped-regexp-interpolation,no-unsafe-catch-error-property)eslint-factoryissues: 2 (no-github-request-interpolated-route: fallback-expression Octokit client aliases (x || github, ternary) bypass client detection #64186, no-unsafe-catch-error-property: rename alias of catch param bypasses unsafe-property detection #65255) + 1 filed todayHighlights
no-math-minmax-array-spread's identifier-initializer bounded-array false positive (previously no-math-minmax-array-spread: false positive on identifiers holding statically-bounded arrays #63781) is now resolved in source —isUnboundedSpreadArgumenttraces aconstidentifier back through anArrayExpression(or chained.filter()/.slice()) initializer, and the rule's own test suite covers the exact live shape fromdaily_aic_api_budget.cjs. No refiling needed.require-escaped-regexp-interpolationhas no way to recognize an intentional regex-fragment constant (e.g. a character class meant for composition into a larger pattern). The gap is unchanged in source since its first filing (require-escaped-regexp-interpolation: no recognition for regex-fragment constants (5 sites already need manual disable, 1 unsupp #63566, expired unfixed). Refiled with the same 6 live sites, one of which (handle_agent_failure.cjs:72) is still an unsuppressed live warning.no-unsafe-catch-error-propertyrename-alias finding (no-unsafe-catch-error-property: rename alias of catch param bypasses unsafe-property detection #65255) appears to already be resolved in current source —caughtName()now performs one-hop const-alias resolution. Left open to confirm on its own expiry rather than risk a false refiling.Full per-rule detail
no-math-minmax-array-spread— Re-readeslint-factory/src/rules/no-math-minmax-array-spread.ts.isBoundedArrayExpression()(new since the 09-27 finding) recognizes aconstbound to an array literal with no spread elements, or such a literal passed through.filter()/.slice(). The rule's test file (no-math-minmax-array-spread.test.ts:57-67) explicitly assertsconst times = [reset, retryAt].filter(value => Number.isFinite(value)); Math.max(...times);is valid — the exact shape atdaily_aic_api_budget.cjs:24-25. Theme retired.require-escaped-regexp-interpolation—isLiteralSafeForRegexpstill rejects anyconststring literal containing a regex metacharacter, with no opt-in for a deliberately-authored fragment. Live sites unchanged:sanitize_content_core.cjs(URL_START_DELIMITERS,URL_AUTHORITY_CHAR— 3 interpolation sites),model_aliases.cjs(VERSION_SUFFIX_PATTERN),glob_pattern_helpers.cjs(regexPattern) — all 5 already carryeslint-disable-next-linesuppressions — andhandle_agent_failure.cjs:72(AWF_API_PROXY_HOST_RE_SOURCE), still unsuppressed. Filed as a recurrence of #63566; this is the theme's 2nd filing, not yet at the 2-expiry retirement threshold.no-unsafe-catch-error-property— Re-read the rule behind #65255 (filed 2026-10-03 for a rename-alias blind spot atcodex_harness.cjs:328,571,733).caughtName()(lines 207-218) now resolves aconstalias of the catch parameter one hop back, andcatchParamUnchangedSinceAlias()(lines 220-229) guards against the alias being reassigned before use. Tracingcodex_harness.cjs:328(const err = /** @type {Error} */ error;thenerr.message) through the current logic, the rule would now correctly flag it. No new issue filed; next run will confirm whether #65255 closes as a genuine fix.Other checks, no issue:
process_runner.cjs:249-250has an unguardederror.code/error.messageaccess inside acatchwith no suppression — a true positiveno-unsafe-catch-error-propertyalready flags correctly (not a rule gap).codex_session.cjs/unified_session_payload.cjs'sstructuredCloneusage (9 call sites) and module-level constants were checked againstprefer-structured-cloneandno-duplicate-constant-valuesrespectively — both clean, closing out the remaining follow-up leads from the #65199 Codex-engine PR audit.Next actions
#65255at its ~2026-10-10 expiry — source read suggests it's already fixed; only refile if a genuinely new alias shape (2-hop rename, destructuring) turns up.require-escaped-regexp-interpolationrecurrence at its ~2026-10-11 expiry — a 2nd unfixed expiry would cross the 2-expiry retirement threshold for this theme.#64186(no-github-request-interpolated-routefallback-expression alias gap) is now 5 days old, approaching the typical first-expiry window.create_pull_requestsafe-output): the sharedtry-catch-rule-utils.tsVariableDeclaration-suggestion gap affecting ~14 rules remains twice-filed-and-expired (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) — tracked here for visibility only, will not be refiled a third time.All reactions