Canonical issue
This is the canonical issue for the recurring validate-gh-aw failure on #1171 (and every future github/gh-aw-actions/* Dependabot bump).
Outcome
Filing this so the automated PR-remediation loop stops re-deriving the same diagnosis on every run. #1171 has now been triaged four separate times (comments 5153421012, 5153453550, 5153454764) with the same conclusion. It cannot be fixed by any agent or by ·@·d·ependabot r·ecreate — it needs a one-time human toolchain bump. This issue records the exact change set.
Prior triage said "bump at source and recompile," which is correct but incomplete — it did not identify where the source pin lives. There are four places, and .github/aw/actions-lock.json and the three assertions inside gh-aw-validation.yml were never named.
Root cause
The .lock.yml files are compiler-generated. Dependabot rewrote the pinned SHA inside the generated artifacts; .github/workflows/gh-aw-validation.yml then recompiles from source with a hard-pinned v0.82.14 compiler and git diff --exit-codes the result. The recompile reverts Dependabot's edit, so the diff is non-empty and the job exits 1.
From run 30993992684 (- = committed by Dependabot, + = what the pinned compiler emits):
- uses: github/gh-aw-actions/setup@fd783ac87efde5e0c0e05d593f1906ea25b5d92e # v0.84.2
+ uses: github/gh-aw-actions/setup@b6d1443e05b8716267fa19425b99aa4f12006b4a # v0.82.14
##[error]Process completed with exit code 1.
The version is asserted in four independent places, all of which must move together:
| # |
Location |
Current value |
| 1 |
gh-aw-validation.yml → gh extension install github/gh-aw --pin v0.82.14, plus the ACTUAL_VERSION != v0.82.14 → exit 1 assert |
v0.82.14 |
| 2 |
gh-aw-validation.yml → prerelease check gh api repos/github/gh-aw/releases/tags/v0.82.14 |
v0.82.14 |
| 3 |
gh-aw-validation.yml → "Verify lock declaration" step, which hard-codes both the key and the SHA |
key github/gh-aw-actions/setup@v0.82.14, sha b6d1443e05b8716267fa19425b99aa4f12006b4a |
| 4 |
.github/aw/actions-lock.json → entries["github/gh-aw-actions/setup@v0.82.14"] |
{version: v0.82.14, sha: b6d1443e…} |
Because step 3 asserts the exact SHA and step 1 asserts the exact compiler version, editing any subset fails a different assertion. This is why no partial fix works.
Scope
- Included: the four call sites above, plus regenerating
canonical-pr-remediator.lock.yml and focused-coverage-controller.lock.yml with the v0.84.2 compiler.
- Explicitly excluded: the lock files must be produced by a real
gh aw compile run, not hand-edited. v0.84.2 may change more than the setup pin (the lock files also carry a pinned firewall container image, currently ghcr.io/github/gh-aw-firewall/agent:0.27.37@sha256:0d35e868…), so a hand-written diff will fail the same git diff --exit-code gate it is trying to satisfy.
Remediation (one-time, human, needs a real gh CLI environment)
gh extension remove aw || true
gh extension install github/gh-aw --pin v0.84.2
# 1-3: update the three v0.82.14 assertions in .github/workflows/gh-aw-validation.yml
# -> v0.84.2, and the expected setup SHA -> fd783ac87efde5e0c0e05d593f1906ea25b5d92e
# 4: update .github/aw/actions-lock.json entry key + version + sha
gh aw compile canonical-pr-remediator focused-coverage-controller --validate --approve
git add .github/workflows/*.lock.yml .github/aw/actions-lock.json .github/workflows/gh-aw-validation.yml
Then either fold that into #1171's branch or land it as a replacement PR and close #1171 as superseded.
Alternative (if the toolchain bump isn't wanted now)
Stop the recurring noise by having Dependabot ignore compiler-managed actions. .github/dependabot.yml currently has no ignore rule for these:
- package-ecosystem: "github-actions"
ignore:
- dependency-name: "github/gh-aw-actions/*"
Risk
- Risk level: low for the alternative; medium for the toolchain bump (touches every agentic workflow's compiled output, so the full
validate-gh-aw suite — --actionlint --zizmor --poutine — is the gate).
- Failure mode: a partial edit leaves
validate-gh-aw red on a different assertion than before.
- Rollback: revert the commit; the pin is entirely declarative.
Note on a related structural gate
PR Governance also fails on #1171 (run 30993990728) with Canonical issue is missing or still contains only template placeholders … exactly one closing reference is required: Closes #<issue>. Dependabot PRs can never satisfy this — their body is release notes. It is currently non-blocking (mergeable_state is unstable, not blocked), so it is cosmetic, but it will stay red on every bot PR. Related to #1130.
Canonical issue
This is the canonical issue for the recurring
validate-gh-awfailure on #1171 (and every futuregithub/gh-aw-actions/*Dependabot bump).Outcome
Filing this so the automated PR-remediation loop stops re-deriving the same diagnosis on every run. #1171 has now been triaged four separate times (comments 5153421012, 5153453550, 5153454764) with the same conclusion. It cannot be fixed by any agent or by
·@·d·ependabot r·ecreate— it needs a one-time human toolchain bump. This issue records the exact change set.Prior triage said "bump at source and recompile," which is correct but incomplete — it did not identify where the source pin lives. There are four places, and
.github/aw/actions-lock.jsonand the three assertions insidegh-aw-validation.ymlwere never named.Root cause
The
.lock.ymlfiles are compiler-generated. Dependabot rewrote the pinned SHA inside the generated artifacts;.github/workflows/gh-aw-validation.ymlthen recompiles from source with a hard-pinned v0.82.14 compiler andgit diff --exit-codes the result. The recompile reverts Dependabot's edit, so the diff is non-empty and the job exits 1.From run 30993992684 (
-= committed by Dependabot,+= what the pinned compiler emits):The version is asserted in four independent places, all of which must move together:
gh-aw-validation.yml→gh extension install github/gh-aw --pin v0.82.14, plus theACTUAL_VERSION != v0.82.14→exit 1assertv0.82.14gh-aw-validation.yml→ prerelease checkgh api repos/github/gh-aw/releases/tags/v0.82.14v0.82.14gh-aw-validation.yml→ "Verify lock declaration" step, which hard-codes both the key and the SHAgithub/gh-aw-actions/setup@v0.82.14, shab6d1443e05b8716267fa19425b99aa4f12006b4a.github/aw/actions-lock.json→entries["github/gh-aw-actions/setup@v0.82.14"]{version: v0.82.14, sha: b6d1443e…}Because step 3 asserts the exact SHA and step 1 asserts the exact compiler version, editing any subset fails a different assertion. This is why no partial fix works.
Scope
canonical-pr-remediator.lock.ymlandfocused-coverage-controller.lock.ymlwith the v0.84.2 compiler.gh aw compilerun, not hand-edited. v0.84.2 may change more than thesetuppin (the lock files also carry a pinned firewall container image, currentlyghcr.io/github/gh-aw-firewall/agent:0.27.37@sha256:0d35e868…), so a hand-written diff will fail the samegit diff --exit-codegate it is trying to satisfy.Remediation (one-time, human, needs a real gh CLI environment)
Then either fold that into #1171's branch or land it as a replacement PR and close #1171 as superseded.
Alternative (if the toolchain bump isn't wanted now)
Stop the recurring noise by having Dependabot ignore compiler-managed actions.
.github/dependabot.ymlcurrently has no ignore rule for these:Risk
validate-gh-awsuite —--actionlint --zizmor --poutine— is the gate).validate-gh-awred on a different assertion than before.Note on a related structural gate
PR Governancealso fails on #1171 (run 30993990728) withCanonical issue is missing or still contains only template placeholders … exactly one closing reference is required: Closes #<issue>. Dependabot PRs can never satisfy this — their body is release notes. It is currently non-blocking (mergeable_stateisunstable, notblocked), so it is cosmetic, but it will stay red on every bot PR. Related to #1130.