Commit 1182089
## Diagnosis (Refs #77)
Three workflows — `cargo-audit.yml`, `secret-scanner.yml`,
`dogfood-gate.yml` — have been **rejected by GitHub's workflow validator
on every push since they were introduced**. Evidence:
- Run `name` == `path` == the file path (GitHub never parsed a `name:`
field).
- `jobs: []`, no logs (`log not found` / HTTP 404 on the logs API).
- `run_started_at == created_at == updated_at` → **duration 0 s**, i.e.
failed before any scheduling.
- `cargo-audit.yml` has **never once succeeded** across its entire
30-run history.
This is GitHub's classic *"invalid workflow file"* signature, **not**
runner starvation and **not** a billing cap.
### Root causes
| File | Defect |
|------|--------|
| `cargo-audit.yml` | `if: hashFiles('Cargo.lock') != ''` at **job**
level. `hashFiles()` is not available in a job-level `if:` (only
step-level contexts) → whole workflow invalid. |
| `secret-scanner.yml` | Same illegal job-level `if:
hashFiles('**/Cargo.toml') != ''` on the `rust-secrets` job. |
| `dogfood-gate.yml` | Inline `python3 -c "..."` heredoc dedented to
column 0, breaking out of the `run: \|` block scalar → YAML scanner
error at line 261 (`could not find expected ':'`). |
### Fixes (minimal, surgical — only these 3 files)
- `cargo-audit.yml` / `secret-scanner.yml`: replaced the illegal
job-level `if:` with a step-level detection guard that sets an output;
subsequent steps gate on `steps.detect.outputs.present == 'true'`. Same
skip-when-absent intent, legal context.
- `dogfood-gate.yml`: rewrote the embedded Python as an indented quoted
heredoc that is `sed`-dedented before reaching the interpreter.
Validation logic and exit semantics unchanged (functionally verified
locally: emits `Valid: x (1 function(s))`, exit 0).
All three now pass `yaml.safe_load` and **actionlint with zero
findings**.
### Note on the broader "~70/100 queued" symptom
That is a **separate** issue from these 3 instant-failures.
`hyperpolymath` is a personal User account (org runner / runner-group /
billing APIs all 404 as expected); zero self-hosted runners are
registered and **every** `runs-on:` in the repo is `ubuntu-latest`. The
queue backlog is GitHub-hosted concurrency saturation on a personal
account, amplified by many workflows (`mirror.yml`, `instant-sync.yml`,
`scorecard*`, etc.) firing on every push/PR. That requires a
workflow-trigger-pruning / concurrency-group change tracked separately —
this PR fixes only the tractable code defect (the 3 invalid files).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 8b357bf commit 1182089
3 files changed
Lines changed: 54 additions & 26 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
25 | 24 | | |
26 | 25 | | |
27 | 26 | | |
28 | 27 | | |
29 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
30 | 39 | | |
| 40 | + | |
31 | 41 | | |
32 | 42 | | |
33 | 43 | | |
| 44 | + | |
34 | 45 | | |
35 | 46 | | |
36 | 47 | | |
| 48 | + | |
37 | 49 | | |
38 | 50 | | |
39 | 51 | | |
40 | | - | |
| 52 | + | |
41 | 53 | | |
42 | 54 | | |
43 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
256 | 256 | | |
257 | 257 | | |
258 | 258 | | |
259 | | - | |
260 | | - | |
261 | | - | |
262 | | - | |
263 | | - | |
264 | | - | |
265 | | - | |
266 | | - | |
267 | | - | |
268 | | - | |
269 | | - | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
274 | | - | |
275 | | - | |
276 | | - | |
277 | | - | |
278 | | - | |
279 | | - | |
280 | | - | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
281 | 287 | | |
282 | 288 | | |
283 | | - | |
| 289 | + | |
284 | 290 | | |
285 | 291 | | |
286 | 292 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
42 | 41 | | |
43 | 42 | | |
44 | 43 | | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
45 | 54 | | |
| 55 | + | |
46 | 56 | | |
47 | 57 | | |
48 | 58 | | |
| |||
0 commit comments