bug(workspace-server): plugin-install returns 503 container-not-running while status=online (split-state) #10

Closed
opened 2026-05-07 05:42:46 +00:00 by claude-ceo-assistant · 0 comments

Symptom

Clicking Install on any plugin in the canvas Plugins tab returns:

API POST /workspaces/c7c28c0b-4ea5-4e75-9728-3ba860081708/plugins: 503
{"error":"workspace container not running"}

But the same workspace shows STATUS online in the canvas (top-right of detail panel) and the workspace card on canvas is green/online.

Workspace under test

  • ID: c7c28c0b-4ea5-4e75-9728-3ba860081708
  • Name: Claude Code Agent
  • Tier: T2
  • Runtime: claude-code
  • Skills: none
  • Canvas-reported status: online
  • Plugins endpoint: 503 "workspace container not running"

Why this is a bug

The two responses contradict each other on the same workspace:

  1. Workspace status reporting (used to render the green dot in canvas) says online.
  2. The plugin-install endpoint says the container is not running.

Either:

  • (a) The workspace IS online and the plugin endpoint is reading the wrong container/state and returning a false 503, OR
  • (b) The container is genuinely not running and the status endpoint is reporting a stale/cached "online" — which is the more dangerous failure mode (false-positive on health).

This is the kind of split-state bug that's load-bearing for any UI flow that gates "is this thing usable" on the status field.

Acceptance criteria

  • Identify which side of the split is wrong (status reporting OR plugin-install path).
  • Fix the underlying cause so the two endpoints agree on the workspace's run state.
  • Add a unit/integration test that catches this class of mismatch (e.g. fuzz: assert ContainerRunning state matches what /plugins reads).
  • Document any new health-check or container-state semantics inline in the workspace-server.

Out of scope (park if found)

  • The plugin install flow itself once the container IS running (separate concern).
  • Canvas-side rendering bugs (this is a backend split-state issue).
## Symptom Clicking **Install** on any plugin in the canvas Plugins tab returns: ``` API POST /workspaces/c7c28c0b-4ea5-4e75-9728-3ba860081708/plugins: 503 {"error":"workspace container not running"} ``` But the same workspace shows **STATUS online** in the canvas (top-right of detail panel) and the workspace card on canvas is green/online. ## Workspace under test - ID: `c7c28c0b-4ea5-4e75-9728-3ba860081708` - Name: Claude Code Agent - Tier: T2 - Runtime: claude-code - Skills: none - Canvas-reported status: **online** - Plugins endpoint: 503 "workspace container not running" ## Why this is a bug The two responses contradict each other on the same workspace: 1. Workspace status reporting (used to render the green dot in canvas) says **online**. 2. The plugin-install endpoint says the **container is not running**. Either: - (a) The workspace IS online and the plugin endpoint is reading the wrong container/state and returning a false 503, OR - (b) The container is genuinely not running and the status endpoint is reporting a stale/cached "online" — which is the more dangerous failure mode (false-positive on health). This is the kind of split-state bug that's load-bearing for any UI flow that gates "is this thing usable" on the status field. ## Acceptance criteria - Identify which side of the split is wrong (status reporting OR plugin-install path). - Fix the underlying cause so the two endpoints agree on the workspace's run state. - Add a unit/integration test that catches this class of mismatch (e.g. fuzz: assert ContainerRunning state matches what /plugins reads). - Document any new health-check or container-state semantics inline in the workspace-server. ## Out of scope (park if found) - The plugin install flow itself once the container IS running (separate concern). - Canvas-side rendering bugs (this is a backend split-state issue).
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: molecule-ai/molecule-core#10
No description provided.