Skip to content

Scope the No-Check-Posted Cause to DIRTY and Give It a Remedy - #3490

Merged
ptr727 merged 2 commits into
developfrom
fix/3471-dirty-no-check-wording
Oct 25, 2026
Merged

ptr727 merged 2 commits into
developfrom
fix/3471-dirty-no-check-wording

Conversation

@ptr727

@ptr727 ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner

Summary

The third promotion review of #3484 raised three findings, each fixed here:

  • The wait help's exit 0 paragraph and 45 entry, and the README's 45 row, offered "no check posted" for any merge other than CLEAN, UNSTABLE, or HAS_HOOKS. The empty-rollup hold keeps BLOCKED, BEHIND, and DRAFT at 30, so each now scopes that cause to DIRTY.
  • The no-check-posted cause named no remedy. It now says to resolve the head's conflict with its base, and a test pins it.
  • The read-shape test table asserted assertIn("", ...) on its exit 0 rows, which always passes. It now checks a reason only where one is expected, and those rows stay covered by their CHECKS_MISSING absence check.

Behavior and exit codes are unchanged.

Part of #3471, which the promotion pull request closes.

Test plan

  • python -m unittest test_pr_review test_pr_review_size test_pr_review_copilot from tests/: 534 tests pass.
  • The pre-commit gates pass, and prose_lint.py --check sentence-length is clean over the diff.
  • The recorded local pass traced the cause's reach to DIRTY alone and found no finding.

🤖 Generated with Claude Code

ptr727 and others added 2 commits October 25, 2026 16:16
The third promotion review of #3484 found the exit 45 entry and README
row offering "no check posted" for any gated merge, though only DIRTY
releases one, and that cause naming no remedy. It now says to resolve
the head's conflict with its base, and the test table checks a reason
only where one is expected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The local pass found the exit 0 paragraph still offering exit 45 for a
rollup with none posted under any gated merge, and no test pinning the
new remedy. The paragraph now scopes that clause to DIRTY, and the test
asserts the remedy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings October 25, 2026 23:21
@ptr727

ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head ba37c856defe608b768cc039af5d9f4542445dc5, the content this pull request carries at that commit against develop, and it recorded 0 findings.

@coderabbitai

coderabbitai Bot commented Oct 25, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Copilot AI left a comment

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.

🔵 Needs a closer look

The conflict-remedy test should assert the complete “with its base” wording promised by the implementation.

No open issues 🎉

What changed in this PR

This pull request scopes the no-check-posted condition to DIRTY merges, documents the conflict-resolution remedy, and strengthens related test assertions without changing behavior or exit codes.

Changes:

  • Scope exit 45 documentation to DIRTY merges.
  • Explain that the head’s conflict with its base must be resolved.
  • Replace a vacuous empty-reason assertion with conditional checks.
File Summary
tests/​test_pr_review.py Updates conflict-remedy and reason assertions.
scripts/​README.md Clarifies the narrowed exit-45 condition.
scripts/​pr_review.py Updates wait help text for the scoped behavior.
scripts/​pr_review_checks.py Adds conflict-resolution guidance to the diagnostic.

Review effort: Lite

@codecov

codecov Bot commented Oct 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.04%. Comparing base (6a1990f) to head (ba37c85).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #3490   +/-   ##
========================================
  Coverage    81.04%   81.04%           
========================================
  Files           25       25           
  Lines         8922     8922           
========================================
  Hits          7231     7231           
  Misses        1691     1691           
Flag Coverage Δ
python-3.13 81.04% <100.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ptr727

ptr727 commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Answering the round's headline, "The conflict-remedy test should assert the complete 'with its base' wording promised by the implementation": declined as a preference between defensible forms. The assertion in test_an_empty_rollup_holds_any_merge_but_a_conflicted_one pins the remedy itself, "but no check has posted, so resolve the head's conflict", which is what a regression dropping the remedy would lose, and fleet-code-review's Review the Change asks reviewers to omit preferences.

@ptr727
ptr727 merged commit 578a265 into develop Oct 25, 2026
14 checks passed
@ptr727
ptr727 deleted the fix/3471-dirty-no-check-wording branch October 25, 2026 23:32
ptr727 added a commit that referenced this pull request Oct 26, 2026
)

## Summary

Promotes the pull requests merged into develop since release 2.0.1184.

- [#3483](#3483): a held
`wait` exits `45` with `status=CHECKS_MISSING` where it used to exit `0`
over checks that never ran. The cases are a payload with no commit
matching the head, a `DIRTY` merge with no check posted, and a `DIRTY`
or `BEHIND` merge whose required context is unregistered or came from
another app. The `wait` help and `scripts/README.md` name each exception
that stays at `0`.

- [#3485](#3485): the
exit-0 list in the help and README names a pull request no longer open,
which this promotion's own review found missing.
- [#3486](#3486): where
the head's rollup holds a type the reader cannot parse, the
`CHECKS_MISSING` clause and the `BLOCKED` hold's note say a required
check may sit in that unread part, which this promotion's second review
found missing.
- [#3490](#3490): the
no-check-posted cause of exit `45` is scoped to `DIRTY` in the help and
README and names its remedy, which this promotion's third review found
missing.
- [#3491](#3491): the
`wait` help and README restore the caveat that a review-present exit `0`
does not poll the checks, which this promotion's fourth review found
dropped.

Closes #3471

## Constituent coverage

Each change this promotion carries had coverage on its own pull request
into develop:

| Pull request | Merged head | Coverage |
| --- | --- | --- |
| [#3483](#3483) |
`8f29cadd` | attested local pass at the merged head, base `develop`. A
Copilot round on the earlier head `ee530a4b` opened three findings, each
fixed in `995ce78a` and resolved, so no Copilot round covers the merged
head |
| [#3485](#3485) |
`275e4c8b` | attested local pass at the merged head, base `develop`, and
a Copilot table on the merged head naming exactly its 2 changed files,
no open findings |
| [#3486](#3486) |
`1f9fde03` | attested local pass at the merged head, base `develop`. A
Copilot round on the earlier head `b8a74e8a` opened three findings, each
fixed later on the branch and resolved, so no Copilot round covers the
merged head |
| [#3490](#3490) |
`ba37c856` | attested local pass at the merged head, base `develop`, and
a Copilot table on the merged head naming exactly its 4 changed files.
Its headline's test-wording preference was declined in a comment |
| [#3491](#3491) |
`8c65e4d8` | attested local pass at the merged head, base `develop`, and
a Copilot table on the merged head naming exactly its 2 changed files,
verdict clean, no open findings |

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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