Skip to content

Verify the pipeline container before the skills use it - #848

Merged
Jack-Edwards merged 1 commit into
stablefrom
chore/verify-container-before-use
Aug 6, 2026
Merged

Verify the pipeline container before the skills use it#848
Jack-Edwards merged 1 commit into
stablefrom
chore/verify-container-before-use

Conversation

@Jack-Edwards

Copy link
Copy Markdown
Member

The pipeline skills open at docker exec crypter-pipeline and assume the container is running and belongs to this checkout. The Compose mounts are relative paths, so they resolve against whichever checkout launched the container — run the pipeline from a second checkout and it finds a container by name whose /runs writes land under a repository you are not looking at.

An exited container also looks repairable when it is not. docker start reuses the mounts and image fixed at creation, so it brings the same wrong container back, and the run then fails at workspace creation reading as a missing executable rather than as the wrong container.

crypter-review and crypter-triage-review now carry the preflight crypter-change already had, and all three additionally check the image carries crypter-workspace, which the mount checks alone let through.

Two things a reviewer would otherwise have to work out:

  • The checks are test rather than command -v because docker exec runs a binary and not a shell, so a builtin exits 127 whether or not the tool is present. test is checked because coreutils provides /usr/bin/test.
  • The documented remedy changes from up -d --force-recreate to up -d --build. The former recreates against new mounts but keeps a stale image, which is half the failure. Since it takes over the single crypter-pipeline on the machine, the skills now ask before running it.

Found by running /crypter-review against a container left over from another checkout.

The skills open at `docker exec crypter-pipeline` and assume the container is
running and belongs to this checkout. Neither holds by itself. The Compose
mounts are relative paths, so they resolve against whichever checkout launched
the container, and a second checkout finds a container by name whose /runs
writes land somewhere it never looks and whose /host-git is a different history.

The trap is that an exited container looks repairable. `docker start` reuses the
mounts and image fixed at creation, so it brings the wrong container back and the
run fails two steps later at workspace creation, reading as a missing executable
rather than as the wrong container.

crypter-review and crypter-triage-review gain the preflight crypter-change
already had, and all three now also check the image carries crypter-workspace,
which the mount checks alone let through. The checks are `test` rather than
`command -v` because docker exec runs a binary and not a shell, so a builtin
exits 127 either way.

The remedy is `up -d --build`, not `--force-recreate`, which recreates against
new mounts but keeps a stale image. It takes over the one crypter-pipeline on
the machine, so the skills ask before running it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Jack-Edwards
Jack-Edwards marked this pull request as ready for review August 6, 2026 03:25
@Jack-Edwards
Jack-Edwards merged commit 2091907 into stable Aug 6, 2026
11 checks passed
@Jack-Edwards
Jack-Edwards deleted the chore/verify-container-before-use branch August 6, 2026 03:25
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