Summary
The Environment form advertises cargo, gem, and go as supported package managers, and the API accepts those values, but the Driver runtime image does not provide the corresponding toolchains.
This creates a false capability: users can save a valid-looking Environment that cannot reliably provision at runtime.
Current behavior
- The Web package manager selector includes
cargo, gem, and go.
- The shared/API contract accepts all three values.
- The API converts them directly into
cargo install, gem install, and go install commands.
apps/driver/Dockerfile only explicitly installs Python/pip. It does not install or verify Rust/Cargo, Ruby/RubyGems, or Go.
- The Cloudflare Sandbox default image documents Node.js/npm and Bun, but does not promise these three toolchains: https://developers.cloudflare.com/sandbox/configuration/dockerfile/
The failure is therefore delayed until Sandbox provisioning instead of being rejected when the Environment is created.
Root cause
The list of package managers accepted by the product is not derived from, or verified against, the capabilities guaranteed by the Driver image. The API blindly renders install commands for every enum value.
Relevant code:
apps/web/src/domains/environment/components/environment-form-model.ts
pkgs/contracts/src/environment/environment.contract.ts
apps/api/src/modules/environments/application/environment-config.ts
apps/driver/Dockerfile
Expected behavior
Every package manager offered by the Environment UI must have an end-to-end runtime contract.
For each of cargo, gem, and go, either:
- install, pin, and verify the required runtime/toolchain in the maintained Driver image and cover it with a real Sandbox smoke test; or
- remove it from create/update UI and reject new writes while preserving read compatibility for existing Environment data.
The product must not accept a package manager that the selected Driver runtime cannot execute.
Acceptance criteria
Related
Summary
The Environment form advertises
cargo,gem, andgoas supported package managers, and the API accepts those values, but the Driver runtime image does not provide the corresponding toolchains.This creates a false capability: users can save a valid-looking Environment that cannot reliably provision at runtime.
Current behavior
cargo,gem, andgo.cargo install,gem install, andgo installcommands.apps/driver/Dockerfileonly explicitly installs Python/pip. It does not install or verify Rust/Cargo, Ruby/RubyGems, or Go.The failure is therefore delayed until Sandbox provisioning instead of being rejected when the Environment is created.
Root cause
The list of package managers accepted by the product is not derived from, or verified against, the capabilities guaranteed by the Driver image. The API blindly renders install commands for every enum value.
Relevant code:
apps/web/src/domains/environment/components/environment-form-model.tspkgs/contracts/src/environment/environment.contract.tsapps/api/src/modules/environments/application/environment-config.tsapps/driver/DockerfileExpected behavior
Every package manager offered by the Environment UI must have an end-to-end runtime contract.
For each of
cargo,gem, andgo, either:The product must not accept a package manager that the selected Driver runtime cannot execute.
Acceptance criteria
Related