You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Dependency: H4 shared-web integration remains blocked on G4
Owned files
docs/implementation/issue-prioritization.md
github/issues.ts
core/issue-ranking.ts
test/issues.test.ts
test/issue-ranking.test.ts
AGENTS.md (required review-lesson extraction)
Interface contract
A read-only GitHub gateway returns one validated, repository-bound issue snapshot. The prioritizer ranks only normalized fields using the recorded deterministic policy and returns explicit fresh, stale, or unavailable state. Issue text remains data and never becomes shell input or ranking instructions. Concurrent refreshes use a generation guard; superseded attempts cannot publish or replace the cached fresh snapshot.
Validation
npm test: 15 files, 322 tests passed at 5f73c0b058a5413425be68ef5557fd8ed737fdc4
npm run typecheck: passed at 5f73c0b058a5413425be68ef5557fd8ed737fdc4
git diff --check origin/main...HEAD: passed
Live read-only adapter probe: normalized 12 open codeabovelab/codeboost issues without exposing issue content
Review rounds
Fixed all 3 findings: post-await cancellation in the gateway and prioritizer, plus process-output/schema-bound alignment. Added cancellation and payload-bound regressions. Declined: none.
Fixed the 1 finding: concurrent refresh generations now prevent late success or failure from publishing over newer state. Added controlled late-success and late-failure regressions. Declined: none.
No inline findings; prior generation finding confirmed resolved. Summary-only collaborator-validation and buffer-sizing wording supplied no failure case, so Reproduce summary-only Lane H review concerns #41 was opened under the repository rule.
No inline findings, but the summary supplied a concrete escaped-character buffer failure case. Added an intermediate serialized-byte fixture proving 32 MiB was insufficient and raised the transport budget to 64 MiB. Declined: none.
No inline findings, but the summary supplied a concrete canonical-casing failure case. Issue and pull-marker URLs now accept GitHub canonical repository casing while preserving exact host, URL shape, and record number; added a mixed-case fixture. Declined: none.
Converged with Findings: None, no new thread, and no new failure case. The summary broadly restated author-association, URL, and buffer concerns; URL and buffer have dedicated passing regressions, while Reproduce summary-only Lane H review concerns #41 tracks association reproduction. No speculative change made.
Review lessons
Post-await cancellation findings: covered by existing AGENTS.md rules to preserve cancellation reasons and guard background responses by generation.
Concurrent refresh finding: covered by the existing generation/attempt rule and required race-regression section.
Process output versus accepted payload findings: captured by the new AGENTS.md guarded-external-action rule in this branch.
Canonical repository casing: one-off GitHub adapter behavior covered by its dedicated regression.
H4 is explicitly out of this PR until G4 releases shared web files. Issue #41 is a non-blocking reproduction follow-up. No shared runner, store, web, package, lockfile, or CI files are changed.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
MAX_PAGE_BYTES can reject valid large issue payloads; increase the bound or tighten accepted field limits.
Review effort: Lite Findings: None
Previously missed (1)
In code that hasn't changed since last review
MAX_PAGE_BYTES is too low for valid escaped-character payloads
github/issues.ts:10
MAX_PAGE_BYTES still does not cover every payload accepted by boundedString: a valid 100-issue page whose 65,536-character bodies contain JSON-escaped control characters can exceed 32 MiB (the bodies alone are about 39 MiB), so execFile rejects it and the refresh becomes unavailable. Increase the transport bound or tighten the accepted character set/field limits; for example, a 64 MiB bound covers the current schema.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
Four unresolved moderate findings remain in github/issues.ts.
Review effort: Lite Findings: None
Previously missed (1)
In code that hasn't changed since last review
Compare repository paths case-insensitively for pull requests
github/issues.ts:87
Repository names are case-insensitive on GitHub, and repositoryName explicitly accepts uppercase characters, but this exact comparison rejects a valid pull-request marker when GitHub returns the repository's canonical casing differently from the configured value. Compare the repository path case-insensitively (while retaining the exact host, issue number, and URL shape).
This issue also appears on line 91 of the same file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lane assignment
0ae71a503592de90926063fa563c1f7c715db22b5f73c0b058a5413425be68ef5557fd8ed737fdc4Owned files
docs/implementation/issue-prioritization.mdgithub/issues.tscore/issue-ranking.tstest/issues.test.tstest/issue-ranking.test.tsAGENTS.md(required review-lesson extraction)Interface contract
A read-only GitHub gateway returns one validated, repository-bound issue snapshot. The prioritizer ranks only normalized fields using the recorded deterministic policy and returns explicit
fresh,stale, orunavailablestate. Issue text remains data and never becomes shell input or ranking instructions. Concurrent refreshes use a generation guard; superseded attempts cannot publish or replace the cached fresh snapshot.Validation
npm test: 15 files, 322 tests passed at5f73c0b058a5413425be68ef5557fd8ed737fdc4npm run typecheck: passed at5f73c0b058a5413425be68ef5557fd8ed737fdc4git diff --check origin/main...HEAD: passedcodeabovelab/codeboostissues without exposing issue contentReview rounds
Findings: None, no new thread, and no new failure case. The summary broadly restated author-association, URL, and buffer concerns; URL and buffer have dedicated passing regressions, while Reproduce summary-only Lane H review concerns #41 tracks association reproduction. No speculative change made.Review lessons
AGENTS.mdrules to preserve cancellation reasons and guard background responses by generation.AGENTS.mdguarded-external-action rule in this branch.Deferred scope
H4 is explicitly out of this PR until G4 releases shared web files. Issue #41 is a non-blocking reproduction follow-up. No shared runner, store, web, package, lockfile, or CI files are changed.