Skip to content

ci: Collect every bounded native closing Issue #19

Description

@idy

Background

The reusable OpenAI PR reviewer currently requests only the first 20 native closingIssuesReferences and then retains only the first 10 entries. A pull request that legitimately closes a tracking issue and more than 19 implementation children therefore fails pr-linkage, even when every GitHub-native relationship is present.

GizClaw/gizclaw#758 demonstrates the defect with 32 native closing issues: GitHub reports the complete relationship set, while the reviewer reports later children as missing.

Goal

Collect and verify every native closing issue supported by GitHub's connection, so readiness evaluation uses the complete relationship set and does not produce false missing-child blockers for larger tracking issues.

Non-goals

  • Changing the requirement that every open native child be closed by the same pull request.
  • Weakening fail-closed behavior when GitHub relationship evidence is incomplete.
  • Changing model prompts, Issue design policy, or code-review policy.

Code Changes Tree

.github/
├── scripts/
│   └── pr-readiness/
│       ├── verify.mjs             # verify the complete native closing-Issue connection without a ten-Issue truncation
│       └── test.mjs               # cover a pull request with more than twenty native closing Issues
└── workflows/
    └── codex-openai-review.yml     # collect the complete closing-Issue set for the review context
README.md                           # document complete native closing-Issue collection and the fail-closed bound

Design

Closing-Issue collection

Request the maximum GraphQL page of 100 native closing issues in both the initial context collection and the final metadata verification step. Preserve all returned nodes instead of slicing the set to ten.

The existing linked_issue_count > linked_issues.length check remains the fail-closed boundary. A pull request with more than 100 closing issues therefore still fails explicitly instead of silently reviewing an incomplete set. Native sub-issue collection retains its existing maximum of 100 and its equivalent fail-closed count check.

Snapshot integrity

Every collected issue remains part of the normalized readiness snapshot and its SHA-256 identity. The verification step re-fetches the same complete bounded set, so a relationship or linked-Issue change during review still invalidates the run.

Test And Acceptance Criteria

Acceptance Criteria

  • A pull request with 32 native closing issues is analyzed without too-many-closing-issues when all 32 nodes are present.
  • An open child included after the former first-10 boundary is recognized as natively closed and does not produce missing-open-sub-issues.
  • A reported totalCount larger than the returned maximum page still fails closed.
  • Context collection and final verification use the same maximum and preserve every returned node.

Validation

  • node .github/scripts/issue-review/test.mjs
  • node .github/scripts/pr-readiness/test.mjs
  • node .github/scripts/pr-review/test.mjs
  • git diff --check

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions