Run babs e2e rootless (podman + --userns), retire the worktree-contamination guards
- Dominant language
- Python
- Stars
- 1
- Forks
- 4
- Avg merge
- 15h 39m
- Merged PRs (30d)
- 24
Description
Low priority (babs mostly runs its tests on CI, not locally), filing so it is not lost. No milestone.
babs`'s `tests/e2e_in_docker.sh` / `pytest_in_docker.sh` run `docker --privileged --cap-add sys_admin` (rootful), so root-owned `babs/_version.py`, `__pycache__/`, `.coverage`, `.pytest_cache/` land in the bind-mounted worktree — the whole reason for the local contamination guards.
mechababs`'s `tests/e2e/run_in_podman.sh` proves the *same* `pennlinc/slurm-docker-ci` container + real apptainer jobs run under **rootless podman with zero privilege escalation**: `--security-opt label=disable --security-opt systempaths=unconfined --device /dev/fuse` on the podman run + `--userns` on the apptainer `singularity run`. Container-root maps to the invoking user → nothing lands root-owned.
Porting that recipe upstream kills the contamination class at the source instead of the per-run guards (`PYTHONPYCACHEPREFIX`, `touch _version.py`, `-p no:cacheprovider`).
Caveat: the `--userns` + unmask-/proc combo is what makes nested apptainer work rootless; verify babs`'s non-simbids e2e images run rootless before assuming a drop-in.
Recipe ground-truth: mechababs `tests/e2e/run_in_podman.sh` (comments explain each flag).
Contributor guide
No contributing guide indexed for this repository
Research direction
Read tests/e2e/run_in_podman.sh first, then compare it with babs's tests/e2e_in_docker.sh and pytest_in_docker.sh. Verify the non-simbids e2e images under rootless podman with nested apptainer, then confirm the worktree-contamination guards can be retired without root-owned files appearing.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, python, shell
- Domain
- devops, infrastructure, testing
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100