Skip to content

Preserve Solo queued messages across restarts - #1704

Open
klopez4212 wants to merge 25 commits into
mainfrom
fix/queue-persistence-20261027
Open

klopez4212 wants to merge 25 commits into
mainfrom
fix/queue-persistence-20261027

Conversation

@klopez4212

@klopez4212 klopez4212 commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Solo follow-ups queued above the composer survive restart with their text, completed attachments, references, and model/effort choices. Resume waits for interrupted requests before releasing saved messages one at a time; Don’t resume leaves saved rows paused. Fresh submissions remain distinct from restored rows.

Release revalidates membership and recipient availability and coordinates windows through the existing chat/row locks and durable Outbox receipts. Completion evidence releases successors; uncertain live predecessors remain paused. Dismissal and abandonment retire only the matching handoff responsibility, while window liveness prevents closed senders from blocking fresh queues. Resume and receipt retries transfer ownership. Remove checks the shared journal before enabling deletion, including after recovery-save failure.

Timeline anchoring now distinguishes Virtua’s automatic corrections from reader movement, including both coalesced into one native scroll event. The existing hold preserves fractional geometry, unmounted anchors, and retargeting after the reader moves. Manual-Retry fixture fixes from earlier commits remain included.

Validation at 3e15988fa:

  • Full mandatory push gate passed: 841 test files, 14,548 tests passed and 20 skipped (1014.02s), plus typechecking, design checks, and push guards.
  • All 621 tests across the complete queue persistence, composer, and three Outbox files pass (66.46s). Gated incremental-journal regressions reproduce both dismissal-after-lookup and local-owner data loss before the fix.
  • All 24 cases in the complete queue and Outbox-storage browser files pass across Chromium/WebKit (59.3s), including both adoption/dismissal orderings and preservation of concurrent accepted status in real IndexedDB.
  • Receipt adoption and dismissal now share a lock. Queue consumption occurs synchronously under that lock only after durable ownership is established. Existing matching receipts are not rewritten; missing hydrated receipts retain the queue row. Independent review is clear.

Earlier validation at b6831c3fe:

  • Full mandatory push gate passed: 841 test files, 14,546 tests passed and 20 skipped (731.46s), plus typechecking, design checks, and push guards.
  • All 481 composer tests pass after adding the recovery lookup to its Outbox fixture.
  • All 138 tests across the complete queue persistence and three Outbox files pass (7.45s). The stale-window regression fails before the fix against an incremental journal fixture. Manual Send and storage-event recovery retain the message; local failed saves, Retry ownership, and newer shared receipts stay protected.
  • All 16 existing queue browser cases pass across Chromium/WebKit. Two new real IndexedDB cases pass (2.6s) and fail without the in-flight ownership guard: a stale window cannot delete another window's renewed receipt after forgetting its old copy.
  • Hydrated receipts are checked against shared storage before a queue row is consumed. Stale receipts release their local delivery fence and incremental deletion ownership; locally owned unsaved delivery remains protected. Independent review is clear.
  • Native restart and real-window recovery remain unverified; browser storage checks cover the IndexedDB boundary, not native acceptance.

Earlier validation at 899196ae2:

  • Full mandatory push gate passed: 841 test files, 14,539 tests passed and 20 skipped (746.44s), plus typechecking and design checks.
  • All 73 queue persistence tests pass (7.48s). The original failed-dismissal regression failed before the repair. Coverage includes sending the retained row after dismissal and restoration, retrying cleanup after storage errors through Send or Remove, releasing a waiting successor, and preserving newer handoff/receipt ownership. Independent queue review is clear.
  • All 16 queue browser cases pass across Chromium and WebKit on the same production sources (40.5s). No browser tests were added in this follow-up.
  • Durable dismissal clears only the matching saved sending flag under the existing locks. Cleanup failure retains evidence for a later Send/Remove retry and renders the storage error. An older completion cannot overwrite a newer event’s handoff.
  • At bd6314458, all 50 history/live-status browser cases passed across Chromium and WebKit, alongside 67 timeline restoration tests. Its temporary expired-route probe passed four cases; no assertions, timeouts, or retries were weakened.
  • This PR adds ten browser scenarios in total; none were removed.

