Skip to content

fix(computer): leave a build unverified, not failed, when a setting it boots with doesn't resolve - #529

Merged
earakely-scale merged 3 commits into
mainfrom
fix/refused-deploy-keeps-build
Nov 7, 2026
Merged

earakely-scale merged 3 commits into
mainfrom
fix/refused-deploy-keeps-build

Conversation

@earakely-scale

@earakely-scale earakely-scale commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

A deploy whose required setting doesn't resolve (an env: or secret: reference with no value here) recorded the build as failing at the probe: "it didn't boot: Unresolved env:… reference". Nothing had been booted, and later deploys then refused the build (DeployRefused … 'failed') until it was rebuilt with env build.

The cause: _probe resolves the boot settings before booting, and checked treated every exception as a failed boot.

Now:

  • _probe raises Unprobed when a setting doesn't resolve (ConfigError), booting nothing.
  • checked leaves the build unverified, with the reason "not probed: a setting it boots with didn't resolve here: …".
  • A later run, bundle register or env build probes it once the setting resolves.

A deploy that doesn't compose (env deploy, a stored task's run) now composes such a container again first, when its provider runs it natively. It reuses the image, probes it, and deploys it only once ready. A deploy whose setting still doesn't resolve is refused with that container's reason. Disks and VM bundles are unchanged: their first boot probes them.

Test plan

  • New unit test, using the real _probe with an app secret token = "env:MAIL_TOKEN". Without the variable the build is unverified, with that reason, and pending. With it set, a compose reaches ready from the same image. It fails on main ('failed' != 'unverified').

  • Follow-up (bebb0174), two new tests that fail on the first commit:

    • a deploy probes a container left unverified once its setting resolves, and boots it only once ready;
    • a deploy refuses a container still unverified for a setting that doesn't resolve, giving the reason.

    test_a_computer_env_with_no_ready_build_is_refused… is unchanged and passes. Unit tier: 13755 passed, with the same 3 host-specific failures as main.

  • test_computer_env.py (70 selected) passes.

  • On an arm64 Linux host, follow-up: a deploy without the variable is refused with the reason; then agent-env env deploy with it set probes the same image (unverified → ready) and deploys.

  • On an arm64 Linux host: the run without the variable now records unverified: not probed …. With it set, the build is reused, becomes ready in 17 s, and the task deploys.

  • ruff check is clean.

🤖 Generated with Claude Code

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; the latest change fixes the hidden refusal reason without excluding usable builds.

Summary

Missing boot settings now leave builds unverified rather than failed. Later deploys can reuse and probe the image.

  • Computer builds stay unverified when a boot setting cannot be resolved.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Build or reuse image] --> B[Resolve boot settings]
  B -->|Missing value| C[Leave build unverified with reason]
  C --> D[Later compose or deploy retries]
  D --> B
  B -->|Settings resolve| E[Boot and probe]
  E -->|Pass| F[Mark ready]
  E -->|Fail| G[Mark failed]
  F --> H[Deploy on a supported provider]
Loading

Reviews (8) · Last reviewed commit: "fix(computer): say why a native containe..." · Reviewed by Greptile

…t boots with doesn't resolve

A deploy without a required env: or secret: setting was recorded as the build
failing at the probe, though nothing was booted, so later deploys refused the
build until it was rebuilt. The build now stays unverified with the reason,
and a later compose probes it once the setting resolves.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale requested a review from a team as a code owner November 7, 2026 17:00
…ting it

A container left unverified, because a setting it boots with didn't resolve
when it was probed, was refused by every deploy that doesn't compose
(`env deploy`, a stored task's run) until `env build`. A deploy now composes it
again first when its provider runs it natively, reusing its image and probing
it, and deploys it only once ready; a deploy whose setting still doesn't
resolve is refused with that container's reason. Disks and VM bundles are
unchanged: their first boot probes them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…er arch's build is ready

A ready build of an arch the deploy's provider can't run let the deploy past
the refusal that names an unprobed container's reason, and it then failed only
with "runs none of its ready builds natively", hiding the missing setting. When
no ready build runs natively and a native container is unprobed, the deploy is
refused with that container's reason.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale merged commit 34576c6 into main Nov 7, 2026
38 checks passed
@earakely-scale
earakely-scale deleted the fix/refused-deploy-keeps-build branch November 7, 2026 23:28
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.

1 participant