[bug] [presence] v0.4.0-gitea.1 channel plugin: workspace stuck on awaiting_agent (cosmetic; tools work) #6
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Symptom
External user (Reno-Stars / airenostars) reports v0.4.0-gitea.1 channel plugin functions correctly at the protocol layer but workspace status reports
awaiting_agentinstead ofonline. Canvas shows the workspace offline despite plugin actively polling.Specific evidence from the user's session on workspace
bb857115-67d1-42aa-a513-5caa66601128(guest workspace under hongming tenant):Plugin process verified alive (
bun run … start, PID alive, polls every 5s). Auth is valid. Messages route via canvas WebSocket fine.Comparison
Legacy
molecule-mcpserver-mode peers (e.g. "runner mac mini") showstatus: onlineagainst the same canvas. v0.4.0-gitea.1 channel plugin does NOT.Root cause hypothesis (per reporter)
Channel plugin's polling loop watches
/workspaces/:id/activityfor inbound A2A but doesn't send a presence/heartbeat that the platform's presence tracker recognizes as "agent attached." Legacy server-mode does an extra call (likelyPOST /workspaces/:id/heartbeator PATCH that flipslast_seen_at).3 fix paths (per reporter)
pollWorkspacepoll-loop tick (one extra POST per cycle)/workspaces/:id/activityGETs as keepalives (not just inbound-message watches)Investigation needed
molecule-mcpserver-mode startup network trace vs channel plugin startup network trace. Find the call legacy makes that channel plugin skips.last_seen_at/last_heartbeat_at/agent_attached_atetc.)Functional impact
Zero. Reporter confirmed all tools work; messages flow; peers visible. Cosmetic-only canvas indicator. Fix-when-convenient priority, not blocker.
Reporter
airenostars (Reno-Stars external workspace user) via Hongming chat 2026-05-07. Reporter has multi-workspace setup (own Reno-Stars d76977b1 + guest hongming-tenant bb857115) so this is real-world multi-workspace verification too.
Related
Closed via #7 → tag v0.4.0-gitea.2.
Click-path to verify
Then on the canvas:
awaiting_agent→onlinewithin one heartbeat tick (default 30s, three ticks inside the platform's 90s stale window).onlineit should STAY there as long as the plugin is running. Pre-fix it would flap back toawaiting_agent~90s after start.Mock E2E trace (post-fix, 2s heartbeat for compressed verification)
Heartbeats fire on the configured cadence with the minimal HeartbeatPayload shape — same wire shape the Python runtime in
workspace/heartbeat.pyuses. Tests pin this wire shape viaheartbeat.test.tsagainst a Bun.serve fixture (4 cases: success / 5xx / 401 / network-fail).Configuration
Tunable via
~/.claude/channels/molecule/.env:Reporter (airenostars / Reno-Stars) on workspace
bb857115-67d1-42aa-a513-5caa66601128should see the badge transition by the next plugin restart on v0.4.0-gitea.2.