You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
mcpx fleet config: gopls to worktree scope + live workspace proof #961
Slice 4 of decision record 0004 (pkgs/mcpx/docs/decisions/0004-scope-resolved-roots.md, PR #957). Depends on slice 1 (#958) and slice 3 (#959); slice 2 not required. Related: #864 (the fleet .mcpx.json still carries /home/user absolute paths — this slice needs the config in its post-#864 shape, or must say why it proceeded anyway).
What to do
Flip gopls-mcp-server to "scope": "worktree" in the fleet config (the user-level config symlinked to this repo's .mcpx.json; identical server lists on both machines stay identical).
This is deliberately last: flipping scopes before the spawn-cwd and initialize work landed would only multiply processes.
Acceptance criteria (live proof, from nix#817/#819)
With gopls at "scope": "worktree" behind the fixed spawn cwd and initialize root, go_package_api on a module path returns the module's real API promptly (the 2026-10-25 result — empty after 156 s — does not recur).
The same proof passes for a caller in a linked worktree, rooted in that worktree, not just the main checkout.
Two callers in different checkouts get distinct gopls instances, each rooted in its own checkout (visible in mcpx status root field from slice 1).
Still live (verified this run): slices 1 (#958) and 3 (#959) are unimplemented on main and the design record is still in open PR #957, so the scope flip this issue performs would, by its own reasoning, only multiply gopls processes if done today. No merged PR addresses it.
Related:#958 (slice 1) · #959 (slice 3) · #960 (slice 2, explicitly not required) · #864 (fleet .mcpx.json absolute /home/user paths — this slice wants the post-#864 config shape or an explicit note on why it proceeded anyway) · PR #957 (decision 0004, open) · origins dezren39/darwin-nix#817 / dezren39/darwin-nix#819.
Notes / risks: Marked status/blocked at intake — deliberately last in the set. Its acceptance is a live proof, not unit tests: the 2026-10-25 baseline (empty go_package_api result after 156 s) is the regression to beat, and the proof must run from a linked worktree as well as the main checkout, with both machines' fleet configs staying identical.
Suggested approach: Only after #958 + #959 land: flip gopls-mcp-server to "scope": "worktree" in the fleet config, then run the two-checkout proof and record timings + mcpx status root output on this issue.
— Fleet monitor intake enrichment (acceptance criteria were already in the body; labels normalized, meta/enriched added).
Expectation: effort s for the triage — done = a verdict backed by the live .mcpx.json at HEAD plus the dependency states, and a route that respects the slice ordering.
Why gated: this issue is deliberately last in decision record 0004's ordering — "flipping scopes before the spawn-cwd and initialize work landed would only multiply processes." The spawn-cwd half (#958) has landed; the initialize half (#959) has not. Flipping gopls to worktree scope now would run it against an initialize handshake that doesn't yet send the scope-resolved root, so the live proof in the acceptance criteria (go_package_api returning the module's real API promptly behind the fixed spawn cwd and initialize root) cannot pass yet.
Route: no fix packet enqueued yet — that would invite exactly the premature flip the decision record warns against. This issue is re-queued (queue/queued + status/needs-triage) for fleet-monitor reconciliation; the next triage pass should re-check #959 first, and once #959 closes, enqueue the slice-4 small_fix (flip gopls-mcp-server to "scope": "worktree" in the fleet config on both machines' identical server lists + the live go_package_api proof). This triage task completes as triaged.
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 20 (priority/low). Stale queue/claimed label removed — it had no live task behind it. Issue carries status/blocked; the covering triage must re-derive and name the current blocker. If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
agent-note:v1
event: triaged_done
task: 8094 (repo-health-code-pilot, repo-worker-code; OpenChamber scheduled lane 9aca43b4-5439-4939-9f71-323f5d32521b)
state: triaged; #961 remains live but gated (issue stays OPEN/status/blocked). No config change and no implementation packet.
verified: Fresh GitHub state and current main 1391b59. #958 is CLOSED via merged PR #3925; #959 is now CLOSED via merged PR #4992. #864 remains OPEN/status/blocked, with no matching open PR; its latest routing evidence says small-fix task 4865 is blocked because fff-mcp is absent from the mcpx daemon PATH. Searches found no open PR for #961 or gopls.
main config: .mcpx.json still has no scope on gopls-mcp-server. fff remains /home/user/.local/bin/fff-mcp; codedb is now node /home/user/git/code/bin/codedb-bridge.mjs. Thus the machine-specific config shape is not settled; the #864 issue/task remains an external prerequisite and was not touched by this #961 triage.
verdict: Decision 0004 slice 4 is still live but gated. The prior #961 disposition asked not to enqueue another coverage/fix packet until #959 closes and #864 config shape settles. #959 has closed, but #864 has not. Keep status/blocked; do not flip scope or enqueue the implementation yet.
resume: after #864's config/path blocker is resolved and its shape is reflected in current main, revalidate #961 and run the acceptance proof through gopls from both the main checkout and a linked worktree; only then flip gopls-mcp-server to scope=worktree.
bookkeeping: sandbox backlog and sweep.log deferred to fleet reconciliation.
Activity
dezren39 commentedon Oct 26, 2026
Intake review
Still live (verified this run): slices 1 (#958) and 3 (#959) are unimplemented on main and the design record is still in open PR #957, so the scope flip this issue performs would, by its own reasoning, only multiply gopls processes if done today. No merged PR addresses it.
Related: #958 (slice 1) · #959 (slice 3) · #960 (slice 2, explicitly not required) · #864 (fleet
.mcpx.jsonabsolute/home/userpaths — this slice wants the post-#864 config shape or an explicit note on why it proceeded anyway) · PR #957 (decision 0004, open) · origins dezren39/darwin-nix#817 / dezren39/darwin-nix#819.Notes / risks: Marked
status/blockedat intake — deliberately last in the set. Its acceptance is a live proof, not unit tests: the 2026-10-25 baseline (emptygo_package_apiresult after 156 s) is the regression to beat, and the proof must run from a linked worktree as well as the main checkout, with both machines' fleet configs staying identical.Suggested approach: Only after #958 + #959 land: flip
gopls-mcp-serverto"scope": "worktree"in the fleet config, then run the two-checkout proof and record timings +mcpx statusroot output on this issue.— Fleet monitor intake enrichment (acceptance criteria were already in the body; labels normalized,
meta/enrichedadded).dezren39 commentedon Oct 28, 2026
🤖 Agent note · picked up
.mcpx.jsonat HEAD plus the dependency states, and a route that respects the slice ordering.dezren39 commentedon Oct 28, 2026
🤖 Agent note · done
Evidence (fresh GitHub reads at main HEAD
e561ab58):.mcpx.jsonat HEAD: thegopls-mcp-serverentry is{command: "go", args: ["run", "golang.org/x/tools/gopls@latest", "mcp"]}with nomcpx.scopeblock at all — it has not been flipped to"scope": "worktree"(contrastchrome-devtools, which carriesmcpx: {sharing: "exclusive", scope: "session"}). The fleet config also still carries/home/userabsolute paths (e.g.codedb,fff), i.e. it is in its pre-mcpx: codedb and fff entries in .mcpx.json still use /home/user absolute paths #864-fix shape on this surface even though mcpx: codedb and fff entries in .mcpx.json still use /home/user absolute paths #864 is closed.Why gated: this issue is deliberately last in decision record 0004's ordering — "flipping scopes before the spawn-cwd and initialize work landed would only multiply processes." The spawn-cwd half (#958) has landed; the initialize half (#959) has not. Flipping gopls to worktree scope now would run it against an initialize handshake that doesn't yet send the scope-resolved root, so the live proof in the acceptance criteria (
go_package_apireturning the module's real API promptly behind the fixed spawn cwd and initialize root) cannot pass yet.Route: no fix packet enqueued yet — that would invite exactly the premature flip the decision record warns against. This issue is re-queued (
queue/queued+status/needs-triage) for fleet-monitor reconciliation; the next triage pass should re-check #959 first, and once #959 closes, enqueue the slice-4small_fix(flipgopls-mcp-serverto"scope": "worktree"in the fleet config on both machines' identical server lists + the livego_package_apiproof). This triage task completes astriaged.221 remaining items
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (coverage pass)
Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 20 (priority/low). Stale queue/claimed label removed — it had no live task behind it. Issue carries status/blocked; the covering triage must re-derive and name the current blocker. If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
Found via: coverage pass 2026-11-03
dezren39 commentedon Nov 4, 2026
🤖 Agent note · picked up
dezren39 commentedon Nov 4, 2026
agent-note:v1
event: triaged_done
task: 8094 (repo-health-code-pilot, repo-worker-code; OpenChamber scheduled lane 9aca43b4-5439-4939-9f71-323f5d32521b)
state: triaged; #961 remains live but gated (issue stays OPEN/status/blocked). No config change and no implementation packet.
verified: Fresh GitHub state and current main 1391b59. #958 is CLOSED via merged PR #3925; #959 is now CLOSED via merged PR #4992. #864 remains OPEN/status/blocked, with no matching open PR; its latest routing evidence says small-fix task 4865 is blocked because fff-mcp is absent from the mcpx daemon PATH. Searches found no open PR for #961 or gopls.
main config: .mcpx.json still has no scope on gopls-mcp-server. fff remains /home/user/.local/bin/fff-mcp; codedb is now node /home/user/git/code/bin/codedb-bridge.mjs. Thus the machine-specific config shape is not settled; the #864 issue/task remains an external prerequisite and was not touched by this #961 triage.
verdict: Decision 0004 slice 4 is still live but gated. The prior #961 disposition asked not to enqueue another coverage/fix packet until #959 closes and #864 config shape settles. #959 has closed, but #864 has not. Keep status/blocked; do not flip scope or enqueue the implementation yet.
resume: after #864's config/path blocker is resolved and its shape is reflected in current main, revalidate #961 and run the acceptance proof through gopls from both the main checkout and a linked worktree; only then flip gopls-mcp-server to scope=worktree.
bookkeeping: sandbox backlog and sweep.log deferred to fleet reconciliation.