docs(daemon): align adapter spikes with web-first roadmap#4296
Conversation
📋 Review SummaryThis PR updates three daemon adapter documentation files (TUI, channel-web, IDE) to align with the web-first daemon roadmap established in the 2026-05-19 architecture decision. The changes reframe these adapters from "default migration candidates" to "historical/future reference spikes" while keeping native TUI and ACP-based IDE/channel paths as defaults. The documentation is clear, well-structured, and correctly reflects the current architectural direction. 🔍 General Feedback
🎯 Specific Feedback🔵 Low
✅ Highlights
|
wenshao
left a comment
There was a problem hiding this comment.
One additional suggestion could not be anchored inline because the relevant unchanged line is outside GitHub's diff hunk:
[Suggestion] In docs/developers/daemon-client-adapters/channel-web.md, the minimal channel flow should prefer the session-scoped permission route for multi-user daemon adapters. The SDK exposes session.respondToSessionPermission(), and the daemon advertises it via caps.features.session_permission_vote; using the session-scoped route keeps permission votes tied to the daemon session that emitted the request and avoids future implementers copying a less isolated pattern into channel/web deployments. Suggested wording: Cast permission votes through session.respondToSessionPermission() when caps.features.session_permission_vote is advertised; use the legacy request-id route only for explicitly single-user or older-daemon fallback.
— gpt-5.5 via Qwen Code /review
wenshao
left a comment
There was a problem hiding this comment.
[Suggestion] ide.md:62 — "yet" retained but removed from the other 2 files
The PR edited the "not wired" sentence in all 3 files but applied inconsistent fixes:
tui.md:64: removed "yet" entirelychannel-web.md:89: replaced "yet" with "by default"ide.md:62: left "yet" unchanged ("It is not wired into the defaultQwenAgentManagerpath yet")
"Yet" implies default migration is still the intended endpoint, contradicting the spike framing.
Suggested fix: Change to "It is not wired into the default QwenAgentManager path. Existing VS Code behavior remains ACP subprocess based."
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| existing ACP subprocess behavior by default; daemon channel integration remains | ||
| future / behind-flag evaluation. | ||
|
|
||
| This draft covers server-side clients only: |
There was a problem hiding this comment.
[Critical] The title was changed from "Draft" to "Spike" but this line still reads "This draft covers server-side clients only". Internal inconsistency within the same file.
| This draft covers server-side clients only: | |
| This document covers server-side clients only: |
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| ## Proposed Entry Points | ||
|
|
||
| Channel backend: | ||
| Historical channel backend experiment: |
There was a problem hiding this comment.
[Critical] The section header ## Proposed Entry Points (line 21 above) was not renamed to match the spike framing. The other 2 files both use ## Historical Experimental Entry Point. This subsection text was correctly updated to "Historical channel backend experiment:" but the parent heading was missed.
Suggested fix: Rename line 21 to ## Historical Experimental Entry Points (plural, since this file covers two entry points).
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| `DaemonSessionClient` instead of creating an in-process `Config` + agent | ||
| runtime. | ||
| Document the default-off `DaemonTuiAdapter` spike that was added while | ||
| evaluating Mode B client integration. |
There was a problem hiding this comment.
[Critical] "Mode B" is retained here but all other "Mode B" references were removed from ide.md and channel-web.md by this PR. It is now an orphaned term, undefined anywhere in the doc set. A reader encountering this file for the first time has no way to understand what "Mode B" refers to.
| evaluating Mode B client integration. | |
| evaluating daemon-backed client integration. |
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| daemon setting level. Until per-request `sessionScope` lands, multi-user channel | ||
| or web deployments must choose one of these safe shapes: | ||
| Multi-user channel or web deployments must explicitly isolate sessions. Use | ||
| per-request `sessionScope: 'thread'` when supported; otherwise choose one of |
There was a problem hiding this comment.
[Suggestion] The old text explicitly stated "Current daemon Stage 1 behavior is effectively sessionScope: single at the daemon setting level". This PR replaced it with "when supported" — a hedge that obscures whether sessionScope: 'thread' actually exists at the daemon server level (code search shows sessionScope type exists in channels but the daemon server core has zero references to it).
Suggested fix: Restore the diagnostic: "As of this spike, the daemon does not support per-request sessionScope. Until it does, multi-user deployments must choose one of these isolation shapes:"
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| Document the default-off `DaemonChannelBridge` spike for server-side channel | ||
| and web backends. | ||
|
|
||
| As of the 2026-05-19 architecture decision, web chat / web terminal are the |
There was a problem hiding this comment.
[Suggestion] All 3 files add "As of the 2026-05-19 architecture decision" but no ADR, design doc, or decision record exists in the repository for this date. Future readers have no way to verify what this decision entailed, who made it, or whether it has since been superseded.
Suggested fix: Add an ADR in .qwen/design/, link to the relevant GitHub discussion, or soften the reference (e.g., "As of a May 2026 architecture direction...").
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
| - Smoke-test browser -> BFF -> daemon without exposing daemon token. | ||
|
|
||
| ## Blockers Before Default Migration | ||
| ## Current Follow-Up Direction |
There was a problem hiding this comment.
[Suggestion] The old "Blockers Before Default Migration" sections across all 3 files were explicit checklists of hard prerequisites (session-scoped permission route, daemon-stamped client identity, FileSystemService boundary, session lifecycle close/delete). The new "Current Follow-Up Direction" prose mentions these concepts vaguely, losing the gating semantics. A future implementer scanning the doc will not see a clear stop-sign.
Suggested fix: Add a brief "Security Prerequisites" subsection within this section listing the unresolved security items (client identity, session-scoped permission, filesystem boundary).
— qwen-latest-series-invite-beta-v28 via Qwen Code /review
b3c56db to
5cd64d5
Compare
5cd64d5 to
7430e5d
Compare
|
Handled the valid review items and the low-risk documentation polish in the same follow-up:
Generated by GPT-5 Codex |
Summary
Validation
git diff --checkpassed; Prettier reported all matched files use Prettier code style.Scope / Risk
Testing Matrix
Testing matrix notes:
Linked Issues / Bugs
Related to #3803 and #4175.