Repository navigation
ci(mcp): trigger image builds on the dependency closure, not just own crate - #72
Merged
Merged
Conversation
… crate build-mcp-images filtered on `crates/vol-mcp-servers/**` only, but vol-mcp-servers depends on 14 other workspace crates — including vol-llm-sandbox, which cli-tools-mcp calls for preload()/acquire_by_name(). So a fix in a dependency rebuilt vol-agent-server (its filter is `crates/**`) but silently did NOT rebuild the MCP images, leaving them linked against the old code until someone happened to touch crates/vol-mcp-servers/. This just bit PR #70: the SandboxManager::default() fix shipped to all four agent-server deployments as cp-5fd87dd / dp-5fd87dd, while cli-tools-mcp stayed on 6c07707. Harmless in that instance — default() is only called by vol-agent-server's SandboxHandler, not by cli-tools-mcp — but the same gap would silently drop a change to preload(), which cli-tools-mcp calls at startup. Fixed by listing vol-mcp-servers' full local dependency closure (15 crates) rather than widening to `crates/**`. That keeps 22 crates excluded — vol-agent-server, vol-llm-runtime, the TUI, the web UI, ppt-agent and all the vol-llm-tools-builtin/* subcrates no longer trigger MCP rebuilds. The list is computed from `cargo metadata`, not hand-written, and the regenerating command is recorded in a comment above it; verified the command reproduces the committed list exactly. build-vol-agent-server is deliberately left on `crates/**`: its closure is 30 of 37 local crates, so enumerating it would add maintenance drift for almost no saved builds. Its bias is toward over-building, which is safe; the MCP filter's bias was toward under-building, which is not. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
build-mcp-imagesfiltered oncrates/vol-mcp-servers/**only — butvol-mcp-serversdepends on 14 other workspace crates:build-vol-agent-serverusescrates/**, so it catches dependency changes.build-mcp-imagesdid not. A fix in a shared crate therefore shipped to agent-server and silently did not rebuild the MCP images, leaving them linked against old code until someone happened to touchcrates/vol-mcp-servers/.This just happened
PR #70's
SandboxManager::default()fix:cp-5fd87dd/dp-5fd87dd6c07707build-mcp-imagesdid not run for5fd87dd3at all.Harmless in that instance —
default()is only called by vol-agent-server'sSandboxHandler; cli-tools-mcp usespreload()/acquire_by_name()/build_inline(). But the same gap would silently drop a change topreload(), which cli-tools-mcp calls at startup. That's a known pending follow-up, so this needed fixing first.(The reason #69 looked fine is that it also modified
crates/vol-mcp-servers/, coincidentally matching the filter.)Fix
Listed the full local dependency closure — 15 crates — rather than widening to
crates/**:This keeps 22 crates excluded —
vol-agent-server,vol-llm-runtime,vol-llm-tui,vol-llm-ui,ppt-agent,vol-llm-wiki,vol-llm-yaml-agent,vol-llm-agents,vol-llm-fs,vol-llm-task,vol-llm-agent-protocol,vol-llm-agent-tool, and all ninevol-llm-tools-builtin/*subcrates — so MCP images do not rebuild on unrelated work.The list is computed from
cargo metadata, not hand-written, and the regenerating command is recorded in a comment directly above it.Verification
build-vol-agent-serverfilters on crates, and it usescrates/**Why
build-vol-agent-serveris left aloneIts closure is 30 of 37 local crates — only the TUI, web UI, ppt-agent, wiki, yaml-agent, agents and mcp-servers fall outside. Enumerating that would add maintenance drift for almost no saved builds.
The asymmetry that matters: agent-server's filter errs toward over-building, which is safe. The MCP filter erred toward under-building, which ships stale binaries.
Note
Path-filter changes only take effect for pushes after this merges, so this PR's own CI will not exercise the new filter. The first real check is the next change to a dependency crate — at which point
build-mcp-imagesshould appear in the run list for that SHA.🤖 Generated with Claude Code