Skip to content

Keep address-review triage aligned with latest actionable feedback#2798

Merged
justin808 merged 1 commit intomainfrom
fix/address-review-triage-context
Mar 21, 2026
Merged

Keep address-review triage aligned with latest actionable feedback#2798
justin808 merged 1 commit intomainfrom
fix/address-review-triage-context

Conversation

@justin808
Copy link
Copy Markdown
Member

@justin808 justin808 commented Mar 21, 2026

Summary

  • update reply filtering guidance so replies are not standalone triage items, but still update unresolved thread context
  • classify actionable review summary bodies as normal feedback and only skip non-actionable summaries
  • mirror the same behavior in both .agents/workflows/address-review.md and .claude/commands/address-review.md to keep Claude and non-Claude workflows aligned

Testing

  • pnpm exec prettier --check .agents/workflows/address-review.md .claude/commands/address-review.md

Summary by CodeRabbit

Improvements

  • Review workflow now intelligently handles threaded reply comments, using them to refine issue context rather than creating separate items.
  • Feedback classification refined to better distinguish actionable review input from non-actionable boilerplate or status-only summaries, improving triage accuracy.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 21, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ff08a2f6-faa6-4ec2-9e0b-e29e51a557ee

📥 Commits

Reviewing files that changed from the base of the PR and between 3ba1d48 and c185ba8.

📒 Files selected for processing (2)
  • .agents/workflows/address-review.md
  • .claude/commands/address-review.md

Walkthrough

Two workflow and command documentation files were updated to refine comment filtering and triage classification behavior. Reply comments now contribute to thread context rather than creating independent items, and classification criteria were expanded to distinguish actionable summaries from boilerplate content.

Changes

Cohort / File(s) Summary
Comment Filtering & Triage Classification
.agents/workflows/address-review.md, .claude/commands/address-review.md
Updated instructions on handling threaded replies (in_reply_to_id) to use them for updating thread context rather than creating standalone triage items. Expanded SKIPPED criteria to include "non-actionable summaries" and clarified that actionable review summaries are treated as normal feedback for classification decisions.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

A rabbit hops through threads with care, ✨
No longer making items spare—
Reply comments now mend the thread,
While actionable words are wisely read,
Boilerplate dismissed, truth laid bare! 🐰

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/address-review-triage-context

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented Mar 21, 2026

Greptile Summary

This PR tightens the triage logic in both the generic agents workflow (.agents/workflows/address-review.md) and the Claude Code command (.claude/commands/address-review.md) so the two paths stay behaviorally identical. The changes are purely documentation/prompt updates — no executable code is touched.

Key improvements:

  • Reply handling: Replies (in_reply_to_id is set) are no longer silently dropped. Instead they are used as additional context for the parent thread, which means the agent can now use a reviewer's follow-up clarification when deciding how to triage the original concern.
  • Actionable summaries: The SKIPPED category previously said "summaries", which could cause the agent to skip a review summary that contained real, actionable feedback. It now says "non-actionable summaries", and a new triage rule makes the distinction explicit: actionable summary bodies should be classified as MUST-FIX or DISCUSS just like any other comment.
  • Symmetry: All three touch-points (filter step, SKIPPED definition, triage rules) are updated identically in both files, keeping Claude and non-Claude workflows aligned.

Confidence Score: 5/5

  • Safe to merge — documentation-only changes with no executable code, and all three touch-points are updated symmetrically in both files.
  • The PR makes targeted, well-reasoned improvements to two workflow/prompt files. The logic is sound (replies as context, actionable summaries triaged normally), the changes are fully mirrored between the two files, and there are no regressions possible since no code is executed.
  • No files require special attention.

Important Files Changed

Filename Overview
.agents/workflows/address-review.md Updated reply-filtering guidance and SKIPPED category definition to distinguish actionable summaries from non-actionable ones; changes are fully mirrored with the Claude command file.
.claude/commands/address-review.md Same three-point update as the agents workflow file: replies as context only, non-actionable summaries in SKIPPED, and new triage rule for actionable summary bodies.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Fetch PR Comments] --> B{Has in_reply_to_id?}
    B -->|Yes - OLD| X1["❌ Skip entirely"]
    B -->|Yes - NEW| C["Use as context for parent thread\n(if it updates/narrows the concern)"]
    C --> D[Parent top-level comment drives triage]
    B -->|No| D

    D --> E{Comment type?}
    E -->|review_summary| F{Actionable content?}
    F -->|No - boilerplate/status| G["SKIPPED\n(non-actionable summary)"]
    F -->|Yes - OLD| X2["❌ Also SKIPPED as 'summary'"]
    F -->|Yes - NEW| H["Classify normally\nMUST-FIX / DISCUSS"]
    E -->|inline / issue| H

    H --> I{Severity?}
    I -->|Bug / security / regression| J[MUST-FIX → Todo]
    I -->|Scope expansion / opinion| K[DISCUSS → Present to user]
    I -->|Style / nit / speculative| G
Loading

Last reviewed commit: "Prevent triage guida..."

@justin808 justin808 merged commit 3f19ee7 into main Mar 21, 2026
8 of 9 checks passed
@justin808 justin808 deleted the fix/address-review-triage-context branch March 21, 2026 23:44
4. Filter comments:
- Skip resolved threads.
- Skip replies where `in_reply_to_id` is set.
- Do not create standalone triage items from comments where `in_reply_to_id` is set, but use reply text as the latest thread context when it updates or narrows the unresolved concern.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The mechanics of "use reply text as the latest thread context" are left implicit. An agent executing this step may not know whether to:

  • Append the reply to the parent comment's body before triaging
  • Replace the parent's body with the reply
  • Just note the reply alongside the parent

A more concrete formulation might help:

Suggested change
- Do not create standalone triage items from comments where `in_reply_to_id` is set, but use reply text as the latest thread context when it updates or narrows the unresolved concern.
- Do not create standalone triage items from comments where `in_reply_to_id` is set; instead, prepend the most recent reply text to the parent comment's body before triaging, so the triage reflects the current state of the concern rather than only the original wording.

Also, the qualifier "when it updates or narrows the unresolved concern" leaves two edge cases unaddressed:

  1. A reply that withdraws the concern ("never mind, I see it now") — should the thread be auto-skipped?
  2. A reply that broadens the concern — the current wording would still fold it in, but it would be good to say so explicitly.

- Verify reviewer claims locally before calling something `MUST-FIX`.
- If a claim is wrong, classify it as `SKIPPED` and say why.
- Preserve comment IDs and thread IDs for later replies and thread resolution.
- Treat actionable review summary bodies as normal feedback to classify (`MUST-FIX`/`DISCUSS` as appropriate); skip only boilerplate or status-only summaries.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new bullet was added after Preserve comment IDs and thread IDs for later replies and thread resolution. Functionally it fits, but it reads slightly out of sequence: the rule about what to classify (actionable summaries as MUST-FIX/DISCUSS) would be easier to follow if it appeared before the subject-format rule at the bottom. Minor ordering nit only.

@claude
Copy link
Copy Markdown
Contributor

claude Bot commented Mar 21, 2026

Review

Overall: Solid, focused improvement. The change correctly moves from a blanket 'skip all replies' rule to a more nuanced context-aware one, and fixes the over-broad classification of review summary bodies as always-skipped. Both files are updated consistently, which is the right maintenance pattern.

Two things worth addressing:

1. Vague mechanics for incorporating reply context (both files)

The instruction to use reply text 'as the latest thread context when it updates or narrows the unresolved concern' leaves an AI executor without a concrete operation. Different agents may merge, append, replace, or just read the reply — producing different triage output. A more specific instruction (e.g. 'prepend the most recent reply to the parent comment body before triaging') would reduce ambiguity. See inline comment on line 69.

Two edge cases are also unaddressed by the 'updates or narrows' qualifier:

  • A reply that withdraws the concern ('never mind') — should the thread be auto-skipped?
  • A reply that broadens the concern — probably should still be folded in, but not stated.

2. Rule ordering in the triage step (minor)

The new 'Treat actionable review summary bodies as normal feedback' bullet lands after the subject-format rule, slightly out of sequence with the other classification criteria. Moving it up would improve readability. See inline comment on line 85.

What is good:

  • Changing 'summaries' to 'non-actionable summaries' in the SKIPPED bucket is precisely the right fix — previously actionable review bodies could be silently dropped.
  • Both files stay in sync.
  • The change is minimal and well-scoped.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c185ba88b4

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

4. Filter comments:
- Skip resolved threads.
- Skip replies where `in_reply_to_id` is set.
- Do not create standalone triage items from comments where `in_reply_to_id` is set, but use reply text as the latest thread context when it updates or narrows the unresolved concern.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fetch reply ordering before using “latest” thread context

This new rule relies on reply text to represent the current unresolved concern, but the workflow still fetches review comments without any created_at/updated_at field or other per-thread ordering metadata. In threads with multiple replies, the agent cannot tell whether it is looking at the reviewer’s latest narrowed concern or an older reply, so it can triage stale context instead of the thread’s actual remaining issue.

Useful? React with 👍 / 👎.

- Verify reviewer claims locally before calling something `MUST-FIX`.
- If a claim is wrong, classify it as `SKIPPED` and say why.
- Preserve comment IDs and thread IDs for later replies and thread resolution.
- Treat actionable review summary bodies as normal feedback to classify (`MUST-FIX`/`DISCUSS` as appropriate); skip only boilerplate or status-only summaries.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude superseded review summaries from MUST-FIX triage

Treating review summary bodies as normal actionable feedback becomes problematic because step 3 still pulls every non-empty body from /pulls/{PR_NUMBER}/reviews, including summaries from earlier review rounds. On a PR that had an early summary requesting changes and a later approval after fixes, this instruction will resurface the stale summary as a fresh MUST-FIX/DISCUSS item even though the workflow has no thread-resolution signal for review bodies. That makes the triage checklist regress to already-addressed feedback.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON, but it could not run because the branch was deleted or merged before autofix could start.


- Skip comments belonging to already-resolved threads (match via `thread_id` and `is_resolved` from the GraphQL response)
- Skip comments where `in_reply_to_id` is set (these are replies, not top-level comments)
- Do not create standalone triage items from comments where `in_reply_to_id` is set, but use reply text as the latest thread context when it updates or narrows the unresolved concern
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filtering section still skips all summaries before triage

Medium Severity

The filtering section (line 87) tells the AI to skip "summaries" during comment filtering, but the new triage rule (line 112) says to classify actionable summaries as normal feedback. This creates an internal contradiction — actionable summaries get discarded in filtering before reaching triage. The corresponding line in .agents/workflows/address-review.md says only "skip status-only bot posts" (no mention of summaries), so the two files are not aligned despite the PR's stated goal of mirroring behavior.

Additional Locations (1)
Fix in Cursor Fix in Web

justin808 added a commit that referenced this pull request Mar 25, 2026
## Summary

- Stamp `### [16.5.0.rc.0]` version header with today's date
- Add 10 new changelog entries for PRs merged since v16.4.0
- Fix incomplete PR 2818 entry (missing author link)

### New entries added

**Added:**
- `create-react-on-rails-app --pro` support (PR 2818)
- Global prerender env override `REACT_ON_RAILS_PRERENDER_OVERRIDE` (PR
2816)
- `react_on_rails:sync_versions` rake task (PR 2797)
- Pro/RSC setup checks in `react_on_rails:doctor` (PR 2674)

**Changed:**
- [Pro] Canonical env var for worker count is now
`RENDERER_WORKERS_COUNT` (PR 2611)

**Improved:**
- Smoother `create-react-on-rails-app` and install generator flows (PR
2650)
- Pro upgrade hint after install (PR 2642)

**Fixed:**
- Preserve runtime env vars across `Bundler.with_unbundled_env` (PR
2836)
- Fix doctor prerender check and ExecJS display for Pro/RSC apps (PR
2773)
- Fix doctor false positives for custom layouts (PR 2612)

### Skipped PRs (not user-visible)

Docs-only: #2845, #2842, #2826, #2830, #2820, #2809, #2803, #2785,
#2801, #2791, #2789, #2788, #2772, #2778, #2780, #2784, #2671, #2676,
#2662, #2657, #2669
CI/internal tooling: #2825, #2817, #2819, #2812, #2815, #2810, #2808,
#2807, #2634, #2798, #2761, #2760, #2658, #2639, #2667, #2656

## Test plan

- [x] Verified version header and diff links are correct
- [x] Verified all entries follow changelog formatting conventions
- [x] Verified file ends with newline
- [ ] After merge, run `rake release` to publish 16.5.0.rc.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Documentation-only change updating `CHANGELOG.md` with a new
`16.5.0.rc.0` section and compare links; no runtime code is modified.
> 
> **Overview**
> Adds a new `16.5.0.rc.0` (2026-03-25) section to `CHANGELOG.md`,
consolidating recent PR entries under **Added/Changed/Improved/Fixed**
and correcting the previously incomplete `--pro` CLI entry author
attribution.
> 
> Updates the bottom compare links so `[unreleased]` now compares from
`v16.5.0.rc.0` and adds a link definition for `[16.5.0.rc.0]`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
481a71c. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

## Release Notes - v16.5.0.rc.0

* **New Features**
  * Added sync_versions task for streamlined version management
  * Expanded doctor checks for Pro and RSC support

* **Improvements**
  * Enhanced generator workflow and Pro upgrade guidance
  * Improved environment variable handling and preservation

* **Bug Fixes**
* Fixed detection issues with doctor tools and ExecJS/prerender
functionality

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
justin808 added a commit that referenced this pull request Mar 30, 2026
…2798)

## Summary
- update reply filtering guidance so replies are not standalone triage
items, but still update unresolved thread context
- classify actionable review summary bodies as normal feedback and only
skip non-actionable summaries
- mirror the same behavior in both `.agents/workflows/address-review.md`
and `.claude/commands/address-review.md` to keep Claude and non-Claude
workflows aligned

## Testing
- pnpm exec prettier --check .agents/workflows/address-review.md
.claude/commands/address-review.md
justin808 added a commit that referenced this pull request Apr 6, 2026
…2798)

## Summary
- update reply filtering guidance so replies are not standalone triage
items, but still update unresolved thread context
- classify actionable review summary bodies as normal feedback and only
skip non-actionable summaries
- mirror the same behavior in both `.agents/workflows/address-review.md`
and `.claude/commands/address-review.md` to keep Claude and non-Claude
workflows aligned

## Testing
- pnpm exec prettier --check .agents/workflows/address-review.md
.claude/commands/address-review.md
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