Skip to content

DO NOT MERGE: negative control for BLO-23511 workflow-parse gate - #1430

Closed
allyblockcast[bot] wants to merge 2 commits into
masterfrom
release/blo-23511-negative-control
Closed

DO NOT MERGE: negative control for BLO-23511 workflow-parse gate#1430
allyblockcast[bot] wants to merge 2 commits into
masterfrom
release/blo-23511-negative-control

Conversation

@allyblockcast

@allyblockcast allyblockcast Bot commented Aug 19, 2026

Copy link
Copy Markdown

Throwaway. Do not merge. Will be closed as soon as CI reports.

Negative control for #1429. Contains that PR's gate plus a deliberate break: f94d5212's unparseable docker-agent.yml, restored verbatim.

A gate that only passes on valid input has not been shown to work. Expected result: the required policy job goes red at docker-agent.yml:409 — and note that without the gate this same break produces an instant 0-job run and every check stays green, which is the entire defect.

Refs BLO-23511

An unparseable workflow produces zero jobs, so it cannot fail any gate.
GitHub manufactures a run that completes instantly with
`conclusion: failure` and `jobs: []`, and every required check stays green
because the broken workflow never ran. `docker-agent.yml` was unparseable on
master for ~19h (f94d521 -> b6ac6af): no toolchain build, no image promote,
no cluster image bump. The job that broke the file was the `alert-on-failure`
job added to detect that very workflow failing, so the alert could never fire.

`check-github-runner-labels.mjs` reads these same files but scans them line by
line, and a line scanner reads a structurally broken file happily — so the
repo had a workflow-scanning gate constitutionally unable to detect a workflow
that does not parse.

Adds actionlint to the `policy` job, pinned by version and SHA256. The
`policy` job never installs node_modules (setup-pnpm runs with the default
`run_install: false`) and `js-yaml` is only a version constraint in
package.json, not a dependency; declaring one would change pnpm-lock.yaml,
which `Block manual lockfile edits` rejects in the same job. A static binary
sidesteps both, parses with a real YAML parser, and checks more besides.

The gate fails closed. A missing binary or an empty workflow set is an error,
not a skip — quietly no-opping would reproduce the exact bug being fixed.
`-shellcheck=`/`-pyflakes=` are pinned off so the verdict depends on the
pinned binary alone rather than on what a runner happens to preinstall.

Verified: rejects f94d521's docker-agent.yml at line 409, the exact line the
YAML parser cites; passes all 25 workflows on master.

Refs BLO-23511
Refs BLO-23128
…gent.yml (BLO-23511)

Deliberately reintroduces the exact broken workflow from f94d521 to prove the
BLO-23511 parse gate fires. Expected: policy job red at docker-agent.yml:409.
This branch is a throwaway demonstration and must never merge.

Refs BLO-23511
@allyblockcast

allyblockcast Bot commented Aug 19, 2026

Copy link
Copy Markdown
Author

🔗 Paperclip issue: BLO-23511

1 similar comment
@allyblockcast

allyblockcast Bot commented Aug 19, 2026

Copy link
Copy Markdown
Author

🔗 Paperclip issue: BLO-23511

@allyblockcast

allyblockcast Bot commented Aug 19, 2026

Copy link
Copy Markdown
Author

Hey @allyblockcast[bot]! Before this PR can be reviewed, a few things need attention:

Missing or incomplete:

  • Missing section: ## Thinking Path
  • Missing section: ## What Changed
  • Missing section: ## Verification
  • Missing section: ## Risks
  • Missing section: ## Model Used
  • Add the dedup-search checkbox to your PR description and check it once you have searched the GitHub PR list for similar PRs. See the PR template at .github/PULL_REQUEST_TEMPLATE.md and CONTRIBUTING.md → "Before You Start: Search First".

Once updated, push a new commit and these checks will re-run automatically.

— commitperclip

@allyblockcast

allyblockcast Bot commented Aug 19, 2026

Copy link
Copy Markdown
Author

Negative control complete — closing as planned. Never intended to merge.

Result: the gate fired exactly as specified. policy went red in 1m24s, and the only failing step was the new one:

.github/workflows/docker-agent.yml:409:0: could not parse as YAML: yaml: line 409: could not find expected ':' [syntax-check]
    |
409 | \`Docker (agent base)\` failed on master at commit ${HEAD_SHA}.
    |

Workflow validation failed. A workflow that does not parse produces zero jobs, so GitHub reports
an instant 0-job run and every other check stays green — that is why this must block here.
##[error]Process completed with exit code 1.

Run: https://github.com/Blockcast/paperclip/actions/runs/32304796388/job/96235109283

Line 409 — the exact line the YAML parser cites in BLO-23511. Setup actionlint succeeded first (download + SHA256 verified), so the failure is the gate doing its job, not tooling. Same commit on #1429 without the break: policy pass.

Refs BLO-23511

@allyblockcast allyblockcast Bot closed this Aug 19, 2026
@allyblockcast
allyblockcast Bot deleted the release/blo-23511-negative-control branch August 19, 2026 21:40
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.

0 participants