Hmbown/CodeWhale · error · Error
No release.yml workflow run found for
Error message
No release.yml workflow run found for ${tag} at ${tagSha}. Rerun the Release workflow before publishing npm, or increase the verifier's last-100-runs search window. What it means
findReleaseWorkflowRun scans the last 100 runs of release.yml for a run matching the given tag and commit SHA. If no candidate runs exist at all, it throws telling you to rerun the Release workflow or widen the search window before publishing npm.
Solutions
- Rerun the Release workflow for the tag, then retry the publish.
- Check `gh run list --workflow=release.yml` for the tag run.
- Reduce CI run volume or raise the per_page window (currently 100) in the script.
Example fix
// before npm publish // after gh workflow run release.yml -f tag=v1.2.3 && npm run verify-release-assets && npm publish
Defensive patterns
Strategy: retry
Validate before calling
const runs = await githubApi(repo, "/actions/workflows/release.yml/runs?per_page=100"); if (!runs.workflow_runs?.some(r => r.head_sha === expectedSha)) throw new Error("Run the Release workflow first"); Try / catch
try { await verifyReleaseAssets(); } catch (e) { if (e.message.includes("No release.yml workflow run found")) { console.error("Trigger release.yml for this tag, wait for it to finish, then retry."); process.exit(1); } throw e; } Prevention
- Always trigger the Release workflow before npm publish
- Gate publish on successful completion of release.yml
- Keep release workflow runs within the last-100 window or increase per_page
When it happens
Trigger: publish step calls findReleaseWorkflowRun(repo, tag, tagSha) and the /actions/workflows/release.yml/runs list contains no run associated with the tag/SHA within the last 100 runs.
Common situations: Publishing npm before the Release workflow was ever triggered for the tag; more than 100 newer runs pushed the release run out of the window; workflow file renamed so the list is empty.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
- No successful asset-publishing job found in release.yml…
- depends on workspace crate [ ], which is not in the…
- Downloaded release artifacts are missing
- npm package version does not match codewhaleBinaryVersion …
- publish package list is missing workspace crates
AI-assisted analysis of Hmbown/CodeWhale@433685b202 (2026-09-15).
Data as JSON: /api/errors/df37040f6e21ac26.
Report an issue: GitHub.
Appendix: source
Thrown at npm/codewhale/scripts/verify-release-assets.js:247
const runId = candidate.database_id || candidate.id;
if (!runId) {
continue;
}
const jobs = await api(repo, `/actions/runs/${runId}/jobs?per_page=100`);
const releaseJob = (jobs.jobs || []).find(
(job) => job.name === "release" && job.conclusion === "success",
);
if (releaseJob) {
// #5429: pin asset freshness to the successful release job's own
// started_at, not the run-level run_started_at. A job-level rerun
// (`gh run rerun --failed`) bumps run_started_at past the asset upload
// timestamps even though this release job produced those assets.
return { ...candidate, release_job_started_at: releaseJob.started_at || null };
}
}
if (orderedCandidates.length === 0) {
throw new Error(
`No release.yml workflow run found for ${tag} at ${tagSha}. ` +
"Rerun the Release workflow before publishing npm, or increase the verifier's last-100-runs search window.",
);
}
throw new Error(
`No successful asset-publishing job found in release.yml workflow runs for ${tag} at ${tagSha}. ` +
"Repair the Release workflow before publishing npm.",
);
}
function parseGitHubTime(value, label) {
const timestamp = Date.parse(value);
if (!Number.isFinite(timestamp)) {
throw new Error(`GitHub ${label} timestamp is invalid: ${value}`);
}
return timestamp;
}
View on GitHub (pinned to 433685b202)