From fd8b102cc2637eb37da6d199ba0ca5d9d1458840 Mon Sep 17 00:00:00 2001 From: Sandy Chapman Date: Thu, 13 Aug 2026 17:15:44 -0300 Subject: [PATCH 1/2] fix(evaluator): make Gym run failures legible and catch rollouts where no agent ran MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Running the AALGO-485 coverage sweep across five Gym environments turned up two ways a Gym run fails without saying anything useful, and one way it fails while reporting success. A startup timeout said only "Gym servers not ready within 240.0s", sending the reader to a log dominated by the servers that started fine. Gym polls and prints the outstanding set every time, so the message now names it, and says which knob to raise — `legal_agent_bench` legitimately needs ~8 minutes on a cold cache because startup installs its dependencies and prepares a Harbor task tree. A collection failure named the two eval logs, neither of which holds the cause. Observed on `wmt_translation`: `gym eval run` reports a bare HTTP 500 while the traceback explaining it sits in gym_env.log, which the message never mentioned. Worse, an environment whose agent never starts produces rollouts that look normal: `legal_agent_bench` recorded two "completed" trials scoring 0.0 with an empty failures sidecar, having never called the model. A verifier-scored runner reports whatever reward Gym computed, so that is indistinguishable from an agent that tried and scored zero — and it would have been read as poor performance in the Gym/Harbor/Fabric comparison AALGO-434 depends on. `_agent_never_ran` now detects it from stated zero *input*-side token usage plus no output, marks those trials FAILED with the reward withheld, and raises when that is the whole run. Input-side only, because a model call always sends a prompt: zero output tokens merely describes an empty answer, which is a legitimate result. Also fixes `gym eval run` littering `outputs//