fix(ci): repair dogfood-gate.yml — the workflow has never run - #55
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
nameas its file path instead of itsname:— GitHub registers a file it cannot parse under its path.Cause
The embedded
python3 -c "body starts at column 0: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 parseimport tomllib, sysas 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
jobs:mappingbash -npasses on the reconstructed run blockrun: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 oneScope
Measured estate-wide: 211 invalid workflow files across 116 repos, confirmed by the Actions API.
dogfood-gate.ymlaccounts for 71 of them.🤖 Generated with Claude Code