Skip to content

docs: gotcha 27's root cause, which beats the fingerprint it was built on - #321

Merged
oddharsh merged 3 commits into
mainfrom
claude/gotcha27-root-cause
Aug 11, 2026
Merged

oddharsh merged 3 commits into
mainfrom
claude/gotcha27-root-cause

Conversation

@oddharsh

Copy link
Copy Markdown
Owner

Gotcha 27 tells you how to recognise a Copilot Autofix crash from the outside: a null output.title, a lone annotation pointing at .github:<line> (a directory, so it cannot be a location), a line number that repeats across PRs sharing no content. All of that is circumstantial, and the note says so by hedging in its own first word ("usually").

#319 failed the same way on 2026-08-11 — the sixth sighting, and the third at .github:213 — and this time the job log gives up the actual error:

Error creating PR review request: SessionModelError: Execution failed:
CAPIError: 400 The requested model is not supported.

Copilot's review agent asked GitHub's own model API for a model that API refused, threw inside runAgenticLoop, and exited 1. It never read the diff. The check is reporting an outage in Copilot's model routing, so no change to your branch can turn it green.

What this changes about the procedure

The note now leads with a pointer to the root-cause paragraph, and the fingerprint stays as history rather than as the primary test. The new test names the failure instead of pattern-matching around it:

gh api repos/oddharsh/site/check-runs/<check-run-id> --jq .details_url
gh run view <run-id> --log-failed | grep -i "CAPIError\|Copilot Error"

A crashed agent prints the error. A real finding leaves the grep empty and posts an inline review comment on a source line instead — which is the distinction #299 proved matters, when both variants landed an hour apart under the same check name.

Two smaller things the same run settled

  • The workflow is dynamic/agents/github-advanced-security, titled "Code scanning AI findings on PR #N", and it lives nowhere in .github/workflows/. That is why no file in this repo configures it and why grepping the tree for it finds nothing.
  • A re-notification can arrive for a run that already failed hours earlier. feat(shell): the tooltips XP had, on the chrome that only had a title= #319 alerted twice on check-run 93749646946, same completed_at both times, with no new commit in between. Compare id and completed_at before investigating, because a repeat alert about an old run is indistinguishable from a fresh failure in the notification itself.

Scope

Docs only — one gotcha in CLAUDE.md (AGENTS.md is its symlink). No code, no config, nothing shipped, and nothing here reads CLAUDE.md in a test or build step. Counts updated with it: "five times across two days" → six across three, and "red on five PRs while gating none of them" → six.

Split out of #319 deliberately: that PR is a feature change, and CI-noise documentation does not belong in its diff.

🤖 Generated with Claude Code

…t on

Every test in that note infers the Copilot artifact from circumstantial
marks: a null output title, an annotation pointing at a directory, a line
number that repeats across unrelated PRs. #319 failed the same way on
2026-08-11, the sixth sighting and the third at `.github:213`, and its job
log names the failure outright:

  Error creating PR review request: SessionModelError: Execution failed:
  CAPIError: 400 The requested model is not supported.

The review agent asked GitHub's own model API for a model that API refused,
threw inside runAgenticLoop, and exited 1. It never read the diff, so the
check is reporting an outage in Copilot's model routing and no change to a
branch can turn it green.

That yields a test which names the failure instead of pattern-matching
around it: pull details_url off the check run, then grep the job log for
CAPIError. A crashed agent prints it; a real finding leaves it empty and
posts an inline review comment on a source line instead.

Two smaller things the same run settled. The workflow is
`dynamic/agents/github-advanced-security` and lives nowhere in
.github/workflows/, which is why grepping the tree for it finds nothing. And
a re-notification can arrive for a run that already failed hours earlier:
#319 alerted twice on the same check-run id with the same completed_at and
no new commit between, which in the notification looks exactly like a fresh
failure.

Docs only. No code, no config, nothing shipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 11, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
aadhar-sh 81baaf9 Aug 11 2026, 10:52 AM

oddharsh and others added 2 commits August 11, 2026 06:47
#319 failed this check twice the same way, sixteen minutes apart, on the
feature head and then on a merge commit that only pulled main in. Different
Request IDs, identical CAPIError. Worth stating outright, because an outage
that reproduces on whatever you push next is the case where someone starts
bisecting a diff for the cause of it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three commits, two PRs, twenty-one minutes, three Request IDs, one identical
CAPIError, and the third of them adds no executable line to the repository.
A docs-only diff cannot carry a security finding, so a check that reddens on
this one is reporting on itself. That is the argument the prose-only-PR
paragraph already makes; this run makes it unarguable.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@oddharsh
oddharsh force-pushed the claude/gotcha27-root-cause branch from 9dcdecc to 81baaf9 Compare August 11, 2026 10:50
@oddharsh
oddharsh merged commit 755a0f1 into main Aug 11, 2026
5 of 6 checks passed
@oddharsh
oddharsh deleted the claude/gotcha27-root-cause branch August 11, 2026 11:32
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.

1 participant