Core Concepts¶
This page explains the fundamental concepts behind reviewGOOSE. Understanding these concepts will help you use the system effectively and troubleshoot issues.
Turn-Based PR Tracking¶
reviewGOOSE tracks whose turn it is to act on a pull request. The system identifies specific actions that need to happen and who should take them, enabling multiple people to move a PR forward simultaneously.
How It Works¶
The system analyzes each PR to determine:
- What actions are needed - Specific tasks to move the PR forward
- Who can take each action - Which people are responsible
- Which actions are critical - What's blocking vs what's optional
- Multiple paths forward - When several people can help
Action Types¶
reviewGOOSE identifies these specific actions:
Author Actions:
- Publish draft - Mark PR as ready for review
- Fix tests - Fix failing CI checks or tests
- Resolve conflicts - Fix merge conflicts
- Address feedback - Respond to review comments and requested changes
- Request reviewers - Assign reviewers to the PR
Reviewer Actions:
- Review - Provide initial code review
- Re-review - Review changes after author updates
- Approve - Formally approve the PR
Merge Actions:
- Merge - Merge the approved PR
Critical vs Non-Critical Actions¶
Not all actions are equally important:
- Critical actions block the PR from progressing (e.g., fixing failing tests, addressing requested changes)
- Non-critical actions are helpful but don't block (e.g., reviewing when the author still has work to do)
The dashboard and notifications prioritize critical actions to help you focus on what's blocking progress.
Multiple Paths Forward¶
Often, multiple people can move a PR forward:
Parallel Reviewers: When multiple reviewers are assigned, any one can provide feedback to unblock the author. All reviewers see this as a critical action.
Merge Escalation: When a PR is approved and ready to merge, responsibility escalates over time: - Initially: Author and assignees - After 1 hour: Approvers - After 7 hours: All participants with write access
Unresolved Discussions: Both author and reviewers may need to respond to move the conversation forward.
What reviewGOOSE Analyzes
The system determines actions by analyzing:
- CI check status (passing, failing, pending)
- Review status (approved, changes requested, comments)
- Merge conflicts
- Draft status
- Unresolved comment threads
- Time since last activity
- Repository permissions
Example Flow¶
Here's how a typical pull request progresses:
graph LR
A[Author Creates PR] --> B[CI Running]
B --> C{Tests Pass?}
C -->|Yes| D[Reviewers: Review]
C -->|No| E[Author: Fix Tests]
E --> B
D --> F{Review Decision}
F -->|Approved| G[Author/Team: Merge]
F -->|Changes Requested| H[Author: Address Feedback]
H --> I[CI Running]
I --> J{Tests Pass?}
J -->|Yes| K[Reviewers: Re-review]
J -->|No| E
K --> L{Re-review Decision}
L -->|Approved| G
L -->|More Changes| H
G --> M[Merged]
- Author creates PR: New pull request is opened
- CI Running: Tests run (no action needed yet)
- Tests fail: Author gets critical action "Fix tests"
- Tests pass: All assigned reviewers get critical action "Review" (any one can provide feedback)
- Changes requested: Author gets critical action "Address feedback"
- Author updates: CI runs again, reviewers wait
- Tests pass: Reviewers who requested changes get critical action "Re-review"
- Approved: Author/assignees get critical action "Merge" (escalates to more people over time)
- Merged: PR is closed
Throughout this flow, multiple people may have actions simultaneously, but the system clearly identifies which actions are critical for each person.
Smart Notification Logic¶
reviewGOOSE doesn't just blast notifications to everyone. It uses intelligent logic to notify the right person at the right time.
Notification Timing¶
Notifications are sent when:
- State changes: PR moves from one state to another (e.g., CI passes, review submitted)
- Assignment changes: New reviewers are added or removed
- Significant time has passed: Daily reminders if a PR has been waiting >8 hours
Notifications are not sent when:
- PR is in waiting state: Nobody needs to act (CI running, approved but not merged)
- User recently notified: Anti-spam protection prevents duplicate notifications within 1 minute
- User just took action: If you just pushed code, you won't be immediately notified about CI running
Notification Channels¶
reviewGOOSE can notify via multiple channels. You choose which to enable:
| Channel | Notification Type | When to Use |
|---|---|---|
| Dashboard | Always available | Always enabled - check anytime at <org>.reviewgoose.dev |
| Slack DM | Direct message | User isn't in the channel where PR was posted |
| Slack Channel | Channel message | PR affects team or specific project |
| Goose Desktop | Native OS notification | Individual developer preference |
Channel Priority¶
If multiple notification channels are enabled, reviewGOOSE uses this logic:
-
Slack channel notification (if user is in the channel):
- Post to channel
- Wait 65 minutes before sending reminder DM (configurable)
- If user doesn't act within 65 minutes, send reminder DM
- Dashboard always shows PR status
-
Slack DM (if user is not in the channel):
- Send DM immediately
- Dashboard always shows PR status
-
Goose desktop notification:
- Sent simultaneously with Slack notifications (if Goose is installed)
- Independent of Slack channel delay
-
Dashboard only:
- If Slack and Goose are not configured, PRs appear in dashboard only
- No active notifications
Reminder DMs
The 65-minute Slack DM is a reminder for people who missed the initial channel notification or were busy at that time. This ensures reviewers don't miss important PRs while avoiding immediate notification spam for those actively monitoring channels.
Timezone Awareness¶
reviewGOOSE detects user timezones and schedules notifications during active work hours when possible.
How Timezone Detection Works¶
Timezones are detected using:
- GitHub activity patterns: When is this user most active?
- Profile analysis: Does the user's profile list a location?
- Commit timestamps: What timezone are commits made from?
- Default: If timezone cannot be detected, UTC is assumed
Timezone in Action¶
Daily Reminders: Sent between 8-9am in the user's local timezone
Example
- Alice (US Eastern): Reminded at 8:30am ET
- Bob (Central Europe): Reminded at 8:15am CET
- Carol (Tokyo): Reminded at 8:45am JST
Reviewer Assignment: Reviewers in active timezones are slightly prioritized over those who are likely offline
Technical Architecture¶
For a deep dive into how reviewGOOSE's state machine, notification system, and microservices interact, see the architectural diagram.
Next Steps¶
Now that you understand core concepts:
- Configure your Dashboard view preferences
- Set up Slack Integration channel mappings
- Install Goose for desktop notifications