Skip to content

fix(ci): repair dogfood-gate.yml — the workflow has never run - #31

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/dogfood-gate-block-scalar
Jul 27, 2026
Merged

fix(ci): repair dogfood-gate.yml — the workflow has never run#31
hyperpolymath merged 1 commit into
mainfrom
fix/dogfood-gate-block-scalar

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

This workflow is invalid YAML, so GitHub refuses it at parse time. It produces no run, no check-run, no annotation and no log — not a red X, an absence. Nothing on a dashboard distinguishes "this gate passed" from "this gate does not exist".

The tell: the Actions API reports the workflow's name as its file path instead of its name: — GitHub registers a file it cannot parse under its path.

name = ".github/workflows/dogfood-gate.yml"
path = ".github/workflows/dogfood-gate.yml"   <- name == path

Cause

The embedded python3 -c " body starts at column 0:

        run: |
          python3 -c "
import tomllib, sys          # <- column 0 ends the block scalar

A run: | literal block ends at the first non-empty line indented less than the block. The Python terminates it, and YAML then tries to parse import tomllib, sys as a mapping key — "could not find expected :".

Fix

Indent the embedded body and its closing quote to the block indent. YAML strips that indent again when parsing, so the shell and the interpreter still receive the code at column 0. The content is unchanged; only the YAML framing differs.

Verified, not assumed

  • the file parses and yields a jobs: mapping
  • bash -n passes on the reconstructed run block
  • the resulting run: value is byte-identical to the same workflow in repos where it already parses (e.g. bofig) — this reproduces the known-good form rather than inventing one
  • exactly one file changed

Scope

Measured estate-wide: 211 invalid workflow files across 116 repos, confirmed by the Actions API. dogfood-gate.yml accounts for 71 of them.

🤖 Generated with Claude Code

This workflow is invalid YAML, so GitHub refuses it at parse time. It produces
NO run, NO check-run, NO annotation and NO log — not a red X, an absence.
Nothing on a dashboard distinguishes "this gate passed" from "this gate does
not exist", which is why it went unnoticed.

The tell is the Actions API reporting the workflow's name as its FILE PATH
(`.github/workflows/dogfood-gate.yml`) instead of its `name:` — GitHub
registers a file it cannot parse under its path.

CAUSE: the embedded `python3 -c "` body starts at column 0. A `run: |` literal
block scalar ends at the first non-empty line indented less than the block, so
the Python terminates the block and YAML then tries to parse `import tomllib,
sys` as a mapping key — "could not find expected ':'".

FIX: indent the embedded body and its closing quote to the block indent. YAML
strips that indent again when parsing, so the shell and the interpreter still
receive the code at column 0. The content is unchanged; only the YAML framing
differs.

VERIFIED, not assumed:
  * the file parses and yields a `jobs:` mapping;
  * `bash -n` passes on the reconstructed run block;
  * the resulting `run:` value is BYTE-IDENTICAL to the same workflow in repos
    where it already parses (e.g. bofig) — this reproduces the known-good form
    rather than inventing one;
  * exactly one file is changed.

Measured estate-wide 2026-07-27: 211 invalid workflow files across 116 repos,
confirmed by the Actions API. `dogfood-gate.yml` is 71 of them.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@hyperpolymath
hyperpolymath merged commit 0424d7e into main Jul 27, 2026
19 of 23 checks passed
@hyperpolymath
hyperpolymath deleted the fix/dogfood-gate-block-scalar branch July 27, 2026 13:52
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