Skip to content

fix(ci): silence two flavors of ghost-failure noise on PR pushes#117

Merged
EricAndrechek merged 2 commits into
mainfrom
claude-skip-self-mod
May 12, 2026
Merged

fix(ci): silence two flavors of ghost-failure noise on PR pushes#117
EricAndrechek merged 2 commits into
mainfrom
claude-skip-self-mod

Conversation

@EricAndrechek

@EricAndrechek EricAndrechek commented May 12, 2026

Copy link
Copy Markdown
Member

Two related noise sources

Both produce red workflow runs on PR pushes that don't reflect actual problems and were flooding the inbox.

1. claude-review.yml failing on PRs that edit Claude's own files

The Anthropic action runs a self-validation step that fails when its own workflow file (.github/workflows/claude-review.yml) or the prompt template (.github/prompts/pr-review.md) is in the PR's diff. Every PR touching Claude's wiring (#105, #108, #109, #110, #111, #113, the merge commit of #115) has logged a noisy red Claude check that resolves itself once the change merges.

Fix: in claude-review.yml's gate step, query the PR's changed files; if either path is in the diff, set skip=true and exit 0. The check shows success, the action never runs, the change still takes effect on the next PR's review.

2. dependabot-automerge.yml push failure ghost runs on every branch push

#115 added reviewers: ${{ replace(env.ADMINS, ',', ' ') }} to convert the comma-separated ADMINS env var to the space-separated form the composite expects. Problem: replace() isn't a GitHub Actions expression function. The valid list is contains, startsWith, endsWith, format, join, toJSON, fromJSON, hashFiles, plus status checks. An unknown function fails workflow validation, and GitHub records a failed run with the file path (not the workflow's name:) as the display name and no jobs — every push to any branch since #115 merged.

Fix: replace the bad expression with a real bash step that uses parameter expansion (${ADMINS//,/ }) to write ADMINS_SPACE to $GITHUB_ENV. The composite's with: then references env.ADMINS_SPACE. Both steps gated on update-type == version-update:semver-major so they only run when actually needed.

Test plan

  • This PR's own Claude check: success (skip-gate catches the self-modification).
  • After merge, branch pushes no longer trigger the ghost .github/workflows/dependabot-automerge.yml push failure runs.
  • Next major-version Dependabot PR: both admins assigned correctly via ADMINS_SPACE.

🤖 Generated with Claude Code

`anthropics/claude-code-action` runs a self-validation step that
fails when its own workflow file (`.github/workflows/claude-review.yml`)
or the prompt template (`.github/prompts/pr-review.md`) is in the
PR's diff — the action parses them and breaks on configs that aren't
the live runtime version. Every PR touching Claude's wiring (which
is most recent activity — #105, #108, #109, #110, #111, #113, this
PR's parent #115) has been logging a noisy red Claude check that
resolves itself once the change merges.

Add a self-modification gate in the trust-step before the action
runs: if `gh pr view --json files` includes either path, set
`skip=true` and exit 0. The check shows success, the action never
runs, and the change still takes effect on the next PR's review
once this is merged. Same skip mechanism we already use for
untrusted committers; the orchestrator's bot-clean (now in
housekeeping) doesn't care about Claude review's specific
conclusion, just that it completed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@gemini-code-assist

Copy link
Copy Markdown

Note

Gemini is unable to generate a summary for this pull request due to the file types involved not being currently supported.

@github-actions github-actions Bot added github_actions Pull requests that update GitHub Actions code area/infra CI, build, deploy, Docker, release labels May 12, 2026
@github-actions github-actions Bot requested a review from taitelee May 12, 2026 16:57
#115 introduced `${{ replace(env.ADMINS, ',', ' ') }}` to convert
the comma-separated ADMINS env var into the space-separated form
the assign-and-request-review composite expects. Problem: GitHub
Actions doesn't have a `replace()` expression function — the valid
list is `contains`, `startsWith`, `endsWith`, `format`, `join`,
`toJSON`, `fromJSON`, `hashFiles`, plus status checks. An unknown
function in a `with:` expression fails workflow validation, which
is why every branch push has been producing a ghost
`.github/workflows/dependabot-automerge.yml push failure` run with
no jobs and the file path (not the workflow's `name:`) as the
display name — GitHub couldn't load the workflow definition cleanly
for the push event.

Replaced with a bash step that uses parameter expansion
(`${ADMINS//,/ }`) to do the conversion, then the composite reads
`env.ADMINS_SPACE`. Both steps gated on the major-bump path so
they only run when actually needed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@EricAndrechek EricAndrechek changed the title fix(ci): skip Claude review on PRs that edit Claude's own files fix(ci): silence two flavors of ghost-failure noise on PR pushes May 12, 2026
@EricAndrechek EricAndrechek merged commit e989ff8 into main May 12, 2026
6 of 7 checks passed
@EricAndrechek EricAndrechek deleted the claude-skip-self-mod branch May 12, 2026 17:07
@github-project-automation github-project-automation Bot moved this from Backlog to Done in WaveHouse Task Board May 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/infra CI, build, deploy, Docker, release github_actions Pull requests that update GitHub Actions code

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants