Skip to content

[Fix] Allow unbounded sandbox disk in the deployment smoke test - #132

Merged
mrubens merged 1 commit into
developfrom
fix/smoke-unbounded-disk
Jul 10, 2026
Merged

[Fix] Allow unbounded sandbox disk in the deployment smoke test#132
mrubens merged 1 commit into
developfrom
fix/smoke-unbounded-disk

Conversation

@mrubens

@mrubens mrubens commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Problem

The publish gate for develop failed at Deployment acceptance (amd64): https://github.com/RooCodeInc/Roomote/actions/runs/29121015943/job/86456179496

Error: Docker task 1 failed before a sandbox was launched: Docker storage driver cannot
enforce writable-layer limit 20g. Refusing to start an unbounded task. Configure a
quota-capable Docker data root or set DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=true to
explicitly accept the host disk-exhaustion risk.

#109 made the controller fail closed when --storage-opt size cannot be enforced. CI runners use overlay2 without project quotas, so the candidate controller refused to launch the smoke test's Docker task probe. PR CI never catches this because it only runs deployment:validate; the full smoke test runs only in the publish workflow.

Fix

Opt the smoke-test env into DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=true — the escape hatch #109 shipped for exactly this case. Runners are ephemeral, so an unbounded writable layer has no real disk-exhaustion blast radius there. Real deployments keep the fail-closed default (false in all compose files).

The controller still passes the 20g quota first and takes the documented warn-and-retry-without-quota path, so the retry code also gets exercised by the gate.

Verification

  • bash -n on the modified script.
  • Rendered the CI compose stack (docker-compose.prod.yml + docker-compose.ci.yml) with an env file written by the updated write_env and confirmed the controller service resolves DOCKER_WORKER_ALLOW_UNBOUNDED_DISK: "true" with DOCKER_WORKER_DISK_LIMIT: 20g still set.
  • The publish workflow on merge re-runs the full acceptance gate end to end.

The sandbox hardening in #109 makes the controller refuse to launch a
Docker task when the storage driver cannot enforce the writable-layer
quota (--storage-opt size). CI runners use overlay2 without project
quotas, so the publish acceptance gate now fails at the Docker task
probe before a sandbox is launched.

Opt the smoke-test stack into DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=true,
the escape hatch #109 shipped for exactly this case. Runners are
ephemeral, so an unbounded writable layer carries no host
disk-exhaustion risk there, and real deployments keep the fail-closed
default.
@roomote-roomote

roomote-roomote Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

No code issues found. See task

Reviewed the one-line env addition to deploy/ci/deployment-smoke.sh. The change opts the smoke-test env into DOCKER_WORKER_ALLOW_UNBOUNDED_DISK=true, which the controller (packages/env, apps/controller/src/RoomoteController.ts, spawn-docker-worker.ts) reads to take the documented warn-and-retry path, and deploy/compose/docker-compose.prod.yml resolves it for the controller service. DOCKER_WORKER_DISK_LIMIT still defaults to 20g, real deployments keep the false default, and the new key stays in alphabetical order in write_env.

@mrubens
mrubens merged commit 8b7f1e8 into develop Jul 10, 2026
@mrubens
mrubens deleted the fix/smoke-unbounded-disk branch July 10, 2026 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants