Repository navigation
fix: Point the Toolathlon service at image c66ff0d - #10
Merged
Merged
Conversation
ghcr.io/apga/toolathlon-gym:c66ff0d replaces the cd86c47 SIF. Its tool catalog lists the snowflake tools, and 41 more graders fail closed on deliverables they can't read. deploy/abci/toolathlon.env takes the identity block that the build of its ABCI SIF wrote (openreward-toolathlon-c66ff0d-pbs-7034e1a61a4a.sif, the image plus the PBS portability patch), and the dry-run test, the deploy README and the 15-node doc name the new SIF and its sha256. The env file's comment also says that the helper's entrypoint bind makes /app writable by the agent's user, who can then replace /app/server.py and /app/task_process.py. Every SIF so far has that hole.
This was referenced Oct 17, 2026
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.
deploy/abci/toolathlon.envnow pins the ABCI SIF ofghcr.io/apga/toolathlon-gym:c66ff0d6a827c803e4a0db09c24367d50b9bd06b, in place of thecd86c47SIF:openreward-toolathlon-c66ff0d-pbs-7034e1a61a4a.sif, sha2562fb0ee8ba5377a79206af36c4645c6e32242300aad5cf08677addc8e25ba468d;apga/session-db-shimafter PR Allow positive rollout refills and fix multi-turn sample merging #4, amd64sha256:b0e8ed72c025018e930b9dc0a9585f5df7cbfd502b95eb01a52c15554851ca30.The image keeps the grader fixes of
cd86c47and adds:c1e58af's had no snowflake entry.The SIF is the image plus the PBS portability patch. Its build recipe is in rasp's
containers/, ported to c66ff0d in rasp's companion PR.Changes
deploy/abci/toolathlon.envtakes the identity block the SIF's build wrote, byte for byte (toolathlon-c66ff0d.env). The labels now name this image's own digest and the SIF pulled from it (BASE_SIF_SHA2567034db8a…). The old block still named18e62c0d's. The comment says:tests/fast/fork/test_deploy_dry_run.py,deploy/abci/README.mdanddocs/fork/deploy-pbs-15node.mdname the new SIF and its sha256.Verification
Kit:
/groups/gai51740/aci18912it/platoon-next/toolathlon-audit/ghcr-c66ff0d/(PROGRESS.md).fe1219c6…), amd64 manifest and config hash to their digests. Revision label c66ff0d; 26 layers. Pulled by tag, and the tag was unchanged afterwardsgit archiveof c66ff0d/app: 4,686 of 4,686 identical./opt/local_serversdiffers only in build outputs. The catalog (f893c306) has 25 servers and 441 tools, 14 of them Snowflake'ssingularity build --fakeroot. The structural verifier, labels and full verifier as the user pass: rootless Chromium, and all 13 Python MCPs./app/tasksis unchangeddeploy/abci/toolathlon_service.sh(the same file as here), as the user, both modescd86c47SIF) on 3,018containers//.singularity.ddifferdiff_id. Applied in order, with whiteouts, they give the pulled SIF's tree file for file (content and modes), apart from Singularity's own files and ownership, which the unprivileged pull sets to root. The ABCI SIF differs from the pulled SIF only in the patch's paths, plus 13 MCP venvs' empty.venv/.lockfiles, which the patcher's permission pass takes from mode 0666 to 0644 (as rasp's earlier patcher did).git archiveof c66ff0d matches as above, andserver.pyand the 25 MCP configs equal thecd86c47SIF'sTests
tests/fast/fork/test_deploy_dry_run.pydeploy/abci/toolathlon_service.shwithDRY_RUN=1and this env file, from agit archiveof the branch2fb0ee8b…), checks its base, OCI and portability labels and prints the container line. rasp's env file passes the same waytests/fast/doc(miles'test-venv)apga/devf57034b2tests/fast/fork(miles'test-venv)apga/devf57034b2. The failure istest_smoke_q36_step9.py::test_platoon_env_is_the_c10_c11_client_contractRollout
Nothing running changes.
toolathlon_service.shreads this file and stages the SIF when a service starts. A production job picks up the new image only when its operator restarts it.Re-baseline first. Against the
cd86c47SIF:/opt/venv, among them openreward 0.1.154 → 0.1.167, and Snowflake's MCP 1.26 → 1.30).The no-op, planted-file and tamper audits give identical rewards on both SIFs.
Location. The SIF sits in the audit area,
…/toolathlon-audit/ghcr-c66ff0d/abci-sif/. Copying it to the canonical images directory changes only the path; the sha256 stays the same.Still open
Tamper hole, in every SIF so far (job 2672675).
toolathlon_service.shbinds the entrypoint to/app/openreward-toolathlon-resilient-entrypoint.sh, a path no SIF has./appbecomes owned by the user the agent's tools run as./app/server.pyand/app/task_process.py./app/tasksand/app/runtime_patchesstay protected.It isn't fixed here. Two fixes would work: bind the entrypoint outside
/app, or bake a placeholder at that path into the image.Grading holes, unchanged:
rasp's companion PR pins the same SIF and ports the SIF build: https://github.com/ApGa/rasp/compare/main...apga/toolathlon-image-c66ff0d?expand=1