Skip to content

fix(core): honest close-path state when eviction cancels pending questions - #52600

Open
thiago-carneiro wants to merge 2 commits into
anomalyco:devfrom
thiago-carneiro:eviction-close-honesty
Open

thiago-carneiro wants to merge 2 commits into
anomalyco:devfrom
thiago-carneiro:eviction-close-honesty

Conversation

@thiago-carneiro

Copy link
Copy Markdown

Issue for this PR

Closes #52599

Type of change

  • Bug fix

What does this PR do?

When a location closes and cancels pending questions, the cancellation carries no reason: the form state is a bare { status: "cancelled" }, and the tool failure reported to the model never names the pending question. The branch builds on #52587, which fixed the tool-part message; this PR covers the close path.

I pass an eviction cause through the close path: pending forms cancelled by an eviction close now carry cause: "evicted" and a message naming the pending question. The cancelled form state now has an optional cause field, and I regenerated the API clients. In the tool failure reported back to the model, a question cancelled while waiting now names the pending question instead of using the generic close message; user dismissals keep the same wording, now also naming the question. Non-eviction closes (reload, debug) still cancel without a cause — their form state stays bare.

Implementation note: with no borrowers the entry's scope closes synchronously inside the invalidate call, so the cause-carrying cancel runs in a narrow hook just before it — non-eviction invalidations are untouched.

I did not change the eviction policy or the 60-minute deadline; those are #51343's questions. Restoring pending forms across reconnects (#44471) stays out of scope.

How did you verify your code works?

  • bun run test in packages/core: full suite passes (5628 tests, 0 failing), including 7 new tests covering the eviction-cancelled form state and the tool-failure message
  • bun turbo typecheck and bunx oxlint pass
  • bun run check passes

The new tests cover the behavior. To see it manually, leave a question form pending in an idle session until eviction — the cancelled form then names the eviction and the pending question.

Screenshots / recordings

Not a UI change.

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Thanks for your contribution!

This PR doesn't have a linked issue. All PRs must reference an existing issue.

Please:

  1. Open an issue describing the bug/feature (if one doesn't exist)
  2. Add Fixes #<number> or Closes #<number> to this PR description

See CONTRIBUTING.md for details.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

The following comment was made by an LLM, it may be inaccurate:

This branch has not been deployed

No deployments
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.

core: pending question forms cancelled by a location close get no cause or question content

1 participant