Repository navigation
fix: separate plan results, execution recovery, and tool outcomes - #58
Closed
1052326311 wants to merge 13 commits into
Closed
1052326311 wants to merge 13 commits into
1052326311 wants to merge 13 commits into
Conversation
Author
|
Superseded by #59 with a clean consolidated history, current regression evidence, and resumed-session instruction refresh. Closing this overlapping PR; the previous discussion and patch remain available here. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An approved plan can keep showing a build spinner after the turn ends. Recovery also infers execution intent from English sentences and detects repeated work from truncated tool-name lists, so localized continuation requests and legitimate reads of different files can stop incorrectly. Tool hooks and SDK notifications can additionally double-count an invocation or interpret an external-tool dispatch acknowledgment as a completed operation.
This change separates durable plan results, the active turn, and individual tool outcomes:
report_task_statusprotocol replaces sentence/word-count recovery heuristics. Recovery compares full per-cycle arguments and result digests, is bounded, and preserves waiting/error/stalled/aborted outcomes. Read-only requests cannot trigger automatic file repair.Validation is documented in
docs/plan-progress.md. Regression coverage includes Chinese/English intent, negations and filenames, distinct/repeated/changed reads, inner MCP failures, missing reports, cancellation, complete-only responses, cached callback rebinding, and a replay of the real SDK external-tool acknowledgment sequence. Database plan tests also cover concurrent/idempotent writes, isolation, rollback and retirement. Downstream production validation uses a separate QA project and preserves existing app sources.The final Linux runtime regression suite passes 52/52 tests; the standalone public core suite passes 35/35. The production Web build passes. Full type checks still have existing baseline errors (11 API errors in index/preview-proxy and two Web NotebookLM store errors); this is not a claim of a completely green upstream tree. Provider behavior and all-device/multi-user concurrency are not exhaustively covered.
This branch includes #55's final-response fix; reviewing/merging #55 first reduces this diff. #57 adds localization on top of this lifecycle change. This PR retains Doable branding and English defaults and contains no downstream domains, credentials or business data.