Skip to content

Order Sidekick recovery fixture reads after queued saves - #1241

Merged
taras merged 3 commits into
mainfrom
codex/ci-main-sidekick-recovery-1231
Nov 11, 2026
Merged

taras merged 3 commits into
mainfrom
codex/ci-main-sidekick-recovery-1231

Conversation

@taras

@taras taras commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Why

The Sidekick recovery fixture queued the fake provider’s session saves but let disk reads run ahead. On Linux Bun, the first prompt could finish before its session file was visible to the second prompt. Sidekick correctly refused continuation. The fixture then waited for a journal write that could no longer happen. Captured Linux reproduction

What changes

The fixture waits for saves already queued when it reads a session. It also reports the message’s result if the message settles before the selected journal write. Once the cut is reached, the fixture observes the held operation and leaves cleanup to its owning scope.

How to verify it

  • A controlled slow save reproduced the provider’s missing-session refusal and the wait. The ordered read reached the second prompt cut with two accepted prompts under the same control.
  • The two R2q cases exercise distinct journal states. One reconciles feedback from a completed turn. The other retains unresolved feedback and refuses new work.
  • A new cross-process regression sends an output-only reply while requesting a second-prompt cut. The fixture reports that the message settled before the cut.
  • The final diff is limited to the recovery fixture and its test. The hosted capture and repeated trials are recorded in the branch history.

Review and CI

Independent Fable review passed on 2893a6165b3311c095e8ae9329ccc751083357e3. Linux Bun 1.4.0 passed both original R2q cases, the cold-reopen control, and the new early-settlement regression. The labeled run's required aggregate, including composability, passed. Linux Bun shard · Required CI

Closes #1231.

taras and others added 3 commits November 10, 2026 21:33
The R2 conversation fixture serialized provider saves but let loads read the
disk store immediately. The fake ACP does not join its saves, so a later
session resolution could miss the record an earlier turn had already queued
and refuse the continuation; the cut then waited on a journal write that could
no longer happen. A load now waits for the saves queued when it is asked.

A cut phase also races its boundary against the message itself, so a message
that settles first fails the phase with its answer instead of hanging. The
owner stays suspended under the held write when the boundary wins.

Removes the hosted R2q trial step and phase instrumentation used to diagnose
#1231.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@taras taras changed the title Diagnose the Sidekick recovery child timeout Order Sidekick recovery fixture reads after queued saves Nov 11, 2026
@taras taras added the ci-main-red-fix Maintainer-controlled: lands one PR while main is red, only with the full clean-checkout proof label Nov 11, 2026
@taras
taras marked this pull request as ready for review November 11, 2026 03:43
@taras
taras merged commit 92de7d1 into main Nov 11, 2026
123 of 125 checks passed
@taras
taras deleted the codex/ci-main-sidekick-recovery-1231 branch November 11, 2026 03:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-main-red-fix Maintainer-controlled: lands one PR while main is red, only with the full clean-checkout proof

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Keep the Bun Sidekick recovery child from timing out

1 participant