The required gate also exposed two existing fixture failures: a month-boundary calendar assertion and a 500 MiB upload spool exceeding the unchanged timeout. The follow-up ports the date fixture fix from main (802bf5aaf) and preserves actual upload-limit and cumulative-stream coverage without writing that disk-sized fixture. Both complete files passed locally: 46 tests in 5.45s, versus 2 failures/43 passes in 5.63s before the fixture repairs.

Existing shared Button/IconButton controls are retained. Native restart, native scrolling, and renewed human acceptance remain unverified. Hosted CI is separate from the local evidence above. The PR’s ready-for-review status is preserved.

Restore saved messages and resume them in order after interrupted work completes. Keep declined recovery paused and protect the durable Outbox handoff.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as ready for review October 27, 2026 15:09
@klopez4212
klopez4212 requested a review from a team as a code owner October 27, 2026 15:09
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-01T08:13:02.975742Z 3e15988 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d02ab14ea6

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account. One change requested: preserve ordering when recovering an existing Outbox receipt; details inline.

Reviewed head d02ab14 against base b6e1941, with independent Rocket, Mantis and Groot lanes. Source-only: no tests or app execution; the hosted CI snapshot passed, with Windows validation skipped. Native restart and human acceptance remain unverified.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f88a83416b

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account. No further changes requested: the recovered-receipt ordering defect is repaired by registering the existing per-message wait before recovery, with a focused two-row regression.

Reviewed head f88a834 against base b6e1941, focusing on changes since d02ab14 with independent Rocket, Mantis and Groot lanes. Source-only: tests, CI, native restart and human acceptance were not verified.

@kazemek21 kazemek21 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Posted by Codex (gpt-6.1-sol) on behalf of kylez.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Carl, an automated reviewer, commenting via Wes’s GitHub account.

Verdict: changes requested. There are four blocking P2s. Three are replies on the existing threads at follow-up-queue.ts:338, follow-up-queue.ts:413 and follow-up-message.ts:35, each confirmed with a source trace or a failing probe. The fourth is a new inline comment at runner.ts:575. Three non-blocking UX notes are inline too.

Reviewed head f88a83416b4f74b8a413c76fd338cee46bdc180b against base b6e1941e6e29f2f688ba8e4920c5aaa175397221. Royal Court lanes covered UX/product (Princess Donut), persistence/cross-window (Mongo) and queue/runner integration (Mordecai), plus an independent challenge pass. Validation: hosted CI is green at this head. We added focused Vitest probes for (a) and (b), using the PR's own fixture. They failed as expected and were then discarded. We did not run a real two-window browser session or a native restart.

Merge criteria: fix the four blockers, each with a regression test in follow-up-persistence.test.ts. That covers Remove during the Outbox handoff, a cross-window predecessor, partial agent inventory, and a resume the runner forgets. Native restart and human acceptance remain outstanding, per the PR description.

Comment thread src/features/agents/runner.ts Resolved
if (blockers(channelId)) continue;
const first = entries.find((entry) => entry.channelId === channelId);
if (first && !first.error) release(first);
if (first && !first.error && !first.restored) void release(first);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Optional (UX): a paused restored row silently holds back new messages to an idle agent. After Don't resume, or a restart with no interrupted turn, a freshly typed message queues behind the paused row and never sends. Its own row has no caption explaining why. Keeping the order seems right; the gap is the explanation. Consider a caption on rows stuck behind a paused one, e.g. "Waiting for the saved message above. Send or remove it first." Whether a fresh message should wait at all is a product call.

)
throw new Error("This chat is no longer available for sending.");
if (entry.message) restore();
if (entry.message && (!storage || storageError))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Optional (UX/recovery): one unreadable saved record (follow-up-storage.ts:54) sets storageError. That error blocks every queued-mode Solo send in the scope, even to an idle agent, and the alert appears in every Solo chat with no in-app way to clear it. Consider quarantining or skipping invalid records while still loading the rest, or offering a "Discard unreadable saved message" action. The test at follow-up-persistence.test.ts:386 currently asserts the hard failure.

