Skip to content

feat: escalate unposted findings to issues and record wrap-up failures in the step summary - #61

Merged
Mearman merged 1 commit into
mainfrom
feat/severity-gated-issue-fallback
Sep 11, 2026
Merged

Mearman merged 1 commit into
mainfrom
feat/severity-gated-issue-fallback

Conversation

@Mearman

@Mearman Mearman commented Sep 11, 2026

Copy link
Copy Markdown
Member

What this adds

When the turn-limit wrap-up step runs and itself fails to post its own closing reply -- typically because that write was blocked, or the pull request/issue it was about had already merged or closed underneath it -- two things now happen instead of the content silently existing only in a raw job log:

  1. Always, no permission needed: the wrap-up's own last result text is written to the job's Step Summary. This costs no token scope, so it applies to every consumer of this action regardless of any new input.
  2. Opt-in (escalate_findings_to_issues, review mode, off by default): a narrowly scoped follow-on resumes the same session and judges, finding by finding, whether anything already found is severe enough (Blocker or Should-fix, never a Nit) to open or update a GitHub issue for -- one issue per distinct finding, deduped by a stable marker, never one bundled issue for a whole run. Requires issues: write, which review mode's reusable workflow does not request, so it only takes effect through the direct form (examples/direct/claude-review-with-issue-escalation.yml).

A wrap-up failure that escalation successfully turns into a recorded issue is treated as handled rather than as an unseen job failure.

Why

Confirmed live on a consuming repository: a review's wrap-up call correctly determined a pull request had already merged, re-verified every finding from its prior review was fixed in the merged code, and then failed outright trying to post that conclusion -- both gh pr comment and mcp__github__add_issue_comment were blocked pending a permission grant no one was present to give in a headless run. The run showed a plain red X with no indication of why, and the actual content (a clean bill of health) never reached anywhere a human would look.

Validation

  • npm run format:check / npm run lint / npm run typecheck all pass.
  • action.yml's composite-action steps validated via the synthetic workflow_call wrapper + actionlint technique described in this repo's own README (issue count unchanged from the pre-change baseline: 26 pre-existing warnings, 25 after -- no new findings in either new step).

…s in the step summary

Add escalate_findings_to_issues (review mode, off by default): when the
turn-limit wrap-up step fails to post its own closing reply, a narrowly
scoped follow-on judges each Blocker/Should-fix finding and opens or
updates one issue per finding, deduped by a stable marker, rather than
bundling every finding from a run into a single catch-all issue. Its
allowlist holds only issue read/write tools, nothing the wrap-up call
itself could already do. Requires issues: write, which review mode's
reusable workflow does not request, so this only takes effect through
the direct form (examples/direct/claude-review-with-issue-escalation.yml).

Independent of that input, always write the wrap-up's own last result
text to the job's Step Summary when the wrap-up step fails. This needs
no token scope at all, so it fires for every consumer regardless of
escalate_findings_to_issues, and it previously left that content
visible only as raw JSON in a job log nobody reads by default.

A wrap-up failure that escalation successfully turns into a recorded
issue is treated as handled rather than as an unseen failure, so it no
longer flips the job to failure on its own.
@Mearman
Mearman marked this pull request as ready for review September 11, 2026 10:22
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review Completed 2026-09-11T10:28:24.916081Z 641609b Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

github-actions Bot commented Sep 11, 2026

Copy link
Copy Markdown

❌ Claude's run did not complete (outcome: failure). View job run

@github-actions

Copy link
Copy Markdown

🗜️ Headroom context compression

Metric Value
Requests proxied 6
Tokens saved 4050
Aggregate savings 1.1% of all tokens sent
Average per-request compression 1.8%

@Mearman
Mearman merged commit 482937d into main Sep 11, 2026
12 of 13 checks passed
@Mearman
Mearman deleted the feat/severity-gated-issue-fallback branch September 11, 2026 10:29
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.11.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant