feat(#3697): add emoji reaction status notifications - #5957
Conversation
|
🤖 Finished Review · ✅ Success · Started 9:34 PM UTC · Completed 9:53 PM UTC |
PR Summary by QodoAdd emoji reaction status notifications (with comment-targeting for slash commands)
AI Description
Diagram
High-Level Assessment
Files changed (24)
|
Site previewPreview: https://5064faff-site.fullsend-ai.workers.dev Commit: |
Code Review by Qodo
1.
|
|
It worked at appdumpster/test-repo#43
|
efad69d to
d6dcdc9
Compare
ReviewFindingsMedium
Low
Next steps:
Previous runReviewFindingsMedium
Low
Next steps:
Previous run (2)ReviewFindingsMedium
Low
Next steps:
Previous run (3)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (4)ReviewFindingsMedium
Low
Labels: PR modifies reusable dispatch workflows and adds a new feature (emoji reaction notifications) Previous run (5)ReviewFindingsMedium
Low
Labels: PR adds new behaviour test infrastructure (reaction steps, feature file, cleanup logic) under pkg/behaviourtest/ and e2e/behaviour/ Previous run (6)ReviewFindingsMedium
Low
Previous run (7)ReviewFindingsMedium
Low
Previous run (8)ReviewFindingsMedium
Low
Previous run (9)ReviewFindingsMedium
Low
Previous run (10)ReviewFindingsMedium
Low
Previous run (11)ReviewFindingsMedium
Low
Previous run (12)ReviewFindingsMedium
Low
Previous run (13)ReviewFindingsMedium
Low
Labels: PR modifies agent runner notification lifecycle (status reactions in statuscomment package) and includes user-facing documentation updates. |
waynesun09
left a comment
There was a problem hiding this comment.
HIGH: PR head has diverged from its declared base — diff includes stale/unrelated content and reports a real merge conflict
Re-verified live: this PR's mergeable/mergeStateStatus currently report CONFLICTING/DIRTY, and a compare of feat/3697-on-failure-comment-completion...feat/3697-emoji-reaction-notifications reports status: diverged, ahead_by: 16, behind_by: 17. The base branch (#5736) has moved 17 commits ahead of where this branch was cut, while this branch still carries its own older copy of the same on_failure/reconcile-status machinery. The rendered diff for this PR therefore mixes stale duplicate content (internal/cli/reconcilestatus.go, action.yml, docs/guides/dev/cli-internals.md) in with the actual emoji-reaction work, even though the PR summary frames the emoji-reaction work as the only change. This is a real, currently-active state and will guarantee conflicts or silently reintroduce stale content when merged as-is.
Suggestion: Rebase feat/3697-emoji-reaction-notifications onto the current tip of feat/3697-on-failure-comment-completion (or onto main once #5736 merges), then re-diff to confirm only the reaction-related changes remain before requesting re-review.
ascerra
left a comment
There was a problem hiding this comment.
We've discussed using thumbs up and thumbs down as a way for users to tell us if they liked or disliked the agent response so we can gather metrics on user approval ratings and things like that.
I see the thumbs up is added as the bot so this might not be a problem... our metric collector one day will just need to check for human added emojis
|
Marking this blocked on #5994. Turns out |
|
Converting this to draft until #5994 is resolved. |
|
Re: #5957 (comment)
|
f42097a to
b4fec87
Compare
|
🤖 Finished Review · ✅ Success · Started 6:56 PM UTC · Completed 7:16 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $9.54 |
|
🤖 Finished Review · ✅ Success · Started 7:29 PM UTC · Completed 7:49 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $7.06 |
|
Unable to get past functional-tests without #6562 |
|
🤖 Review · ❌ Terminated · Started 7:56 PM UTC · Ended 8:10 PM UTC Commit: |
|
/fs-retro why did https://github.com/fullsend-ai/fullsend/actions/runs/32770874072/job/97570723593?pr=5957 fail? |
|
🤖 Finished Retro · ✅ Success · Started 8:04 PM UTC · Completed 8:13 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.98 |
There was a problem hiding this comment.
Note: The following review comments could not be posted on the diff (GitHub returned 422) and are included here instead:
.github/workflows/reusable-dispatch.yml(file-level): Line 1399 · [medium] consumer-completeness
The prioritize stage is the only agent stage that does not pass status-comment-id to the action. All other 6 stages (triage, code, review, fix, retro, harness-run) include it. Since /fs-prioritize is a slash command triggered via issue_comment, its reaction will target the issue/PR instead of the triggering comment, inconsistent with every other slash-command-triggered stage.
Suggested fix: Add status-comment-id: ${{ fromJSON(needs.route.outputs.event_payload).comment.id }} to the prioritize stage's with: block.
|
🤖 Finished Review · ✅ Success · Started 7:56 PM UTC · Completed 8:10 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $3.69 |
Retro: behaviour test failure on PR #5957Root causeThe behaviour test failure was caused by GCP WIF pool quota exhaustion (HTTP 429), not a code regression. All 11 failed scenarios hit the same error during test setup: The same 22 scenarios all passed on the previous commit ( Code-level gap
Existing issues already cover thisNo new proposals are needed — existing open issues substantively address the gaps:
No workflow or agent issuesThe agent workflow on this PR functioned correctly: the review agent ran 12+ iterations, the fix agent completed 5 iterations addressing review findings, and the human reviewer (waynesun09) approved after thorough multi-pass review. The |
|
🤖 Finished Retro · ✅ Success · Started 8:36 PM UTC · Completed 8:47 PM UTC Commit: Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $4.51 |
Retro: PR #5957 — Emoji reaction status notificationsPR: #5957 by ralphbean, implementing issue #3697 What went well
Review quality gapThe human reviewer (waynesun09) substantially outperformed the agent on correctness bugs for this complex, cross-cutting feature PR. The human caught:
The agent's 14 review runs never flagged any of these. This suggests the correctness sub-agent lacks guidance for two specific patterns: (1) verifying external API resource identity under concurrent use, and (2) tracing new input propagation across reusable workflow call chains. Evidence for existing open issues
Autonomy readinessThis PR demonstrates the agent is not ready for autonomous approval on large, cross-cutting feature PRs. The agent's review contributions were primarily documentation-oriented; the human reviewer caught all high-severity correctness bugs. However, the agent is effective at protected-path flagging and documentation completeness checks, which could support increased autonomy for narrow, well-scoped changes (e.g., doc-only PRs, config-only changes) where those are the primary review concerns. Proposals filed
|

Summary
Stacked on #5736 — this adds the "react to the issue with an emoji" alternative from #3697, as a supplement/alternative to status comments.
Blocked on: #5994 —
perRepoConfighas nostatus_notificationsfield, and the livepkg/behaviourteste2e suite only supports per-repo installs, so there is currently no test harness that can enable reactions to exercise the maintainer-mandated behavior test below.AddIssueReaction/DeleteIssueReactiononforge.Client, implemented for GitHub (GitLab returnsErrNotSupported— no caller exercises that path yet)AddIssueCommentReaction/DeleteIssueCommentReactiononforge.Clientso reactions can target the triggering comment for slash-command-invoked runs, per Triage agent causes unnecessary notifications - should skip initial comment #3697's explicit requirementstatus_notifications.reactionconfig block (start/completion, sameenabled/on_failure/disabledvalues ascomment), defaulting todisabledsince it's an opt-in additionNotifier.PostStartadds a 👀 reaction whenreaction.start: enabled;PostCompletionWithDetailswaps it for 👍 (success) or 😕 (failure/cancelled/skipped/unrecognized) depending onreaction.completion--status-comment-id, wired throughaction.ymland all reusable workflow call sites) when the run was invoked by a slash command, and the issue/PR otherwiseon_failurestart-suppression workarounddocs/guides/user/customizing-agents.mdOut of scope:
ReconcileOrphaneddoes not yet reconcile orphaned reaction state on hard-killed runs — plumbing a reaction ID across process boundaries would need more design than is justified here.ErrNotSupported) with no config-time validation warning users theirreactionsettings do nothing. Documented as a known limitation; follow-up needed (also applies to the new JIRA poll input driver).TestPostStart_ReactionTargetsTriggeringComment,TestPostCompletion_ReactionTargetsTriggeringCommentininternal/statuscomment/statuscomment_test.go).Test plan
go build ./...go vet ./...gofmt -lcleango test ./...— all green except pre-existing, unrelatedinternal/runtimefailures (verified present on base branch too)FakeClient, GitHub REST calls, andNotifierreaction lifecycle (start/completion/on_failure/cleanup, comment-scoped targeting)Assisted-by: Claude Opus 4.6 noreply@anthropic.com