🫴 fix: Preserve Queued Follow-Ups Through Handoff - #15942
Conversation
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 698d303321
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
698d303 to
f1e70cc
Compare
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f1e70ccabf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c16217b298
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
8060953 to
7998a2b
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8060953278
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
7423608 to
4ad6ea3
Compare
|
Rebased onto |
In an agent conversation the server admits a queued follow-up on its own clock, and the client learned of that successor only through the receipt poll, the active-job poll and a resume attach, so the user's words appeared as the latest turn a second or more after the reply above them ended. The queued follow-up is now drawn as the newest user turn the moment its predecessor completes cleanly, with its chip reduced to a remove action until the server admits it. The drawn turn is presentation intent only: it never enters the message cache, anchors no send, edit, fork or rerun, and shows only while the completed response it follows is the thread's tail. The intent ends once anything parents on that response, on a cancelled, dead or indeterminate receipt, or on the user's own removal. The composer queues behind it and the completed response offers no rerun while it stands. The receipt poll also stays alive while the client holds a server-owned row the projection has not settled, so a successor that starts and finishes inside one active-job poll gap is no longer noticed only on the next focus.
4ad6ea3 to
d65f5d7
Compare
|
Reworked at |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d65f5d7d7b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…xpired Rows A revealed head that is cancelled or dies before admission leaves the server-owned queue non-empty and its terminal evidence outside the settled receipts, so nothing re-ran the drain for the row the backend moves on to; the drain now subscribes to the admissible head and the reveal itself. An uncertain row whose reconciliation window has expired is held for manual recovery only and no longer keeps the receipt poll alive.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 674c6b843f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…Path A transcription completing while a queued follow-up was about to start called the send path directly and could race the turn the server already owed. The form's routing (answer mode, then steer or queue during a run or a pending reveal, then an ordinary send) now lives in one function that typed and dictated submissions share; a refused during-run submit keeps the text in the composer.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e1a4dcf195
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Please review the current PR head 19ee541. Confirm that this exact commit is the reviewed commit and ignore findings that apply only to earlier heads. This round follows a subsystem audit of presentation versus admission ownership, durable follow-up enqueue, direct-send context preservation, cancellation, cache observation, history/attachment races, remount and expiry. Please review the complete transition across these boundaries. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 19ee541809
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Please review the current PR head 941d227. Confirm that this exact commit is the reviewed commit and ignore findings that apply only to earlier heads. I addressed all three current findings together: retain off-screen guards while receipts are owed, advance and remember completion boundaries through consecutive admissions, and consume the autosave-selected draft key. The broader audit also fixed exact recovered response identity and the browser-reproduced queue lineage mismatch: queue parent/epoch remain immutable and separate from presentation and completion boundaries. Focused transition tests pass; CI is running. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 941d227913
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Please review the current PR head 15074cf. Confirm that this exact commit is the reviewed commit and ignore findings that apply only to earlier heads. The two input findings are addressed at their shared owners: useAutoSave supplies the actual draft-consumption callback to useSteering, and submitPrompt preserves refused auto-sends in the composer for all prompt pickers, including variable dialogs and library actions. I audited the remaining submitMessage callers: URL prompts stage their text before attempting submission; conversation starters retain their clickable source. All 516 focused tests pass. All CI checks, including the expanded two-follow-up browser regression, passed at the preceding head; current-head CI is running. |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…loseout # Conflicts: # client/src/hooks/Chat/__tests__/useSteering.spec.tsx # client/src/hooks/Chat/useSteering.ts # client/src/hooks/SSE/useResumeOnLoad.ts
Summary
I fixed the gap between an agent run completing and its server-queued follow-up appearing. The queued words now appear immediately as a presentation-only user row, with cancellation available until the backend fences admission. The row never enters message history or becomes a send/edit/fork anchor.
How it works
Change Type
Testing
git diff --check.npx tsc --noEmitinclientand compared diagnostics against untouchedorigin/devusing the same installed dependencies. No new diagnostics after normalizing source positions and the added translation-key union length; existing dependency/type errors prevent a clean local typecheck.e2e/specs/mock/queued-reveal.spec.ts: hold successor discovery, assert immediate rendering, enqueue another follow-up during handoff, then verify both persisted turns after reload without a synthetic focus event. Run withnpx playwright test --config=e2e/playwright.config.mock.ts queued-reveal.spec.tsafter preparing the build.npm run lighthouse; local preparation is blocked by the installed tsdown/declaration-tool mismatch in unchangedpackages/api/src/stream/jobStoreCapabilities.ts. All CI checks passed at941d227913, including Lighthouse, client typechecking, all browser lanes, and the strengthened queued handoff test. Final-head CI verification is in progress.Test Configuration:
origin/dev, continuing this PR’s existing branch.Checklist