fix(core): recognize every Docker socket mount shape and provider-syntax models - #123
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: fc57603 The changes in this PR will be included in the next version bump. This PR includes changesets to release 2 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
|
The latest Docker Doctor scan for this pull request. Learn more about Docker Doctor.
Score: 84 / 100 · 3 issues
Scanned by Docker Doctor for commit |
PunGrumpy
force-pushed
the
fix/compose-agent-stack-accuracy
branch
from
September 5, 2026 10:22
09e1415 to
6cb4944
Compare
PunGrumpy
force-pushed
the
fix/compose-agent-stack-accuracy
branch
from
September 5, 2026 10:24
6cb4944 to
3de1180
Compare
Merged
4 tasks
…tax models
no-docker-socket-mount compared the volume source against the literal
/var/run/docker.sock, so it missed the ${DOCKER_SOCK:-/var/run/docker.sock}
default that mcp-gateway examples use, /run/docker.sock, rootless and Docker
Desktop sockets under a home directory, //var/run/docker.sock on Git Bash,
and the Windows named pipe. Resolve interpolation defaults first, split the
short syntax only at brace depth zero, and match the socket by its basename
on any path-shaped source.
pin-model-version only walked the top-level models: element and ignored the
service-level provider: { type: model } syntax that Compose 2.35-2.37 and
the compose-for-agents examples still use.
Adds an agent-stack CLI fixture that carries both shapes.
PunGrumpy
force-pushed
the
fix/compose-agent-stack-accuracy
branch
from
September 5, 2026 10:30
3de1180 to
fc57603
Compare
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.
Description
Running the 0.5.0 Compose rules against the compose files in
docker/compose-for-agentsand the mcp-gateway examples showed two misses.no-docker-socket-mountcaught 1 of 5 socket mounts. It compared the volume source against the literal/var/run/docker.sock. Agent stacks rarely write it that way:The rule now resolves
${VAR:-default}to its default, splits the short syntax only at brace depth zero, and matches the socket by basename on any path-shaped source. Named volumes cannot start with/,.,~, or a drive letter, so they stay clean.Two deliberate calls:
${VAR}source with no default names no host path. The rule flags it only when the target is/var/run/docker.sock, because that target says what the container expects to find there./var/run/docker.sockentry is an anonymous volume at that path, not a bind mount of the host socket. It was flagged before and is not now.pin-model-versionwas silent on the provider syntax. It only walked the top-levelmodels:element. Compose 2.35 to 2.37 bind models throughservices.*.provider: { type: model, options: { model: … } }, and the compose-for-agents examples still use that form. The rule now collects bindings from both places and reports each on its own line.Related Issues
N/A. Found while probing the 0.5.0 rules with the mount and model shapes real agent stacks use, as the first patch after the Compose + AI release.
Checklist
Screenshots (if applicable)
N/A, CLI output only. The new
agent-stackfixture is the before/after: onmainit reports nothing, on this branch it reports the socket mount on line 11 and the unpinned provider model on line 27.Additional Notes
Tested at three layers: unit tests in
packages/corefor every socket spelling and the clean cases (named volume,./docker.sock.bak, lone path, unknown source with a non-socket target,type: volumeat the socket target), a provider-syntax unit test that also confirms a non-model provider is ignored, and a CLI test over the new fixture that pins rule and line.bun x ultracite checkandbun run docs:rulesare clean.Not covered on purpose: Windows drive-letter sources in short syntax (
C:\path:/target) split wrong today and did before; nothing in this rule depends on them.Sibling PR #124 fixes the resource-limits and secret-value misses from the same probe.