We've had some pretty nasty bugs with our COW filesystem so I reverted it. We originally built an overlayfs for the /workspace mounted within the Docker container, which, at first glance, seemed like it would work.
Unfortunately, I realized that it makes little-to-no sense to do this, since what actually happens is that precedent steps may potentially mutate things outside of the COW /workspace — uv for example, installs packages into ~/.uv/cache.
There is a better way to implement this. I suspect that we should create a bind-mounted filesystem for the rootfs. Of course, Docker itself doesn't enable this. This then opens the conversation towards moving away from Docker.
Some options are:
When we are able to control the root filesystem, we will be able to manage the filesystem of each container. This unlocks the previously-discussed feature where each container step acts as a COW layer on top of the previous layer.
We've had some pretty nasty bugs with our COW filesystem so I reverted it. We originally built an
overlayfsfor the/workspacemounted within the Docker container, which, at first glance, seemed like it would work.Unfortunately, I realized that it makes little-to-no sense to do this, since what actually happens is that precedent steps may potentially mutate things outside of the COW
/workspace—uvfor example, installs packages into~/.uv/cache.There is a better way to implement this. I suspect that we should create a bind-mounted filesystem for the
rootfs. Of course, Docker itself doesn't enable this. This then opens the conversation towards moving away from Docker.Some options are:
--rootfs)When we are able to control the root filesystem, we will be able to manage the filesystem of each container. This unlocks the previously-discussed feature where each container step acts as a COW layer on top of the previous layer.