stablyai/orca · error · Error

Timed out finding dispatched mac release build workflow run

Error message

Timed out finding dispatched mac release build workflow run named "${expectedTitle}".

What it means

Thrown by findDispatchedReleaseMacBuildRun when, within RUN_DISCOVERY_TIMEOUT_SECONDS (120s), no workflow run matching the dispatch can be found. A match requires created_at >= dispatchStartedAtMs (now-10s) AND display_title === expectedReleaseMacBuildRunTitle ('Mac release build <tag> (<releaseRunId>)').

Source

Thrown at config/scripts/run-release-mac-build-workflow.mjs:110

      `/repos/${api.owner}/${api.repo}/actions/workflows/${encodeURIComponent(
        options.workflow
      )}/runs?event=workflow_dispatch&per_page=20`
    )
    const workflowRuns = Array.isArray(response?.workflow_runs) ? response.workflow_runs : []
    const match = workflowRuns.find((run) => {
      const createdAtMs = Date.parse(run.created_at ?? '')

      return createdAtMs >= deps.dispatchStartedAtMs && run.display_title === expectedTitle
    })

    if (match) {
      return match
    }

    await sleep(options.pollSeconds * 1000)
  }

  throw new Error(
    `Timed out finding dispatched mac release build workflow run named "${expectedTitle}".`
  )
}

export async function waitForReleaseMacBuildRun(api, workflowRunId, options, deps = {}) {
  const now = deps.now ?? Date.now
  const sleep = deps.sleep ?? sleepMilliseconds
  const deadlineMs = now() + options.timeoutMinutes * 60 * 1000

  while (now() <= deadlineMs) {
    const run = await api.request(
      'GET',
      `/repos/${api.owner}/${api.repo}/actions/runs/${workflowRunId}`
    )

    if (run.status === 'completed') {
      return run
    }

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Confirm options.workflow (RELEASE_MAC_BUILD_WORKFLOW) matches the actual workflow file name.
  2. Verify tag and releaseRunId produce the exact expected title via expectedReleaseMacBuildRunTitle.
  3. Reduce concurrent dispatches or bump per_page/poll if the run falls outside the first 20.
  4. Re-run; transient GitHub lag under heavy load is common.

Example fix

// before
const workflowRun = await findDispatchedReleaseMacBuildRun(api, options, deps)
// after
// confirm title formula matches what the workflow produces
console.log(expectedReleaseMacBuildRunTitle(options))
// and widen discovery by increasing pollSeconds / re-dispatching if GitHub lagged
Defensive patterns

Strategy: retry

Validate before calling

const expectedTitle = expectedReleaseMacBuildRunTitle(options)
// sanity-check inputs that form the title before dispatching
if (!options.tag || !options.releaseRunId) {
  throw new Error('tag and releaseRunId are required to match the dispatched run title')
}

Type guard

function isWorkflowRun(value) {
  return value != null && (typeof value.id === 'number') && (typeof value.display_title === 'string')
}

Try / catch

try {
  workflowRun = await findDispatchedReleaseMacBuildRun(api, options, deps)
} catch (err) {
  if (/Timed out finding dispatched mac release build/.test(err.message)) {
    // GitHub lag: wait and re-dispatch/re-poll once, with a wider per_page
  }
  throw err
}

Prevention

When it happens

Trigger: After dispatchReleaseMacBuildWorkflow, polling GET .../actions/workflows/<wf>/runs?event=workflow_dispatch&per_page=20 never yields a run whose title and creation time match. Possible because the dispatch was accepted but the run is slow to register, the title format changed, or per_page=20 omits it behind many newer runs.

Common situations: Workflow file renamed/mismatched, tag or releaseRunId mismatch, high workflow churn pushing the new run past the first 20, clock skew on created_at, dispatch actually 202 (queued) but not yet creating a run object.

Understand the failure class

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/946ed9fc753c5546. Report an issue: GitHub.