mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 11:46:35 +00:00
A gate run died two seconds in with PermissionError on compose/package-cache/pip.conf. The worktree is bind-mounted into the container, so a container that rendered these files owns them afterwards while the directory stays the host's. Overwriting needs the file's permission and unlinking the directory's, which is why the host could no longer write a file in a folder it owns. _write now catches the refusal and replaces the inode instead. Only after a refusal, never by default: compose/swarm/cache.override.yml bind-mounts an apt list into a container by inode, and swapping one that was writable anyway would leave that mount reading a file nobody updates any more. The new test pins that half as well, so the guard cannot be simplified away. Shown failing first: the previous _write raises PermissionError on the same input the test feeds the new one. Shown working in place: lint-ansible came back in 3m40s through a run during which make dotenv-force re-rendered these very files, where the same sequence had aborted the target after two seconds before. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>