Skip to content

feat(status-checks): report pending status check reasons - #44921

Open
rQcAnE4pk15VDHVa wants to merge 1 commit into
renovatebot:mainfrom
rQcAnE4pk15VDHVa:feat/dependency-dashboard-verbose-pending-checks
Open

feat(status-checks): report pending status check reasons#44921
rQcAnE4pk15VDHVa wants to merge 1 commit into
renovatebot:mainfrom
rQcAnE4pk15VDHVa:feat/dependency-dashboard-verbose-pending-checks

Conversation

@rQcAnE4pk15VDHVa

Copy link
Copy Markdown

Changes

This is my first OSS contribution. And I hate that it's so much code to review. I fear the feature crosses a lot of files. I found no way to squeeze it in a central place. Also I and gpt found discussion-worthy discrepancies :-/ Let me know what you think

Adds precise diagnostic information for branches that remain pending while Renovate waits for status checks.

Pending reasons are recorded where the corresponding decision is made, avoiding duplicated decision logic. Reasons include minimum release age, missing release timestamps, insufficient merge confidence, prCreation=status-success, prCreation=not-pending, and pending branch automerge.

The reasons are written to debug logs and can optionally be displayed in the Dependency Dashboard using:

{
  "dependencyDashboardVerbosePendingChecks": true
}

The option is disabled by default to preserve the existing compact dashboard format. For individual updates, the dependency name is omitted from the reason when it is already present in the PR title. Grouped updates retain dependency names so each reason remains attributable.

The status-check flow also respects ignoreTests, forced PR creation, and Dependency Dashboard approval without duplicating the PR creation decision logic.

Example Dependency Dashboard output:

**Pending Status Checks**

The following updates await pending status checks.

chore(deps): update dependency org.openapitools:jackson-databind-nullable to v0.2.11 - *minimum release age not met (7 days required, 44h remaining)*

Discussion

1️⃣ Opinion?

There is an existing discrepancy between the documented behavior of ignoreTests and the new-commit PR creation path.

The documentation states that ignoreTests: true causes Renovate to ignore all status checks. However, the existing new-commit path returns pending before status resolution for every non-immediate prCreation mode, including when ignoreTests is enabled. Existing unit tests currently codify this one-run delay.

This PR follows the documented behavior: when ignoreTests is enabled, the new-commit status-check wait is skipped and PR processing continues immediately.

Opinion?

2️⃣ Opinion?

A similar discrepancy exists for forced PR creation.

ensurePr() already allows forcePr and Dependency Dashboard approvePr to bypass prCreation=not-pending. However, immediately after a new commit, an earlier pending return can prevent execution from reaching ensurePr().

This PR aligns the early new-commit path with ensurePr() by allowing these explicit PR creation overrides to continue processing. prCreation=status-success remains strict and still requires successful status checks.

Context

Please select one of the following:

AI assistance disclosure

Did you use AI tools to create any part of this pull request?

Please select one option and, if yes, briefly describe how AI was used (e.g., code, tests, docs) and which tool(s) you used.

  • No — I did not use AI for this contribution.
  • Yes — minimal assistance (e.g., IDE autocomplete, small code completions, grammar fixes).
  • Yes — substantive assistance (AI-generated non‑trivial portions of code, tests, or documentation).
  • Yes — other (please describe):

AI assistance was used to implement and review the changes, add tests and documentation, and prepare this PR description.

Tool: OpenAI Codex / GPT-5. The agent was instructed to avoid duplicating decision logic. Pending reasons are captured where status decisions are made and passed through the existing branch-processing result.

Documentation (please check one with an [x])

  • I have updated the documentation, or
  • No documentation update is required

How I've tested my work (please select one)

I have verified these changes via:

  • Code inspection only, or
  • Newly added/modified unit tests, or
  • No unit tests, but ran on a real repository, or
  • Both unit tests + ran on a real repository

The public repository: N/A — tested against a private Azure DevOps repository.

@github-actions
github-actions Bot requested a review from viceice July 28, 2026 14:49
@jamietanna
jamietanna self-requested a review July 28, 2026 14:54

@jamietanna jamietanna 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.

Thanks for the start on this. A couple of things:

  • doing the debug logs first (#40370 (comment)) would be best, as they can be user-friendly
  • before or next, I'd want to surface the pendingChecksReasons as a more machine-readable reason, such as not-met-minimum-release-age or similar
    • we may want to make it an object, where we can then provide more context such as a timestamp we're waiting until for Minimum Release Age
    • this may not be a user-facing thing, but something that's available to Renovate's internal stat
  • once this is all wired in, we can look at surfacing this in the Dependency Dashboard

Hope that helps - happy to chat more with breaking this down!

Will double check your "discussion" points shortly

@jamietanna

Copy link
Copy Markdown
Contributor

For the Dependency Dashboard, something that may be useful here: #44926

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.

Status Checks: Add debug logs for pending status check reason

2 participants