Skip to content

fix(devcontainer): converge mise to its pin, drop the deprecated Copilot extension, and name volumes per DEVC-08 - #162

Merged
justinmerrell merged 1 commit into
mainfrom
fix/devcontainer-mise-extensions-volumes
Sep 30, 2026
Merged

justinmerrell merged 1 commit into
mainfrom
fix/devcontainer-mise-extensions-volumes

Conversation

@justinmerrell

Copy link
Copy Markdown
Contributor

Follow-up to the dev container review done alongside #160. Tracks with musher-dev/engineering-conventions#65.

What changes

  • mise converges to its pin. base_install_mise used to skip whenever any mise was on PATH. A container created before min_version moved to 2026.9.12 kept 2026.9.6, which refuses the config, so none of the pinned CLIs installed, and task check:conventions failed with mise version 2026.9.12 is required. It now replaces any mise that is not the pinned release. Both branches were tested: the matching version skips, and a stubbed 2026.9.6 is replaced.
  • Deprecated extension removed. github.copilot is deprecated since VS Code 1.109, and github.copilot-chat provides the whole experience.
  • Volumes renamed to the DEVC-08 form. musher-spec-${devcontainerId}-<purpose> becomes musher-${devcontainerId}-<purpose>, the form engineering-conventions EC-0027 DEVC-08 checks from 0.6.3 on. This repository pins 0.6.1 today, so nothing reports it yet, and the upgrade will not add a finding.

Before you rebuild: keep your volumes' data

A renamed volume starts empty. That means a new gh auth login, and a fresh ~/.claude and ~/.codex, including agent memory and history. To carry the data over, stop the container, then run this on the host in a POSIX shell (WSL on Windows) before rebuilding. ${devcontainerId} does not change, so each old volume maps to its new name:

for old in $(docker volume ls -q | grep '^musher-spec-'); do
  new="musher-${old#musher-spec-}"
  docker volume create "$new" >/dev/null
  docker run --rm -v "$old":/from -v "$new":/to alpine sh -c 'cp -a /from/. /to/'
  echo "copied $old -> $new"
done

Once the rebuilt container shows your data, remove the old volumes with docker volume rm <name>.

Checks

task check:shell, check:format and check:conventions pass. The Validate dev container workflow builds the container with --frozen-lockfile.

🤖 Generated with Claude Code

…lot extension, and name volumes per DEVC-08

base_install_mise skipped whenever any mise was on PATH, so a container created before min_version moved kept an older mise that refused the config and installed none of the pinned CLIs. It now replaces any mise that is not the pinned release.

github.copilot is deprecated since VS Code 1.109; github.copilot-chat provides the whole experience.

The named volumes become musher-${devcontainerId}-<purpose>, the form EC-0027 DEVC-08 checks from engineering-conventions 0.6.3.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Justin Merrell <merrelljustin@gmail.com>
@justinmerrell
justinmerrell merged commit 7cd5f60 into main Sep 30, 2026
14 checks passed
@justinmerrell
justinmerrell deleted the fix/devcontainer-mise-extensions-volumes branch September 30, 2026 16:05
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