@@ -414,15 +414,14 @@ the implementation understandable and operationally cheap.
414414 check suite on a PR that was already with its reviewers from looking like a
415415 stalled handoff. A push clears the clock, because new code means new checks
416416 and a review that has to run again.
417- - Only a gate that has reported nothing on the current head runs the clock. A
418- Copilot review that covers the head but left open findings holds the PR, yet
419- it is not missing: it answered, and the threads it left are the author's to
420- clear. Because the clock is carried across a trip back to the author, counting
421- those findings would make every author who takes more than four hours over
422- review comments look like a gate GitHub lost, and the report would say a
423- review never arrived when it is sitting on the PR. A review that is missing or
424- that only covers older code still counts, because Copilot has said nothing
425- about the code being reviewed.
417+ - Only a gate that has reported nothing on the current head runs the clock.
418+ Copilot findings that still need author action hold the PR through discussion
419+ routing, but the review is not missing: it answered. Because the clock is
420+ carried across a trip back to the author, counting those findings would make
421+ every author who takes more than four hours over review comments look like a
422+ gate GitHub lost, and the report would say a review never arrived when it is
423+ sitting on the PR. A review that is missing or that only covers older code
424+ still counts, because Copilot has said nothing about the code being reviewed.
426425- An expired hold routes the pull request and says so in its status comment,
427426 which is the whole of what the dashboard can do about it. The gates raise no
428427 alarm of their own. Each way a gate can go missing has its own cause and none
@@ -446,26 +445,23 @@ the implementation understandable and operationally cheap.
446445 would hold every ready PR with its author waiting for a review that never
447446 runs, so only branches with automatic review are listed and PRs targeting
448447 other branches route normally.
449- - Every unresolved, non-outdated thread Copilot started is an author action,
450- even after an author reply or a later clean review. This ownership bypasses
451- generic praise and author-reply classification and ends only when the thread
452- is resolved or outdated. The gate therefore never needs its expiration path
453- to retain these findings.
454- - Findings are counted from unresolved, non-outdated review threads Copilot
455- started, not from the comment count on its review. A review's comment count
456- never shrinks, so it keeps counting feedback the author has since addressed
457- and holds the PR on work that is already done.
458- - The gate's re-request path covers two states. A stale review means the author
459- pushed, which is the one change a re-review can respond to. Findings on the
460- current head sit on unchanged code, so asking Copilot to look at it again
461- would reach the same verdict and be requested again on the next pass; those
462- threads stop counting only when the author resolves them or GitHub marks them
463- outdated after the referenced code moves. A later clean review does not close
464- an existing thread. A push makes the review stale and triggers a re-request,
465- but the push alone does not prove that a finding was fixed.
466- - The other state is a missing first review. The dashboard requests it on the
467- first eligible refresh using its GitHub App installation token. Initial reviews
468- and re-reviews share the same delivery checks and confirmation path.
448+ - Copilot threads use the same discussion classification as human review
449+ threads. A completed author reply hands the action to reviewers; a commitment
450+ to more work keeps it with the author. Explicit resolution is not required
451+ for that handoff because a reply explains the author's response without
452+ requiring a separate administrative step. The thread remains visible as
453+ unresolved until GitHub marks it resolved or outdated.
454+ - The gate waits only for a missing or stale review. Counting open threads
455+ independently would override discussion classification and keep completed
456+ author replies assigned to the author. Actionable findings already keep the
457+ PR with its author through ordinary discussion routing.
458+ - A stale review means the author pushed, so a re-review can inspect new code.
459+ Findings on the current head do not trigger re-review requests: another
460+ review is not a substitute for responding to the finding. A later clean
461+ review alone does not close an existing thread or change its pending action.
462+ - The dashboard requests a missing first review on the first eligible refresh
463+ using its GitHub App installation token. Initial reviews and re-reviews share
464+ the same delivery checks and confirmation path.
469465- Copilot's generic error notice is a failed attempt, not a completed review or
470466 delivery confirmation. It leaves the review missing or stale so the next
471467 eligible refresh can retry on the same head without changing the requester.
@@ -474,15 +470,15 @@ the implementation understandable and operationally cheap.
474470 from GitHub reviews, not refreshes, and a new head starts a fresh budget.
475471 Delivery rechecks the live count so an error arriving after evaluation cannot
476472 cause another request. Pending requests still prevent duplicates. Required
477- checks and unresolved Copilot findings still apply; the status comment
478- explains when routing stops waiting after repeated errors. The four-hour
479- timeout remains a backstop for reviews that never report.
473+ checks and Copilot findings needing author action still apply; the status
474+ comment explains when routing stops waiting after repeated errors. The
475+ four-hour timeout remains a backstop for reviews that never report.
480476- GitHub's quota-exhausted notice is a failed attempt even though GitHub records
481477 it as a review of the current head. It does not count as a completed review
482478 or confirm delivery. Without a configured fallback token, it immediately
483479 releases the Copilot gate and disables automatic requests for that PR,
484480 including after later pushes. Required checks and actionable feedback still
485- apply, including unresolved, non-outdated Copilot threads.
481+ apply, including Copilot threads that still need author action .
486482- The optional ` COPILOT_REVIEW_FALLBACK_TOKEN ` changes the requester after quota
487483 exhaustion and keeps the Copilot gate active under its normal rules. The
488484 fallback records existing quota notice IDs before requesting, so only a new
0 commit comments