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
Background
The reusable OpenAI PR reviewer currently requests only the first 20 native
closingIssuesReferencesand then retains only the first 10 entries. A pull request that legitimately closes a tracking issue and more than 19 implementation children therefore failspr-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
Code Changes Tree
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.lengthcheck 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
too-many-closing-issueswhen all 32 nodes are present.missing-open-sub-issues.totalCountlarger than the returned maximum page still fails closed.Validation
node .github/scripts/issue-review/test.mjsnode .github/scripts/pr-readiness/test.mjsnode .github/scripts/pr-review/test.mjsgit diff --check