record that only B8 is left, and what B7 actually was

The bucket-0 table had no status anywhere; it lived in the report docs, which means the
list itself still reads as eight open defects. Says B1-B7 are done and where.

Also corrects B7 in place: the table describes the spurious cut-off only, and the same
default was mis-adopting the session into the wrong harness entirely.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-10 13:16:30 +01:00
co-authored by Claude Opus 5
parent d9a3513cb5
commit 73ccf15a89
+15
View File
@@ -67,6 +67,21 @@ These are live defects, not missing features. Each makes OpenCode less usable th
| B7 | **Latent spurious `cut-off`.** `resume-cursor` defaults `model` to `claude-code`; `endTurnIfAgentIsGone` then asks the Claude sidecar about a key it never had, gets `false`, and appends a durable "agent went away" row to a live turn. Currently masked only because the client always happens to send `model` alongside `sessionId`. | `websocket.ts:607,621,749-757` | A permanent, reload-surviving false error row. | | B7 | **Latent spurious `cut-off`.** `resume-cursor` defaults `model` to `claude-code`; `endTurnIfAgentIsGone` then asks the Claude sidecar about a key it never had, gets `false`, and appends a durable "agent went away" row to a live turn. Currently masked only because the client always happens to send `model` alongside `sessionId`. | `websocket.ts:607,621,749-757` | A permanent, reload-surviving false error row. |
| B8 | **In-flight `opencode run` children survive sidecar shutdown** and are not tracked, so their output is lost. Separately, `sweepStaleServes` is `/proc`-based and therefore a no-op on macOS — orphaned serves accumulate on this machine. | `index.ts:197-209`, `:41-75` | | | B8 | **In-flight `opencode run` children survive sidecar shutdown** and are not tracked, so their output is lost. Separately, `sweepStaleServes` is `/proc`-based and therefore a no-op on macOS — orphaned serves accumulate on this machine. | `index.ts:197-209`, `:41-75` | |
**Status, 2026-08-10: B1B7 are fixed. B8 is the only one left.**
B1B6 in phases 0 and 1 (`22bcd7d`, `492509a`, `013e629`, `7774a25`) — see `docs/opencode-phase1-report.md`.
B7 fixed separately, after the review: `decideResume` in `websocket.ts` replaces `msg.model || DEFAULT_MODEL`.
B7's write-up above understates it. The spurious `cut-off` was the visible half; the same default also
sent the session to `adoptOrphanedSession` as a Claude one, which subscribes it to the wrong sidecar's
bus (so an OpenCode turn's output never arrives) and pins `session.model`, so stopping it calls
`killClaude` on a key that sidecar never held — a stop button that silently does nothing. All three had
the one cause, and all three were masked by the client always sending `model`.
Also fixed after the review, and not in this table because it was found by reviewing the fix for B5/B6:
a superseded OpenCode turn ran its whole completion path against the turn that replaced it. See
`docs/opencode-phase1-review.md`.
--- ---
## Bucket 1 — Claude has it, OpenCode does not ## Bucket 1 — Claude has it, OpenCode does not