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
Reviewers can select changed lines and attach exact code references to questions or change requests. Ask invokes Claude Code or Codex, chosen in Settings, and displays a persisted answer with pending/error/retry states. Previously feedback was item-level text without an agent response.
Selection actions appear beside the highlighted code; Conversation has a draggable divider, immediate submission feedback, and follows incoming answers while preserving earlier reading positions. References retain the reviewed commits and show outdated evidence rather than silently pointing to different code.
The question adapters run read-only in temporary directories with bounded context/output and timeouts. Settings and answer attempts persist in SQLite. Request change remains saved feedback; this PR does not implement source edits or merge automation. The approved scope and behavior are documented in docs/implementation/read-only-review.md.
Validation
Regression coverage for snippet validation, stale references and assignment context, persistence, provider selection, timeout/cancellation/retry, reloads during cancellation, single-click submission, answer scrolling, resizing, selection toolbar placement, and native selection clearing.
Both installed providers passed live connection checks; a copy of the PR #597 review database passed a real Settings → Ask → Claude answer flow.
Current head f2e5538 passes 188 unit/integration tests, all 32 browser tests, typecheck, and diff checks locally. Both current-head CI runs pass; the head change only adds an AGENTS.md workflow rule and passes git diff --check locally.
Automated review converged after 16 rounds. Valid findings fixed stale poll overwrites, outdated retries and historical-answer labeling, active-job replacement, shutdown admission and draining, abort-reason loss, premature cancellation cleanup, in-flight draft loss, reload handling during provider settlement, and assignment-context drift. Every fix has a failing-before/passing-after regression. Round 16 returned no findings; all five inline threads are resolved. No concrete findings were declined. Polling efficiency is tracked in Avoid rebuilding the full review when polling agent answers #12; the final summary-only refresh-draft concern is tracked in Preserve composer edits during in-flight refresh #13 for reproduction.
When a pending/failed question becomes outdated after the review snapshot or plan revision changes, answerOutdated is true but this branch still renders a Retry answer button. Clicking it sends the old note to the retry endpoint, which Questions.start rejects for the older snapshot; act then calls showFailure and wipes the entire review view instead of letting the user continue. Hide/replace the retry action for outdated notes (with an instruction to ask a new question against the current review).
Round 2 summary follow-up: reproduced the outdated Retry button with a failing browser regression. Unanswered questions from older snapshots now instruct the reviewer to ask again against current code; completed historical answers retain their outdated label. All 27 browser tests and typecheck pass. The timeout-reporting summary supplied no concrete failing case; deadline/lease tests already cover timeout errors, retry, and late-result rejection. Please identify any remaining timeout interleaving in the next review.
Round 5 summary reproduced directly against the CLI adapter: both timeout and shutdown abort reasons became generic Agent cancelled text. The adapter now preserves Error-valued abort reasons. Two failing-before/passing-after regressions cover this. All 185 unit/integration tests pass; the adapter tests, typecheck, and diff checks pass after the final test typing adjustment. No concrete findings declined.
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
Five unresolved moderate findings remain and should be addressed before approval.
Review effort: Lite Findings: None
Previously missed (1)
In code that hasn't changed since last review
Retry enabled while timed-out attempt is still running
web/public/app.js:571
When the persisted lease expires, this renders a Retry answer button even though Questions deliberately keeps the timed-out invocation in its running map until the provider settles. Clicking Retry during that interval is rejected by start() as “Agent is already answering,” so the UI offers an action that cannot succeed; expose the active-attempt state (or keep the retry disabled/hidden until it settles) and only enable retry once a new attempt can be admitted.
The documentation review returned no inline findings but identified one concrete timeout-state race. Polling now exposes active local invocations; the UI shows Finishing cancellation and withholds Retry until settlement. The expired-crash path performs one status poll and then becomes retryable. Final validation: 187 unit/integration tests, 32 browser tests, typecheck, and diff checks pass. Requesting a final current-head review.
Fixed the current-head review concern in 39ab862. Initial review and action responses now include the active invocation marker, so reloading while a timed-out provider is still settling keeps Retry hidden and continues polling. The browser regression now reloads during settlement. Final validation: 187 unit/integration tests, 32 browser tests, typecheck, and diff checks pass. @copilot review
The reason will be displayed to describe this comment to others. Learn more.
Copilot review overview
🔵 Needs a closer look
Four unresolved moderate findings affect assignment staleness, shutdown cleanup, and retry failure reporting.
Review effort: Lite Findings: None
Previously missed (1)
In code that hasn't changed since last review
Mark item answers outdated when review assignments change
runner/review.ts:55
The stale marker does not account for review assignments: saveReview increments review_version and can move a segment into this item without changing the snapshot or plan revision. An item-level question answered before that assignment can therefore be rendered as current even though its prompt omitted the newly assigned code (the reference-specific outdated check cannot catch notes without references). Capture an assignment/context fingerprint for the answer or compare the current item linkage with the context used to start it, and mark the historical answer outdated when it changes.
Fixed the concrete current-head review concern in 8b5b48b. Answers now persist a hash of the item segments supplied to the agent; later assignment changes preserve the answer but mark it as earlier review context. The regression assigns code into an item without changing the plan revision or snapshot and now passes. Final validation: 188 unit/integration tests, 32 browser tests, typecheck, and diff checks pass. @copilot review
Added the requested durable workflow rule in f2e5538: before closing or merging a PR, extract its highest-value broadly reusable review lessons into AGENTS.md while omitting duplicates and one-off implementation details. Documentation-only change; git diff --check passes. @copilot review
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.
Changes
Reviewers can select changed lines and attach exact code references to questions or change requests. Ask invokes Claude Code or Codex, chosen in Settings, and displays a persisted answer with pending/error/retry states. Previously feedback was item-level text without an agent response.
Selection actions appear beside the highlighted code; Conversation has a draggable divider, immediate submission feedback, and follows incoming answers while preserving earlier reading positions. References retain the reviewed commits and show outdated evidence rather than silently pointing to different code.
The question adapters run read-only in temporary directories with bounded context/output and timeouts. Settings and answer attempts persist in SQLite. Request change remains saved feedback; this PR does not implement source edits or merge automation. The approved scope and behavior are documented in docs/implementation/read-only-review.md.
Validation
AGENTS.mdworkflow rule and passesgit diff --checklocally.