Skip to content

Correct the stage-dispatch check, and propose closing the gap it names - #199

Merged
VeryComplexAndLongName merged 1 commit into
mainfrom
docs/stage-dispatch-task-and-coverage-proposal
Sep 3, 2026
Merged

Correct the stage-dispatch check, and propose closing the gap it names#199
VeryComplexAndLongName merged 1 commit into
mainfrom
docs/stage-dispatch-task-and-coverage-proposal

Conversation

@VeryComplexAndLongName

Copy link
Copy Markdown
Owner

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-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 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:

The Extension Development Host started. Live integration suite: 10 passing. But the existing suite does not send a real webview command with the chat dispatch into the private AiPanel.dispatchToChat, so it does not confirm the Chat handoff or the panel state 6.6 asks for.

Correct. ExtensionTestApi exposes getRunners, runController, optionalServer, getDashboardContext and 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 startedhandedOffnever completed — 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-coverage

The 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 AiPanel or dispatchToChat — 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 valid
  • npm run lint:english — passed
  • Documentation only; no source changes
  • CI green

🤖 Generated with Claude Code

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
VeryComplexAndLongName merged commit 587036c into main Sep 3, 2026
7 checks passed
@VeryComplexAndLongName
VeryComplexAndLongName deleted the docs/stage-dispatch-task-and-coverage-proposal branch September 3, 2026 10:26
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.

1 participant