/>
{entry.restored && !entry.error && (
<p className="text-caption">
Saved before restart. Send when ready.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Optional (copy): a row restored with sending: true but no Outbox receipt still shows "Saved before restart. Send when ready." Pressing Send then reports "may already be sending in another window. Reload…" That's wrong with only one window open, and reloading just shows it again. Consider showing the "may already have been sent, check the conversation" state as soon as the row loads with sending set.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as draft October 29, 2026 08:55
@klopez4212
klopez4212 marked this pull request as ready for review October 29, 2026 10:34

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 74d6b2f43a

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account. Two additional fix regressions remain: a P2 that leaves abandoned handoffs unremovable in another window, and a P3 that leaves a sent row stuck after runner abandonment; details inline. I also confirm the existing manual-Send finding.

Reviewed head 74d6b2f against base a3a6223 with independent Rocket, Mantis and Groot lanes. Source-only: no tests or app execution; CI, real two-window behavior, native restart and human acceptance were not verified.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as draft October 29, 2026 12:44
@klopez4212
klopez4212 marked this pull request as ready for review October 29, 2026 12:57

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. The previous Send-deferral and pause-cleanup findings are repaired; the abandoned-handoff fix has one remaining P3 described inline. Reviewed head 0d742cbb41f46d6d525add3578a68b721979205b against base a3a6223d7eb47d38d6c41b2ed6e6d688619cd100, focusing on the changes since 74d6b2f43. Source-only: no tests or app execution; native restart, rendered/focus behavior, performance and human acceptance remain unverified.

@klopez4212
klopez4212 marked this pull request as draft October 29, 2026 14:36
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as ready for review October 29, 2026 14:55
@klopez4212
klopez4212 marked this pull request as draft October 29, 2026 14:59
@klopez4212
klopez4212 marked this pull request as ready for review October 29, 2026 15:12

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ad368ce081

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. No further changes requested: the prior Remove-recovery finding is repaired by refreshing lock ownership after every restore, while preserving the durable sending marker and removal guard. Reviewed head ad368ce0814ef66ec2fbc163d9a116c5b9fc1809 against base a3a6223d7eb47d38d6c41b2ed6e6d688619cd100, focusing on the fix since 0d742cbb41. Source-only: no tests or app execution; hosted CI required passed, but native restart, rendered/focus behavior, performance and human acceptance remain unverified.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Carl, an automated reviewer, commenting via Wes’s GitHub account.

Verdict: one P2 remains, plus one P3. All four blockers from our last review are fixed at this head: the Remove handoff guard, the cross-window predecessor pause, waits on dropped resumes, and partial-inventory deferral. The P2 is a regression introduced by the predecessor-loss fix: removing a later row stalls the chat in other windows. The P3 is a narrow Remove race outside the lock. Both confirm the existing Codex threads.

Reviewed head ad368ce0814ef66ec2fbc163d9a116c5b9fc1809 against base a3a6223d7eb47d38d6c41b2ed6e6d688619cd100, focused on f88a834..ad368ce. Royal Court lanes: persistence/cross-window (Mongo), queue/runner integration (Mordecai), UX (Princess Donut). Validation: hosted CI is green at this head. We ran focused Vitest probes for both findings. Each failed at this head and was then discarded. The lock race is modeled in jsdom, not run in two real windows. No native restart was run.

Our three earlier optional UX notes are still open and remain optional: a paused row holding back new messages, an unreadable record blocking the scope, and the "another window" copy.

Merge criteria: pause only the rows after a removed predecessor, with a two-window regression test. The P3 is a one-line change and recommended. Native restart and human acceptance remain outstanding, per the PR description.

klopez4212 and others added 2 commits October 29, 2026 16:06
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source follow-up review via Wes’s account, with Rocket, Mantis and Groot coverage.

Reviewed head cc7caee1c41289fb344c26d0148e6f9c91eb705a against base 561265d0d469597627fde7cc5a06801e0c82baf4, focusing on the fixes since reviewed head 4c8982753c10bb5fb42cfa2eb66e4d3c8c1fba79 and regressions they introduce. The previous distinct-row automatic-release hole is addressed in source. Three new findings are attached inline: two P2s and one P3.

The fix reuses the existing queue, Outbox and shared controls; the cancellation and visible-recovery defects keep correctness below the repository’s 9/10 bar. The public PR description and commit messages were inspected; the description has no attached images and no concrete disclosure was found.

Source-only: no PR code, tests, app, native restart, cross-window workflow, performance or assistive-technology checks were run. Hosted CI was not assessed in this cycle. Test sources were inspected; they do not establish runtime acceptance. This is a non-blocking COMMENT review, not approval or merge authorization.

klopez4212 and others added 3 commits October 30, 2026 18:31
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8c6c020553

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source follow-up via Wes’s account, with independent Rocket, Mantis and Groot coverage.

No new actionable findings. The three findings from the previous review have source-level repairs: a manual send waiting for chat ownership remains removable; the predecessor pause publishes a new React snapshot; and Resume tracks and persists completion of the matching handoff even without a saved successor. The new regression sources cover these cases, and the merged composer retains membership/recipient checks and the durable message payload.

Reviewed head 8c6c020553d06b9e8497c060b8aacd56f12ad9c7 against base aede9fe78270ef7a48e58967ac1c4a5942a02514, focusing on fixes since cc7caee1c41289fb344c26d0148e6f9c91eb705a and their integration. The public description and commit messages were inspected; no attached images or concrete disclosure findings.

Source-only: no tests, app execution, native restart, real cross-window workflow, performance or assistive-technology checks were run. Hosted CI was not assessed. Test-source inspection does not verify the PR’s reported test results or human acceptance. This COMMENT is not approval or merge authorization.

Wait for virtualizer model and rendered height to reconcile before updating a held reader anchor. Cover both event orderings and fractional CSS height serialization. Make the recovery browser test reach an explicit failure before testing manual retry.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a279249897

ℹ️ 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".

Layout checks may outlast the broker setup deadline. Normalize busy or failed recovery through Retry and observe the active route before injecting the explicit rejection.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source follow-up via Wes’s account, with independent Rocket, Mantis and Groot coverage.

One P2 test-ordering finding remains in the preliminary Retry added by this follow-up; details inline. No new actionable production defect was established in the held-reader resize guard.

Reviewed head 0b554fb83ae1c715381da7f77bf73f38afabcebe against base aede9fe78270ef7a48e58967ac1c4a5942a02514, scoped to the three-file follow-up since 8c6c020553d06b9e8497c060b8aacd56f12ad9c7 and its integration. The public description and commit messages were inspected; no attached images or concrete disclosure findings.

Source-only: the reported interleaving is derived from source, not a reproduced failure. No tests, app execution, native scrolling/restart, cross-window workflow, performance or assistive-technology checks were run. Hosted CI and the author’s reported test results were not independently assessed. This COMMENT is not approval or merge authorization.

Comment thread tests/browser/live-status.spec.mjs Resolved

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Carl, an automated reviewer, commenting via Wes's GitHub account.

Verdict: changes requested. The three blockers from our cf8b21d1 review are fixed as originally reported. Five P2s remain at this head:

Optional: the stale alert while sending and the pause's tone (inline). The retry-control test race is a P3 flake.

Reviewed head 0b554fb83ae1c715381da7f77bf73f38afabcebe against base aede9fe78270ef7a48e58967ac1c4a5942a02514, scoped to changes since cf8b21d10. Royal Court lanes covered persistence and cross-window behavior (Mongo), queue/runner and merge routing (Mordecai), and timeline, tests and UX (Princess Donut), plus a challenge pass. Main's Solo recipient routing and the membership and compaction guards survive the merge.

Validation: hosted CI is green, with Windows skipped. Focused Vitest probes on the real queue/Outbox fixture reproduced each queue finding, and a restore-suite probe reproduced the scroll reversal. All probes were then discarded. The merge-routing check was source-only. We didn't run the broad suite, real browser windows, a native restart or IndexedDB fault injection.

Merge criteria: fix the five P2s, each with a regression test that fails before the fix. Native restart and human acceptance remain outstanding, per the PR description.

focused.current = { id: entry.id, action: "preview" };
}}
/>
{entry.sending && !entry.error && (

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Optional (P3, UX): after a cross-window pause, pressing Send keeps the red "Another window may be handling…" alert up for the whole send. Nothing clears error when Send starts, and this line hides "Sending…" whenever error is set, including during a slow outbox.recover(). Consider clearing the pause error when a manual Send starts.

Separately, this ordinary pause renders as a role="alert" danger error, while the matching predecessorRemoved pause uses a neutral caption (:83–87). A neutral caption would be consistent.

klopez4212 and others added 3 commits October 31, 2026 16:00
Retire abandoned handoff responsibility, transfer resumed ownership, honor completion evidence, and check the shared Outbox journal before removing queued messages. Attribute automatic virtualizer corrections separately from reader input.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
…oughput

Port the StatusEditor date fixture fix from upstream 802bf5a. Reject an oversized upload chunk before spooling 500 MiB, and retain cumulative streamed-budget coverage with a small real spool.

Co-authored-by: Kalvin C <kalvinnchau@users.noreply.github.com>

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Resolve the Virtua patch by retaining upstream idle range release and the queue branch correction notification; regenerate its dependency hash.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a4a4357bb3

ℹ️ 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".

restarted.queue.resumeAfter(agent, { original: "chat" });
restarted.work("original", "done");
// Drain the current microtask work (including membership validation and release).
await new Promise((resolve) => setTimeout(resolve, 0));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Replace the timer with a validation completion barrier

If membership validation completes after a later task, this zero-delay timer can fire first, so the following negative assertions do not prove that the release path actually reached the incomplete-choice check and the regression test can pass without exercising the behavior it claims to cover. Gate beforeRelease with a deferred promise or wait for an observable validation state before asserting that no error or send occurred.

AGENTS.md reference: AGENTS.md:L186-L196

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage.

One new P2 requires a fix: unrelated completion evidence can bypass the successor pause after another window removes an unsent queued message (inline). The previously reported manual-Retry test-ordering issue also remains; it is a P3 test flake, not a production defect, and is not duplicated inline.

Reviewed head a4a4357bb30b19c17eed934777a92f973739e877 against base a8f353efeb3889618224792c4a7766b74be5f7e4. Source-only follow-up covering prior fixes and merge integration; no tests, builds, app launches or PR code were executed. The public description and all 20 PR commit messages were inspected; no attachments were present. One hosted-check snapshot had browser jobs still running and Windows validation skipped. Hosted job logs were unavailable while the run remained active, so summed test time, slowest-test evidence and the author’s local timing claims were not independently verified. Native restart/scrolling, visual and assistive-technology behavior, and renewed human acceptance remain unverified. This COMMENT review is neither approval nor merge authorization.

klopez4212 and others added 2 commits October 31, 2026 18:19
Combine row-style observation with correction attribution, and update the mounted compensation fixture to emit the installed driver event.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Require completion evidence for each removed predecessor, and exercise manual Retry only after browser control settlement and a confirmed source failure.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bd6314458e

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source follow-up via Wes’s account, with independent Rocket, Mantis and Groot coverage.

One P2 remains, corroborating the existing failed-dismissal report with its recovery-save-failure precondition; details inline. The prior unrelated-predecessor completion finding has a source-level repair. The latest manual-Retry setup removes the preliminary control race, and the timeline merge preserves reader-movement attribution alongside row-offset observation.

Reviewed head bd63144; base/merge-base d58bb14. Scope: follow-up changes since a4a4357 and new material feedback. Public description and commit messages inspected; no attached images.

Source-only: no PR code, tests, builds or app/native workflows executed. One hosted snapshot shows CI required successful and Windows native validation skipped. Hosted logs were inspected for test counts/timings, but no comparable baseline establishes a test-cost regression conclusion. Native restart, real-window recovery, rendered accessibility and the described failure remain unexercised by this review. This is a COMMENT review, not approval.

Persist dismissal cleanup before releasing the saved row, retain retryable cleanup evidence on storage failure, and preserve newer handoff and receipt ownership.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 899196ae22

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. The prior failed-delivery dismissal flag defect is repaired. One P2 remains: source analysis corroborates the existing cross-window stale-receipt report; details and the narrower failure conditions are inline. This is newly examined material evidence in the existing recovery path, not a regression introduced by this two-file follow-up.

Reviewed head 899196ae22696c9f3d97a376b92001282faacf26 against base d58bb14a1bf3c577081ffd3e7c42830f43ee1016, focusing on changes since bd6314458e01c5542b1173f5c47e08a7db866436. Source-only: no tests or app execution; CI, real cross-window behavior, native restart, rendered focus and human acceptance were not verified.

Retain locally owned delivery on failed saves while discarding receipts removed by another window. Relinquish incremental journal ownership across in-flight writes so stale windows cannot delete renewed operations.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b6831c3fe6

ℹ️ 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".

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. The ordinary stale-receipt case is repaired, but one P2 remains: dismissal after the fresh lookup can still let Send consume a queued message without a durable receipt. Details inline corroborate the existing report and narrow its failure conditions.

Reviewed head b6831c3fe6c0b61dff90b35a3c8e4979d6f61cbc against base d58bb14a1bf3c577081ffd3e7c42830f43ee1016, focusing on changes since 899196ae22696c9f3d97a376b92001282faacf26. Source-only: no tests or app execution. The hosted required checks passed; Windows native validation was skipped. Test counts/timings were inspected, but no comparable baseline establishes a test-cost regression conclusion. Native restart, actual cross-window recovery, rendered focus and human acceptance remain unverified. This COMMENT review is not approval.

Hold receipt ownership through durable recovery and queued-row consumption. Preserve matching shared receipts without rewriting newer delivery status, and force persistence only for missing locally owned intent.

Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3e15988fa1

ℹ️ 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".

.find((row) => row.channelId === entry.channelId);
if (
!requested.has(entry.id) &&
(first?.id !== entry.id ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Defer non-head rows instead of permanently pausing them

When two windows have stale, disjoint snapshots of the same chat, the window holding a later row can acquire the chat lock while the earlier row still exists; first?.id !== entry.id then marks the later row resumeCancelled with a sticky error. Even after the earlier row completes and is removed, pump() will never retry that successor, so the documented automatic FIFO drain in docs/agents.md:423-436 stalls until the user manually clicks Send. Treat an extant canonical predecessor as a temporary wait and reserve the permanent pause for a removed predecessor whose completion cannot be established.

AGENTS.md reference: AGENTS.md:L90-L93

Useful? React with 👍 / 👎.

Comment thread docs/agents.md
Comment on lines +423 to +425
Restored rows remain paused with **Send** and **Remove** while the owner decides.
**Resume** also unpauses saved follow-ups in the chats whose interrupted requests
are being resumed. Each chat waits for those exact requests to settle, including

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document saved follow-ups in the bundled help guide

This adds user-visible restart recovery plus Resume, Send, and Remove behavior, but documents it only in the internal agent design document; docs/buzz-help.md, which is bundled into the app's buzz_help tool, still contains no queued-follow-up or interrupted-turn guidance. Add a concise user-facing explanation there so in-app help can accurately explain how to recover saved messages.

AGENTS.md reference: AGENTS.md:L84-L88

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Star Lord’s automated source review via Wes’s account, with independent Rocket, Mantis and Groot coverage. No new actionable findings in this receipt-adoption follow-up. The previous lookup-to-consumption data-loss finding is addressed: adoption and dismissal share the receipt lock, missing hydrated receipts retain the queue row, and missing locally owned receipts force a durable write before consumption.

Reviewed head 3e15988fa16803956ad18179724b9a1ce724f535 against base d58bb14a1bf3c577081ffd3e7c42830f43ee1016, focusing on changes since b6831c3fe6c0b61dff90b35a3c8e4979d6f61cbc. The competing-window explicit-Send behavior remains the documented, tested policy; this review does not request changing it.

Source-only: no tests, builds or app execution. The three added browser scenarios target real IndexedDB/Web Locks; their source and the author’s reported validation were inspected, not independently executed. Hosted CI was still running in the snapshot; Windows native validation was skipped. Native restart, actual multiwindow recovery, rendered focus and human acceptance remain unverified. This COMMENT review is not approval.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants