Repository navigation
Use the k8s values file on Hawk by default, so sandbox pods get #72's requests - #79
Merged
Merged
Conversation
… requests #72 added ephemeral-storage requests to the k8s values file, but every task defaulted to sandbox_backend="docker" and no Hawk config overrode it (bloom68 included). Hawk accepted the compose file by auto-converting it to chart values, and that conversion has nowhere to put an ephemeral-storage request, so the bloom68 run (bloom68-alv3junt54xqrybd) created its sandbox pods with no request at all. The runner log confirms Hawk loaded .../corpus/compose.yaml, and the PodReplacedError restarts continued. The comparator's runtimeClassName: CLUSTER_DEFAULT pin was dropped the same way. That run still got runc, because the deployment sets no default runtime class, but the pin only held by luck. sandbox_backend now defaults to None, meaning: k8s inside a Kubernetes pod (KUBERNETES_SERVICE_HOST is set), docker everywhere else. An explicit value still wins. The red-team and software-test helpers branch on the resolved backend that get_sandbox_config returns, rather than on the raw argument. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
KUBERNETES_SERVICE_HOST also flips the default for someone running inspect eval with local Docker from inside some other pod (a dev pod, a CI job), who would silently get the k8s backend. HAWK_JOB_ID is what we actually mean. Hawk's runner Job sets it unconditionally, in the same env block as HAWK_RUNNER_PATCH_SANDBOX=true, the flag that enables the docker->k8s conversion. `hawk local` sets neither, and runs docker sandboxes as-is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
edkins
approved these changes
Oct 8, 2026
edkins
left a comment
There was a problem hiding this comment.
Good to merge if a test run comes out ok
Contributor
Author
|
Did some test runs using some easy OEIS problems, looks ok! https://viewer.hawk.hawkbench.com/eval-set/sandbox-values-smoke-gubh336kj77bspyc |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
#72 added ephemeral-storage requests for the sandbox pods, but put them only in the k8s values file. Every task defaults to
sandbox_backend="docker", and no Hawk config overrides it (bloom68 included). Hawk accepts the compose file by converting it to chart values, and compose has no way to express an ephemeral-storage request. So the requests never reached a pod.Evidence from
bloom68-alv3junt54xqrybd:/tmp/leanopenproblems_sandbox/0.1.11rc11/fc_488aade228ec/corpus/compose.yaml.limits/requests: memory: 32Giand no ephemeral-storage request.PodReplacedErrorrestarts continued through the run. Erdos23 alone restarted 4 times.The comparator's
runtimeClassName: CLUSTER_DEFAULTpin was dropped the same way. That run still landed on runc, but only because the deployment sets nosandbox_runtime_class_name.Change
sandbox_backendnow defaults toNone, which resolves tok8swhenHAWK_JOB_IDis set anddockerotherwise. An explicit value still wins.HAWK_JOB_IDunconditionally (api/helm_chart/templates/job.yaml), in the same env block asHAWK_RUNNER_PATCH_SANDBOX=true, the flag that turns on its docker→k8s conversion.hawk localsets neither and runs docker sandboxes as-is, so it keepsdocker.KUBERNETES_SERVICE_HOST. That would also have switched local-Docker runs from inside any other pod (a dev pod, a CI job), so it was changed after review.apn_redteam_collatzandapn_math_software_test. Their helpers now branch on the resolved backend thatget_sandbox_configreturns.get_compose_file, which asks for docker explicitly.tests/test_sandbox_backend.py.Testing
uv run mypy: clean.apn_erdosresolves to('docker', .../compose.yaml)by default, stilldockerwith onlyKUBERNETES_SERVICE_HOSTset, and('k8s', .../values.yaml)withHAWK_JOB_IDset.K8sSandboxEnvironmentValuesmodel keeps theephemeral-storagekey when it parses and dumps the values file.Before relying on it
🤖 Generated with Claude Code