Correct the stage-dispatch check, and propose closing the gap it names - #199
Merged
VeryComplexAndLongName merged 1 commit intoSep 3, 2026
Merged
Conversation
Task 6.6 told the person doing it to set a stage to
{ "agent": "claude-cli", "dispatch": "vscode-chat" }. That is the shape
harness-config-strictness retired: chat dispatch became an agent id, and
naming claude-cli beside it was the pointless entry that change removed.
The old shape still loads - it is migrated with a warning, deliberately,
because this repository's own files used it - so following the original
text exercised the migration path rather than the current one. Both reach
the same dispatch; only one is what a reader should copy. It now says
{ "agent": "vscode-chat" }.
The rest of 6.6 stays open, for the reason the person attempting it
reported precisely: the live integration suite starts the Extension
Development Host and passes 10/10, but nothing in it delivers a webview
command into AiPanel.dispatchToChat, so it confirms neither the Chat
handoff nor the panel state the task asks about.
That observation is worth acting on rather than restating each attempt.
ExtensionTestApi exposes runners, the run controller, the optional
server, the dashboard context and two tree providers - not the panel - so
no test can send the one message that reaches the dispatch. The result is
that a shipped code path's only evidence is somebody remembering to look
at a window, and that evidence lands nowhere a later reader can check.
dispatch-to-chat-integration-coverage proposes the narrow fix: a way to
deliver a webview command through the same handler a real message
reaches, and an integration case asserting ADR 0016's contract - started,
then handedOff, never completed. Explicitly not exposing AiPanel or the
private method, because a test that can call it tests this
implementation instead of the contract. What stays human afterwards is
smaller and honest: that the chat window opens with the prompt in it.
Its task 4.4 requires checking the new case fails when the dispatch is
broken, by breaking it, not by reasoning - this repository has found
three tests this week that passed whether or not the feature worked.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
VeryComplexAndLongName
deleted the
docs/stage-dispatch-task-and-coverage-proposal
branch
September 3, 2026 10:26
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.
The instruction was outdated
Task 6.6 told the person doing it to set a stage to:
{ "agent": "claude-cli", "dispatch": "vscode-chat" }That is the shape
harness-config-strictnessretired — chat dispatch became an agent id, and namingclaude-clibeside it was the pointless entry that change removed.The old shape still loads: it is migrated with a warning, deliberately, because this repository's own files used it. So following the original text was not broken — it exercised the migration path rather than the current one. Both reach the same dispatch; only one is what a reader should copy. It now reads
{ "agent": "vscode-chat" }.The rest of 6.6 stays open, for a good reason
Reported precisely by the person attempting it:
Correct.
ExtensionTestApiexposesgetRunners,runController,optionalServer,getDashboardContextand two tree providers — not the panel. Nothing in the suite can deliver the one message that reaches the dispatch.So a shipped code path's only evidence is somebody remembering to look at a window, and that evidence lands nowhere a later reader can check. ADR 0016's
started→handedOff— nevercompleted— is a rule about the event stream: exactly what a test is good at, and what a person watching a chat window is not.dispatch-to-chat-integration-coverageThe narrow fix: a way to deliver a webview command through the same handler a real message reaches, plus an integration case asserting that contract.
Explicitly not exposing
AiPanelordispatchToChat— a test that can call the private method tests this implementation instead of the contract. And explicitly not asserting anything about a visible window: the command that opens it can be observed; what appears on screen stays with the person.What remains human afterwards is smaller and honest: that the chat window opens with the prompt in it.
Task 4.4 requires confirming the new case fails when the dispatch is broken — by breaking it, not by reasoning about it. Three tests found this week passed whether or not the feature worked.
Test plan
openspec change validate --strict— both changes validnpm run lint:english— passed🤖 Generated with Claude Code