Skip to content

Count Copilot Findings Stated Only in a Review Notes File Table #3893

Open

Description

@ptr727

scripts/pr_review_copilot.py silently drops findings that a Copilot review states only in its file table, when the table's second column is headed Review notes.

Shape that is missed. A constructed example of the body shape:

<!-- ccr-overview-v2 -->
| File | Review notes |
|---|---|
| `scripts/example.py` | **[P1]** Guard the empty input before indexing it — moderate, 1 vote. |
| `scripts/other.py` | Reviewed. |

Why it is missed.

  • The reader counts table findings only where a header cell equals the vocabulary's table_findings, which is "findings" in scripts/reviewers/copilot.json (pr_review_copilot.py around line 559).
  • | File | Review notes | labels as ["file", "review notes"], so no table finding is counted.
  • unthreaded = max(named - linked, 0) then reads 0 wherever every summary-list entry links a thread, so FINDINGS WITH NO THREAD never prints.
  • placed() treats any table whose first header is file as placed, so no UNPLACED hold or note fires either.

The miss surfaced on #3892, where four table-only findings went uncounted and were answered by hand.

Care in the fix.

  • Adding "review notes" to the vocabulary alone overcounts, since the tally counts any cell with alphanumeric text, and every Reviewed. row would read as a finding. Count on the [P\d] marker, or skip the filler text.
  • One cell can hold two findings under one marker.
  • A recognized table finding only adds to a count, so its text never prints under the block.
  • No fixture in tests/test_pr_review_copilot.py has this header.

Done when a review carrying this shape prints its table-only findings under FINDINGS WITH NO THREAD with their text, and a Reviewed. row counts as nothing. A fixture of the shape above must pin it.

Activity

  1. added
    gateA rule with no mechanical check, or a check that misses a shape
    on Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    gateA rule with no mechanical check, or a check that misses a shape

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions