An unbuilt Dockerfile is shipping on main
packaging/docker/Dockerfile.serve:31 sets a non-root USER 10001. The image has never been built. The Docker daemon was unavailable when the change was made (docker info failed), and — verified again today — nothing in .github/workflows/ builds this image.
So a cold --release --locked build of a 15-crate workspace inside the container has never run, and the runtime preconditions for dropping to an unprivileged uid were checked by reading only:
- port 8080 set by
ENV at L28,
- the binary landing world-executable in
/usr/local/bin,
useradd shipping in debian:bookworm-slim.
Every one of those is plausible. None is verified. The failure mode is that stella serve in a container is broken for whoever builds it first — and because nothing builds it, that will be a user.
The .dockerignore change that shipped alongside it is likewise unexercised: no image build, no before/after build-context measurement.
Acceptance: the image builds in CI, and a smoke request against the container succeeds.
Triaged out of #622 (rows 39, 40) as worth doing — the only "no witness" row where the artifact is user-facing and completely uncovered.
An unbuilt Dockerfile is shipping on main
packaging/docker/Dockerfile.serve:31sets a non-rootUSER 10001. The image has never been built. The Docker daemon was unavailable when the change was made (docker infofailed), and — verified again today — nothing in.github/workflows/builds this image.So a cold
--release --lockedbuild of a 15-crate workspace inside the container has never run, and the runtime preconditions for dropping to an unprivileged uid were checked by reading only:ENVat L28,/usr/local/bin,useraddshipping indebian:bookworm-slim.Every one of those is plausible. None is verified. The failure mode is that
stella servein a container is broken for whoever builds it first — and because nothing builds it, that will be a user.The
.dockerignorechange that shipped alongside it is likewise unexercised: no image build, no before/after build-context measurement.packaging/docker/Dockerfile.serveand runs the resulting image far enough to prove it serves on 8080 as uid 10001.Acceptance: the image builds in CI, and a smoke request against the container succeeds.
Triaged out of #622 (rows 39, 40) as worth doing — the only "no witness" row where the artifact is user-facing and completely uncovered.