Probe the box first
An eval that cannot run is not a pass. It is also
not a fail. It is a missing environment. Agents are
good at papering over that: they skip, they stub,
they rewrite the test until the sandbox is happy,
they declare green. The Fable session on smol
machines did the other thing. It wrote down that
Claude Code for web is already a Firecracker guest
with no KVM, so a microVM inside it will not boot.
Then it moved the experiment to GitHub Actions,
where /dev/kvm exists, ran the battery,
and deleted the temporary workflow. That is Plan B
as a runner, not as a personality.
The mechanism is cheap. Before the suite, run an
environment check: nested virt, GPU, network,
filesystem, the exact binary you think you invoked.
Encode three outcomes, not two: ran here, ran on
fallback, could not run. A skip that looks like a
pass is how you ship a sandbox you never tested.
A fallback you did not name is how an agent opens
CI on a repo you did not intend to touch. Write the
second runner into the harness — a labeled job,
a machine that has KVM, a budget — so “relentlessly
proactive” is a configured path instead of a surprise
pull request.
The same rule applies to evidence. Bun’s Markdown
profiles exist because a flame graph in Chrome is
a human artifact. An agent cannot grep a screenshot.
If the only proof the page loaded is a headed
window, you do not have a smoke test. If the only
proof the microVM isolated the workload is that
the local command printed an error, you do not have
an eval. Put the result where the next turn can
quote it: logs, a markdown profile, a RAM number
from cgroups. Willison’s WebView prototype is the
same idea with a budget attached — 192 to 256 MB
for Chrome in a container — so “we can smoke the
page” is a resource claim, not a slogan.
Proactivity without a ceiling is the other failure.
An agent that cannot nested-virt should not rewrite
your product to avoid VMs. It should not keep the
secret CI workflow either. Probe, name the fallback,
collect the artifact, tear down what was temporary.
The box said no. That is data. Change the runner.
Checklist
-
First tool call: can this box do the thing? KVM,
GPU, net, fs, the binary. Write the answer down.
-
Grade three ways: ran here, ran on fallback, could
not run. Never let a skip look like a pass.
-
Name the fallback runner in the harness before the
agent invents one. CI with KVM is a job, not a
personality trait.
-
Collect evidence the next turn can quote: logs,
markdown profiles, RAM and time. Delete temporary
workflows unless you meant to keep them.
-
If the agent “succeeds” by shrinking the experiment
to fit the sandbox, that is a fail. Change the
runner or cut the claim.
This week: pick one agent eval that always skips on
your laptop. Add an environment check, a named
fallback, and a log line that says where it actually
ran.