You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Focus this run: first review of the newly-added 8th rule require-await-core-summary-write (shipped by maintainers since the 2026-07-03 run — it was a nextPriorities candidate we'd flagged). Filed 3 non-duplicate refinement issues, all grounded against the live actions/setup/js corpus.
Key metrics
Metric
Value
Rules in plugin
8 (was 7)
Rule reviewed
require-await-core-summary-write
Issues filed
3 / 3 (limit)
Duplicates skipped
0 (no prior issue on this rule)
Live summary.write() sites
15 — all awaited (corpus disciplined)
Live un-awaited bugs
0
What the rule does well
Catches bare core.summary.write() and coreObj.summary.write(), including chained addRaw(...)/addHeading(...).write().
Gates the await suggestion on the innermost function actually being async (no syntax-error autofixes).
Refinements filed
3 issues (1 high, 2 medium)
[HIGH · FN] Local summary alias not resolved.isCoreLikeIdentifier (/^core/i) means const summary = core.summary; summary.write() is never flagged — getRootIdentifier returns "summary". This is a live idiom: route_slash_command.cjs:20, check_workflow_timestamp_api.cjs:414/435 (all currently awaited, so the risk is preventive but the pattern is real). Ask: resolve simple const/let/destructure aliases of core.summary.
[MED · FP] /^core/i over-matches. Any identifier starting with core (coreData, coreResults, coreference) + .summary.write() is flagged. No live false positive today; ask to either tighten to scope-resolved @actions/core bindings or document the breadth with a codifying test.
[MED · FN] Non-bare-call statement forms escape. Visitor only handles ExpressionStatement → direct CallExpression, missing && / ?: / comma-wrapped calls and .then()-without-await chains. No live sites; keep void exempt as deliberate-discard.
Corpus signal
Every one of the 15 summary.write() call sites is awaited — the codebase is disciplined, so all three issues are hardening / preventive, with issue #1 anchored to a live aliasing idiom in two files. No prior open issue targets this rule (searched titles + summary.write).
Prior open issues (re-verified, not re-filed)
setOutput 42680/42682, catch-family 42188/42189/42190/42915, the two require-async-entrypoint-catch issues from 2026-07-03, and parseInt/json 42015–42017/41962/41963 remain valid and open. create_issue cap (3/run) was spent on the new rule; no duplicates emitted.
Next actions
Watch whether the alias-resolution refinement (rejig docs #1) lands; if so, re-scan for newly-caught un-awaited sites.
Consider recommending maintainers de-duplicate the two no-unsafe-*-catch-error-property rules (drift risk).
Begin scouting a genuinely new defect class beyond the error-handling + summary family (e.g. core.setFailed non-string param, un-awaited exec.exec/fs.promises).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Overview
Focus this run: first review of the newly-added 8th rule
require-await-core-summary-write(shipped by maintainers since the 2026-07-03 run — it was anextPrioritiescandidate we'd flagged). Filed 3 non-duplicate refinement issues, all grounded against the liveactions/setup/jscorpus.Key metrics
require-await-core-summary-writesummary.write()sitesWhat the rule does well
core.summary.write()andcoreObj.summary.write(), including chainedaddRaw(...)/addHeading(...).write().fs.summary.write()/db.summary.write()/stream.write().awaitsuggestion on the innermost function actually beingasync(no syntax-error autofixes).Refinements filed
3 issues (1 high, 2 medium)
summaryalias not resolved.isCoreLikeIdentifier(/^core/i) meansconst summary = core.summary; summary.write()is never flagged —getRootIdentifierreturns"summary". This is a live idiom:route_slash_command.cjs:20,check_workflow_timestamp_api.cjs:414/435(all currently awaited, so the risk is preventive but the pattern is real). Ask: resolve simpleconst/let/destructure aliases ofcore.summary./^core/iover-matches. Any identifier starting withcore(coreData,coreResults,coreference) +.summary.write()is flagged. No live false positive today; ask to either tighten to scope-resolved@actions/corebindings or document the breadth with a codifying test.ExpressionStatement → direct CallExpression, missing&&/?:/ comma-wrapped calls and.then()-without-await chains. No live sites; keepvoidexempt as deliberate-discard.Corpus signal
Every one of the 15
summary.write()call sites isawaited — the codebase is disciplined, so all three issues are hardening / preventive, with issue #1 anchored to a live aliasing idiom in two files. No prior open issue targets this rule (searched titles +summary.write).Prior open issues (re-verified, not re-filed)
setOutput
42680/42682, catch-family42188/42189/42190/42915, the tworequire-async-entrypoint-catchissues from 2026-07-03, and parseInt/json42015–42017/41962/41963remain valid and open.create_issuecap (3/run) was spent on the new rule; no duplicates emitted.Next actions
no-unsafe-*-catch-error-propertyrules (drift risk).core.setFailednon-string param, un-awaitedexec.exec/fs.promises).References:
Beta Was this translation helpful? Give feedback.
All reactions