Skip to content

fix(session): settle a dropped approval on the rebuilt agent without a new turn - #1576

Merged
bwachman merged 2 commits into
mainfrom
cl-11433-settle-dropped-approvals-silently
Oct 29, 2026
Merged

bwachman merged 2 commits into
mainfrom
cl-11433-settle-dropped-approvals-silently

Conversation

@bwachman

Copy link
Copy Markdown
Contributor

Summary

  • An approval dropped by an interrupt or a worker's expiring ask is rejected on the rebuilt agent by every rebuild that keeps the session, until the store shows the call closed. The director commits that result without a new model turn, and the model sees it with the operator's next message.
  • The TUI releases its rebuild hold when the director reports the drop settled.
  • Builds on fix(reactor): keep rejected and timed-out approval results across a rebuild #1575, which keeps the rejection's result on disk across the rebuild.

Verification

  • bun run check passes on each commit (9516 tests at the tip)
  • e2e, over native Anthropic and OpenAI-shaped adapters: a drop settles on the rebuilt agent with no model request, the old deadline adds no result, and the next send carries the call and its result once. A deadline that passes during the rebuild settles the same way.

Related to CL-11433

An interrupt or a worker's expiring ask drops a parked approval by
rejecting it on the old agent, but the closing reactor discards that
rejection once its abort is queued, and nothing is sent at all when the
drop lands before the parked call resolves. The rebuilt agent then
reloaded the call as still parked and answered it with "approval timed
out" at the old deadline, starting a turn nobody asked for.

Every rebuild that keeps the session rejects a dropped approval that is
still parked on the new agent, until the store shows the call closed,
and the director commits that result without a new turn. The model
sees it with the operator's next message.
@linear-code

linear-code Bot commented Oct 28, 2026

Copy link
Copy Markdown

CL-11433

@corbits-triage

corbits-triage Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Triage: Pass

No changes needed from you. A maintainer will review this pull request.

Stacked on #1575: only this pull request's own changes were checked.

@TheGreatAxios TheGreatAxios 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.

Review · Approve

Settles dropped approvals on a rebuilt agent without starting a new model turn.

No findings.

Reviewed ba3c091115d1c67be2376e65999a607caabd7db9 against this PR's declared #1575 base. Scoped architecture and permission lenses found no additional findings.

Verification: focused director, approval-resume, interrupt, exit, ask-wake, and reactor-reload suites: 278 passed. Temporary integration probes for an immediate operator send after settlement and interruption of a visible approval overlay each passed 10/10 runs; they were removed. bun run check: confirmed exit 0, 9,516 passed, 0 failed.

@bwachman
bwachman changed the base branch from cl-11433-persist-rejected-timed-out-and-dropped-approvals-before-an to main October 29, 2026 18:15
@bwachman
bwachman merged commit dd2b13e into main Oct 29, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants