コンテンツにスキップ

GHA Diagnosis: lt-shadow-rust-diff.yml — 2026-04-13

Classification

  • Category: (d) config drift

Symptoms

  • Recent failures reproduced across multiple pushes on main and one feature branch.
  • Example failed run: 24312057219
  • gh run view 24312057219 reported: This run likely failed because of a workflow file issue.
  • gh run view 24312057219 --json jobs returned jobs: []
  • gh api repos/ryofukutani/dev-Project/check-suites/64297915971/check-runs returned total_count: 0

Observed Pattern

gh run list --workflow=lt-shadow-rust-diff.yml --limit 5 --json databaseId,conclusion,headBranch,startedAt,displayTitle

  • 24312057219 failure on main at 2026-04-12T17:16:10Z
  • 24312023583 failure on main at 2026-04-12T17:14:21Z
  • 24312000179 failure on main at 2026-04-12T17:13:07Z
  • 24311991507 failure on codex/shadow-endurance-test-20260413 at 2026-04-12T17:12:40Z
  • 24311965135 failure on main at 2026-04-12T17:11:16Z

This pattern indicates the failure is not tied to a single content commit. The workflow definition itself is failing before any job starts.

Root Cause Analysis

The current default-branch bootstrap workflow is:

  • File: .github/workflows/lt-shadow-rust-diff.yml
  • Bootstrap job: jobs.proxy_to_phase2
  • Local line added by recent audit commit:
  • timeout-minutes: 15
  • Blame:
  • line 127 attributed to commit 0e6e01bd2 ([auto] codex(gha): #27 finish timeout audit on proxy workflows)

The same bootstrap job calls a reusable workflow via:

  • uses: ryofukutani/dev-Project/.github/workflows/lt-shadow-rust-diff.yml@473b88dd8f61d0af50cb2533e959cf240bc4e9af

The pinned target workflow at 473b88dd8f61d0af50cb2533e959cf240bc4e9af is valid as a reusable workflow because it declares:

  • on.workflow_call

However, GitHub Actions documentation for reusable workflows lists the supported keywords for a job that calls a reusable workflow as:

  • name
  • uses
  • with
  • secrets
  • strategy
  • needs
  • if
  • concurrency
  • permissions

timeout-minutes is not included in that supported-keyword set.

Source:

  • GitHub Docs: Reusing workflow configurations
  • URL: https://docs.github.com/en/enterprise-cloud@latest/actions/reference/workflows-and-actions/reusing-workflow-configurations

Because the failing run has zero jobs and GitHub explicitly labels it as a workflow file issue, the most likely root cause is:

  • the bootstrap caller workflow drifted out of the reusable-workflow syntax contract when timeout-minutes: 15 was added to jobs.proxy_to_phase2
  • Remove timeout-minutes from the caller job in .github/workflows/lt-shadow-rust-diff.yml
  • Re-push and re-trigger lt-shadow-rust-diff.yml
  • If a runtime failure appears after that, treat it as a second-stage issue. The current failure is blocking before runner execution.