Skip to content

Fix what the Fable review of the sync and the gateway hub found - #271

Merged
henrychu04 merged 2 commits into
coder-onlyfrom
t3code/fable-review-fixes-hub
Oct 28, 2026
Merged

henrychu04 merged 2 commits into
coder-onlyfrom
t3code/fable-review-fixes-hub

Conversation

@henrychu04

Copy link
Copy Markdown
Owner

Fable reviewed the e923627 → 67661cf sync (#262–#267) in three areas, plus the gateway-hub delegation work (#268–#270). It found no merge losses or lost seams in the sync. This PR fixes what it did find.

Linked workspaces (from the #268 review)

  • Restart race: after a gateway restart, a linked workspace that hadn't connected yet got capability_denied ("not linked"). RemoteDelegation treats that as final, so a re-followed task failed even though the rule existed and the work was still running. It's now a retryable orchestration_error until that workspace connects. A call with no matching rule is still refused for good.
  • Labs switch off in the target: this is now upstream PeerMcpClient's non-final orchestration_error, so a running task resumes once the switch is back on. Before, it failed the task permanently.
  • Unreadable request: the gateway answers an undecodable outbox request at once instead of letting the caller wait out its 2-minute timeout.
  • Rule editing: editing a link rule's endpoints now mints a new rule id. The id is the origin the linkOrigin fence compares, so a re-pointed rule could otherwise inherit another workspace's fenced work.

Sync follow-ups

Not changed

Verification:

  • Server, web, gateway and helper typechecks, pnpm knip:check and vp fmt --check pass.
  • coderHub.test.ts and OrchestratorMcpService.test.ts pass (44 tests). Gateway and coder-cli node tests pass (119). 37 web settings/composer/ChatView test files pass.
  • Throwaway gateway tests (not committed) confirmed all three hub cases: a never-connected linked workspace gets orchestration_error, an unknown environment with no rule gets capability_denied, and an unreadable request is answered with its id at once.

🤖 Generated with Claude Code

henrychu04 and others added 2 commits October 28, 2026 14:27
Found by the Fable review of #268. A linked workspace that has not connected since the gateway started now answers orchestration_error (retryable) instead of capability_denied, so a delegated task re-followed after a restart waits for it rather than failing. Labs' switch being off in the target answers upstream PeerMcpClient's non-final orchestration_error. The gateway answers an undecodable outbox request at once instead of letting the caller time out, and editing a link rule's endpoints mints a new rule id, since the id is the origin the linkOrigin fence compares.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sync-resolve-deleted.mjs and sync.md list the triage, dev-servers and dev-replay paths the sync cut; the seams doc names threadContextsOutsideEnvironment, bumps the GitLab fixes' checked-against SHA to 67661cf, and states the hub's retry and Labs-off behaviour; Coder: markers mark the machine-chip and pingdotgg#26201 cuts and the dropped secret-request metric; docs/user/keyboard-focus.md (F6 navigation) is carried with merge-request wording and linked from Keyboard shortcuts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@henrychu04
henrychu04 merged commit 3d9c24c into coder-only Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant