Skip to content

[wip] #28 automation: handle stale CHANGES_REQUESTED gate after bot re-review - #51

Merged
nutt-adam merged 3 commits into
mainfrom
wren/issue-28-kickoff
Mar 16, 2026
Merged

[wip] #28 automation: handle stale CHANGES_REQUESTED gate after bot re-review#51
nutt-adam merged 3 commits into
mainfrom
wren/issue-28-kickoff

Conversation

@nutt-adam

@nutt-adam nutt-adam commented Mar 16, 2026

Copy link
Copy Markdown
Contributor

Kickoff implementation refresh for #28 with concrete stale-review detection slices and acceptance mapping.\n\nThis PR is focused on implementation planning updates in-branch so the next commit can land evaluator logic + tests.\n\nFixes #28

Summary by CodeRabbit

  • Documentation
    • Updated issue planning documentation with refined implementation strategy and acceptance criteria for handling stale review states.

@coderabbitai

coderabbitai Bot commented Mar 16, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The issue-28 kickoff document was restructured to focus on handling stale CHANGES_REQUESTED gates. It now defines a problem statement about deadlock conditions, outlines four focused implementation slices with specific checks and actions, and provides acceptance criteria with concrete next steps for testing and development.

Changes

Cohort / File(s) Summary
Planning & Documentation
plans/issue-kickoff/issue-28.md
Updated issue kickoff with refined problem framing for stale review handling, four structured implementation slices (readiness evaluator, stale-review rule, orchestrator handling, operator-visible output), acceptance criteria, and next implementation step specifying a readiness decision enum and test scenarios.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A plan comes together, so clear and so fine,
With slices and gates that will beautifully align,
No more deadlock stales shall block our PR's way,
The readiness enum shall dawn a new day! ✨

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description explains the planning refresh focus, but does not follow the required repository template with versioning, semver, validation, and release sections. Fill out the required template sections: add Versioning checklist, SemVer choice, Validation checklist, and Release section with appropriate checkboxes and notes.
Linked Issues check ❓ Inconclusive The PR is a planning-only kickoff documenting implementation slices and acceptance criteria from issue #28, not containing actual code implementation that would fulfill the issue's acceptance criteria. Verify whether this planning document update satisfies the requirement or if further implementation commits are needed to complete the linked issue's objectives.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly indicates this is a work-in-progress kickoff for issue #28 addressing stale CHANGES_REQUESTED gate handling, which aligns with the planning document changes.
Out of Scope Changes check ✅ Passed The changes are narrowly focused on planning documentation for issue #28 stale-review detection; no unrelated modifications are present.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch wren/issue-28-kickoff
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

CodeRabbit can use Trivy to scan for security misconfigurations and secrets in Infrastructure as Code files.

Add a .trivyignore file to your project to customize which findings Trivy reports.

@nutt-adam

Copy link
Copy Markdown
Contributor Author

Synced this branch with latest main to clear merge conflicts (merged main into , resolved kickoff-plan conflict, pushed ). CI should re-run automatically.

@nutt-adam

Copy link
Copy Markdown
Contributor Author

Follow-up: branch is now synced with latest main via merge commit 25e15b0; merge conflict in plans/issue-kickoff/issue-28.md was resolved and pushed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
plans/issue-kickoff/issue-28.md (2)

10-18: Tighten stale-review comparator rules for deterministic behavior.

Good slice definition, but the evaluator should explicitly define tie-breaks (e.g., equal timestamps) and normalized time basis to avoid ambiguous stale/non-stale outcomes in edge cases. Consider adding one bullet with the exact comparison contract.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plans/issue-kickoff/issue-28.md` around lines 10 - 18, Update the
stale-review comparator to use a precise comparison contract: normalize all
timestamps to UTC milliseconds from the same source (e.g., commit
author/committer date and review submitted_at) before comparing, then mark stale
only when required-checks are green AND headCommitTimestamp >
latestActionableReviewTimestamp (strict greater-than); if timestamps are equal
treat as not-stale (no action). Ensure the comparator function (stale-review
comparator / helper that reads latest actionable review timestamp, latest head
commit timestamp, and required-checks all-green state) enforces this
normalization and strict comparison and documents the tie-break rule in its
comment.

20-22: Specify concrete wait-loop bounds and retry cadence.

“Bounded wait + poll loop” is the right direction, but this should include explicit max attempts/timeout and poll interval/backoff so operators get predictable latency and failure behavior.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@plans/issue-kickoff/issue-28.md` around lines 20 - 22, Update the "Bounded
wait + poll loop" plan to specify concrete retry parameters: add explicit names
and values for maxAttempts (or overall timeout), initialPollInterval (ms), and
backoffFactor (or fixed interval) and describe the terminal condition that
transitions to the "needs-human-unblock" path; reference the "Trigger one
re-review request/ping path" as the single automatic retry action executed once
before starting the bounded poll loop, then describe the poll loop behavior
(initial interval, backoff, maxAttempts/timeout) and the exact condition that
causes fallback to needs-human-unblock.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@plans/issue-kickoff/issue-28.md`:
- Around line 10-18: Update the stale-review comparator to use a precise
comparison contract: normalize all timestamps to UTC milliseconds from the same
source (e.g., commit author/committer date and review submitted_at) before
comparing, then mark stale only when required-checks are green AND
headCommitTimestamp > latestActionableReviewTimestamp (strict greater-than); if
timestamps are equal treat as not-stale (no action). Ensure the comparator
function (stale-review comparator / helper that reads latest actionable review
timestamp, latest head commit timestamp, and required-checks all-green state)
enforces this normalization and strict comparison and documents the tie-break
rule in its comment.
- Around line 20-22: Update the "Bounded wait + poll loop" plan to specify
concrete retry parameters: add explicit names and values for maxAttempts (or
overall timeout), initialPollInterval (ms), and backoffFactor (or fixed
interval) and describe the terminal condition that transitions to the
"needs-human-unblock" path; reference the "Trigger one re-review request/ping
path" as the single automatic retry action executed once before starting the
bounded poll loop, then describe the poll loop behavior (initial interval,
backoff, maxAttempts/timeout) and the exact condition that causes fallback to
needs-human-unblock.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b52dd2f0-213c-4925-85b2-84593a5847cf

📥 Commits

Reviewing files that changed from the base of the PR and between 64ebcc3 and 25e15b0.

📒 Files selected for processing (1)
  • plans/issue-kickoff/issue-28.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.

2 participants