Skip to content

ci(rust): rewrite rust-ci.yml so the workflow actually registers#89

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/rust-ci-workflow-parse
May 14, 2026
Merged

ci(rust): rewrite rust-ci.yml so the workflow actually registers#89
hyperpolymath merged 1 commit into
mainfrom
fix/rust-ci-workflow-parse

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Rust CI on verisimiser has been failing at the workflow-parse layer since 2026-04-04. Every push reported "workflow file issue" + 0 jobs ever scheduled, and the API returned name: ".github/workflows/rust-ci.yml" (the file path) instead of the declared name: Rust CI — characteristic of a parse-time failure GitHub can't surface a line number for.

Because Rust CI is not a required status check, auto-merge happily landed PRs without it. About 25 recent PRs landed in this state.

Couldn't pin down the specific parser issue locally (actionlint not available). Rewrote from a minimal known-good template:

  • Drop verbose comment header
  • Idiomatic on: form
  • Replace SHA-pinned actions with major-version tags
  • Keep the MSRV matrix [1.85, stable] from V-L3-K1
  • Drop the if: hashFiles('Cargo.toml') != '' gate (Cargo.toml is unconditional in this repo)
  • Keep testcheck dependency

Test plan

  • CI for this PR registers and runs jobs — proves the rewrite is parseable
  • cargo fmt --check, cargo clippy -D warnings, cargo test all run for 1.85 + stable

This is the one PR where I genuinely want to see CI go green before merging — please don't auto-merge until check + test both report success.

The previous Rust CI workflow had been failing at the workflow-parse
layer since 2026-04-04. The symptoms in the Actions API are
characteristic: `name: ".github/workflows/rust-ci.yml"` (the file
path, not the declared `name: Rust CI`), 0 jobs ever scheduled, and
"This run likely failed because of a workflow file issue" in the
runner output. Every push for ~6 weeks reported failure for this
workflow specifically without ever running any of its jobs.

Because Rust CI is not a required status check, auto-merge was happy
to land PRs without it. ~25 PRs landed in this state.

I could not reproduce the parser failure offline (`actionlint` was
not available locally). Rather than spelunk through invisible-char
hunches, rewrite from a minimal template that is known to work in
GitHub Actions today and let CI tell us if it actually registers:

  - drop the verbose comment header and SPDX-only line (keep one)
  - simplify `on:` to its idiomatic form
  - replace SHA-pinned actions with major-version tags
    (`actions/checkout@v4`, `dtolnay/rust-toolchain@stable`/`@master`,
    `Swatinem/rust-cache@v2`) — easier to maintain and matches what
    works elsewhere in the org
  - keep the MSRV matrix (`1.85`, `stable`) from V-L3-K1
  - drop the `if: hashFiles('Cargo.toml') != ''` gate — this repo
    has a Cargo.toml at root unconditionally, so the gate adds zero
    value and is a source of parse-time complexity
  - keep the dependency `test` → `check` so test only runs when
    fmt+clippy are clean

Closes the "Rust CI never ran" debt accumulated across recent PRs.
Future Rust changes will land with real verification.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit e50eaca into main May 14, 2026
16 of 19 checks passed
@hyperpolymath hyperpolymath deleted the fix/rust-ci-workflow-parse branch May 14, 2026 21:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant