From d274567893ff3283878ac0dcafd51a0b127653d7 Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Wed, 24 Jun 2026 13:14:00 +0900 Subject: docs(lsp): live-verify passed — broken-server recovery + configSource + shadow warning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All five live-verify checks passed against the dev stack (bin/up :24203): configSource reaches the wire (built-in TS, 'built-in'); broken server reports error + configSource + source-named error; recovery without restart (blocker, error->connected after config fix); no retry storm; shadow warning logged via host.logger when both configs declare lsp. --- tasks.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tasks.md b/tasks.md index d75d55b..5ac0325 100644 --- a/tasks.md +++ b/tasks.md @@ -39,8 +39,17 @@ investigation + Wave 0 + wrote the prompt; its chat broke mid-summon — resumed - [x] Verified: `tsc -b` EXIT 0, biome clean, **1443 vitest** pass; all agents in-lane (only packages/lsp + transport-contract + transport-http touched; pre-existing uncommitted WIP in kernel/tool-shell left untouched). Zero internal mocks. -- [ ] Live-verify against the dev stack (a failed server recovers after a config edit - without a restart; `configSource` visible on `GET /conversations/:id/lsp`). +- [x] **LIVE-VERIFIED** (dev stack `bin/up` on :24203, new code via `--watch`): + (A) `configSource` reaches the wire — built-in TS server reports + `configSource:"built-in"`, `state:"connected"` (Wave 0 + transport-http pass-through + confirmed end-to-end); (B) a broken server (`.dispatch/lsp.json` → nonexistent binary) + reports `state:"error"` + `configSource:".dispatch/lsp.json"` + a source-named error + string (`broken-ts [from .dispatch/lsp.json]: Executable not found in $PATH: …`); + (C) **recovery without restart** (the blocker) — same conversation/process went + `error`→`connected` after the config was fixed (config change clears the broken key → + re-spawn → connects); (D) no retry storm — repeated `status()` with no config change + stays `error`; (E) shadow warning logged via `host.logger` (`extensionId:"lsp"`, + level `warn`) when both `.dispatch/lsp.json` and `opencode.json` declare lsp. ## Per-conversation model persistence (DONE) Bug: a chat's selected provider + model was NOT persisted per conversation. -- cgit v1.2.3