Repository navigation
Description
Problem
The .lock.yml emitted by gh-aw compilation fails actionlint with 6 errors. Observed during an empirical cold start against a throwaway repo (run 32520171517).
Errors observed
Two distinct classes:
copilot-requestspermission scope — not recognized by actionlint's schema.concurrency.queue— not a valid key underconcurrencyin the GitHub Actions workflow schema.
Why it matters
The emitted lock file is the artifact that actually runs. A workflow that does not lint clean is a workflow whose validity is being asserted rather than verified — and it means actionlint cannot be used as a gate on generated output, because it is already red for reasons unrelated to any given change.
That is the same shape as the other findings from this session: a check that cannot distinguish "broken" from "expected noise" provides no signal. Per .squad/decisions.md:604, a gate that is permanently red is equivalent to no gate.
Open question
Whether these are genuine defects in the emitted YAML, or actionlint schema gaps for newer GitHub features (copilot-requests in particular may be legitimately new). That distinction should be resolved first — the fix is different in each case:
- If emitted YAML is wrong → fix the compiler.
- If actionlint is behind → pin an actionlint config / ignore list scoped to exactly these two keys, so the remaining 4 errors still gate.
Do not suppress all 6 without determining which bucket each falls into. Blanket suppression would remove the signal entirely.
Related
Also found in the same cold start, worth handling together if someone is already in this area:
- The documented
git addline drops.github/aw/actions-lock.json, so a user following the docs commits an incomplete activation. - Three default-token scope gaps observed during activation.
These are smaller and may fold into the same PR.
Owners
FIDO (lint gate) with EECOM (compiler, if the emitted YAML is at fault).
Activity
bradygaster commentedon Aug 23, 2026
1. Owner & rationale
Owner:
squad:booster. This is generated workflow validity plus CI/lint gating, which sits with Booster; EECOM may need to review if classification shows compiler-emitted YAML is invalid.Labels reconciled as:
gh-aw,type:bug,priority:p1,wave:1-next,squad:booster,triaged,go:needs-researchbecause the first task is to classify each actionlint diagnostic as real emitted-YAML invalidity vs actionlint schema lag.2. Files in scope
Verified existing paths:
workflows/squad.mdworkflows/squad-implement-worker.md.github/actionlint.yamltest/gh-aw-quality.test.tstest/workflows.test.cjs3. Reproduction / measurement
These commands were execution-tested and use no output suppression. They fetch the emitted lock from the cold-start repo into a project-local scratch path, then run actionlint directly without gh-aw's ignore list:
The current fetched lock reproduces the two reported classes (
copilot-requests,concurrency.queue). The issue reports six diagnostics in the original emitted set; classify the current emitted set rather than assuming the count.4. Verification bar
A regenerated
.lock.ymlmust either pass direct actionlint with no project-specific suppression, or fail only on a minimal, documented ignore list where each ignored diagnostic is proven to be actionlint schema lag. The gate must remain capable of failing on any other invalid generated YAML.5. Traps
Do not blanket-suppress all six reported errors. Classify each diagnostic first:
concurrency.queuelooks like compiler-emitted invalid YAML unless GitHub Actions has a matching schema extension;copilot-requestsmay be actionlint schema lag. The fixes differ, and broad suppression destroys the remaining signal.6. Out of scope
Do not rewrite unrelated workflow prompts, change runtime permissions beyond the classified fix, or turn this into a general actionlint cleanup. Related doc/git-add and token-scope gaps noted in the issue body should be separate follow-ups unless the same line is already being touched.
7. Session-stall guard
fix(ci): scope an SC2016 suppression and restore its coverage by test
fix(ci): lint gh-aw generated workflows instead of skipping them (git…