mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
The repository is bind-mounted into the infinito container, and every deploy runs `make setup` there, which depends on `dotenv`. The generator therefore rewrote the host's .env with the values the container sees: the host lost INFINITO_RUNNING_ON_GITHUB=true that way, and the guide replay pulled alpine:latest past the GHCR mirror. compose.yml now marks the infinito service with INFINITO_DOTENV_HOST_OWNED, and `python -m cli.meta.env` keeps an existing .env while that marker is "true". A missing .env is still generated, and `make dotenv-force` (env -i) still rewrites it. The key stays out of the env registry: only compose.yml sets it, it is no configuration value, and a .env entry could freeze the host .env. test_distros now also strips INFINITO_ENV_LOADED. load.sh returns early while that guard is set and the mtime of .env is unchanged, so the test only reloaded the budget keys it strips because the container kept rewriting .env. Verified: unit tests cover a kept .env, a missing one being generated, and a rewrite without the marker. Local compose deploys print "Kept .env: the host checkout owns it" where they printed "Wrote .env" before, the host .env checksum stayed the same across a deploy, and the four keys holding host paths resolve inside the container under the same paths. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>