GENESISCODE DOCTOR AI
GENESIS REPAIR KNOWLEDGE NETWORK

GitHub Copilot Usage Metrics PR Review Stages: Dashboard & API Guide

QUICK ANSWER

GitHub added pull_request_review_times to the enterprise- and organization-level Copilot usage metrics repos-1-day report on September 25, 2026. The new section summarizes human pull-request review timing with median and p90 minutes for ready-to-first-review, first-to-final-review, and final-review-to-merge. Treat it as a scoped review-funnel metric, not a universal pull-request counter: GitHub says this release includes pull requests authored by a human and reviewed by at least one other human, excludes bot/Copilot/author reviews from qualification, attributes the durations to the day the pull request was merged, does not backfill the new section, and excludes pull requests that became ready for review before September 21. A quiet day returns an empty array rather than a zero-duration record, and a first-to-final value of zero can represent a pull request with a single qualifying review. Keep pull_request_review_times.total_merged separate from the existing pull_requests.total_merged field because their populations can differ.

Common symptoms

  • A dashboard assumes pull_request_review_times.total_merged equals every merged pull request
  • A reporting job interprets an empty pull_request_review_times array as zero-minute review latency
  • A team compares pre-release and post-release review-stage trends without marking the no-backfill boundary
  • A report treats median or p90 stage time as the exact duration of each individual pull request
  • An integration assumes bot, Copilot, author-only, or unreviewed pull requests are included in the new review-stage population

Possible causes

  • GitHub introduced a new review-stage subsection with eligibility rules that differ from the existing broad pull-request metrics
  • The new section is built forward from the September 25 release and has an explicit pre-September-21 readiness exclusion
  • Daily rows are attributed by merge date, so a long-running pull request can contribute its stage durations to a later day
  • Median and p90 are distribution summaries and can be misread as event-level measurements
  • The API returns an empty array on a day with no qualifying merged pull requests rather than emitting a synthetic all-zero record
HOW TO FIX IT

Work from the safest step to the harder repair.

  1. Step 1. Inventory dashboards, warehouse models, alerts, and reports that consume the enterprise/org repos-1-day Copilot usage metrics report.
  2. Step 2. Model pull_request_review_times as a distinct scoped dataset rather than joining its total_merged field to the broader pull_requests total without a population label.
  3. Step 3. Preserve the three stage boundaries separately: ready-to-first review, first-to-final review, and final-review-to-merge. Do not collapse them into one undocumented review-time number.
  4. Step 4. Store median and p90 as distribution summaries. Do not assign either value to an individual pull request or present p90 as the maximum.
  5. Step 5. Treat an empty pull_request_review_times array as no qualifying merged pull requests for that report day, not as evidence that review duration was zero.
  6. Step 6. Handle a first-to-final review duration of zero as a valid documented case for a pull request with one qualifying review rather than automatically flagging it as corrupt data.
  7. Step 7. Mark September 25, 2026 as the feature-introduction boundary and preserve GitHub's no-backfill limitation. Do not draw a continuous historical trend across an interval where the field did not exist.
  8. Step 8. Keep the September 21 readiness cutoff visible in migration notes because qualifying pull requests that became ready before that date are excluded from the new section even if later merged.
  9. Step 9. Use the merge day as the attribution date when reproducing GitHub's daily metric. If an internal warehouse also tracks authored or ready dates, label those dimensions separately instead of silently shifting the vendor metric.
  10. Step 10. Keep human-review qualification explicit in documentation and UI. GitHub says bot, Copilot, and author reviews do not satisfy the qualifying-review rule for this release.
  11. Step 11. Verify the organization's access role and Copilot metrics-policy prerequisites before diagnosing an empty or unavailable report as a data-collection failure.
  12. Step 12. Add regression fixtures for a normal multi-review pull request, a single-review zero first-to-final case, no qualifying merges, a pre-September-21 ready date, and divergent pull_request_review_times versus pull_requests totals.

Need the actual code? Go to GenesisCodeDoctor.com to search the Code Store or request code for the exact platform, error, and repair you are working on.

TROUBLESHOOTING DECISION TREE

Use evidence to decide the next move.

  1. 1. Need a team-level view of human review-stage latency? Use the new median/p90 stage fields with the documented qualifying population.
  2. 2. Need the total number of all merged pull requests? Use the appropriate broader pull-request metric rather than substituting pull_request_review_times.total_merged.
  3. 3. No pull_request_review_times row for a day? First distinguish a valid empty array from access/policy/API errors; do not invent zero durations.
  4. 4. Building a long historical trend? Start the review-stage series at the supported data boundary and annotate the release/no-backfill break.
  5. 5. Need exact per-PR diagnosis? Use a separately governed event-level data source; this aggregate section is not an exact per-PR trace.
REPAIR FLOW

A visual path from symptom to verified production.

Observe
Protect
Isolate
Repair
Test
Publish
Verify live
BEFORE YOU PASTE CODE

Protect the working site first.

  • Keep API credentials and organization data out of client-side code and diagnostic output.
  • Preserve the raw report date, scope, population label and metric version so later transformations remain auditable.
  • Use explicit null/empty-state handling instead of coercing missing review-stage rows into zeros.
  • Test schema changes against appropriately governed sample data before changing production dashboards.
STOP AND GET HELP WHEN

Do not turn a repair into a larger outage.

  • Do not equate pull_request_review_times.total_merged with all merged pull requests.
  • Do not turn an empty array into a zero-minute review-time claim.
  • Do not compare the new field to earlier dates as though GitHub backfilled it.
  • Do not claim bot or Copilot reviews qualify a pull request for the human-review-stage population in this release.
HOW GENESIS HANDLES IT

Diagnose the exact failure before choosing a repair.

Genesis separates the visible symptom from the underlying technical cause. Run the supported diagnostic first, review the evidence, and then use a matching repair only when the failure is actually verified.

Platform scope
GitHub Copilot · Usage metrics API · GitHub Enterprise Cloud · pull request analytics
Category
Developer analytics · Pull request review · Metrics correctness · Engineering operations
Last updated
2026-09-25
REPAIR PROFILE

Know the complexity before you edit.

Difficulty
Intermediate
Change risk
Medium

These labels describe implementation complexity and blast radius, not a guaranteed repair time.

AUTHORITATIVE SOURCES

Verify time-sensitive platform details at the source.

COMMON QUESTIONS

Before you make the change

What does pull_request_review_times measure?

GitHub says it reports median and p90 minutes for three stages: ready to first qualifying review, first to final qualifying review, and final qualifying review to merge, for the documented human-authored/human-reviewed population.

Why can total_merged differ from pull_requests.total_merged?

The review-stage section has a narrower qualifying population. GitHub says bot, Copilot and author reviews do not satisfy its human-review qualification, so its merged count can be lower.

Does an empty array mean zero-minute reviews?

No. GitHub says a day with no qualifying merged pull requests returns an empty array. Preserve that as an empty/no-qualifying-data state.

Can first-to-final review time be zero?

Yes. GitHub documents zero for a pull request with a single qualifying review because the first and final qualifying review are the same event.

Can I backfill this metric before September 25?

Not from this new GitHub field. GitHub says there is no backfill and also excludes pull requests that became ready for review before September 21 from the new section.

Next step

Start with a free diagnostic. If Genesis verifies a problem and a compatible treatment exists, continue to the matching Code Store product or repair path. If you cannot find the exact code you need, request it at GenesisCodeDoctor.com rather than forcing a generic snippet into the wrong platform.