{
 "run_id": 2,
 "model": "qwen3-30b-a3b",
 "mode": "agentic",
 "challenge": "word-ladder",
 "sample": 0,
 "status": "error",
 "error": "qwen3-30b-a3b: timed out",
 "score_total": null,
 "score_tests": null,
 "score_deliverables": null,
 "score_content": null,
 "tests_passed": null,
 "tests_failed": null,
 "wall_secs": 906.1036698340031,
 "slug": "run2-qwen3-30b-a3b-agentic-word-ladder-s0",
 "challenge_title": "Word ladder (shortest path)",
 "spec": "Create ladder.py with exactly one function:\n\nladder_length(begin: str, end: str, word_list: list[str]) -> int\n    A transformation sequence goes from begin to end, changing exactly one letter per step; every intermediate word (and end itself) must appear in word_list. Return the number of words in the SHORTEST such sequence counting both endpoints, or 0 if none exists. begin does not need to be in word_list. All words are lowercase and the same length.\n\nExample: begin=\"hit\", end=\"cog\", word_list=[\"hot\",\"dot\",\"dog\",\"lot\",\"log\",\"cog\"] -> 5 (hit -> hot -> dot -> dog -> cog).\n\nUse only the Python standard library. A breadth-first search is the intended approach; brute-force recursion will be too slow for the larger test.",
 "expected_files": [
  "ladder.py"
 ],
 "content_checks": {
  "ladder.py": [
   "def ladder_length"
  ]
 },
 "test_files": {
  "test_ladder.py": "import time\n\nfrom ladder import ladder_length\n\n\ndef test_classic_example():\n    assert ladder_length(\"hit\", \"cog\", [\"hot\", \"dot\", \"dog\", \"lot\", \"log\", \"cog\"]) == 5\n\n\ndef test_unreachable_end():\n    assert ladder_length(\"hit\", \"cog\", [\"hot\", \"dot\", \"dog\", \"lot\", \"log\"]) == 0\n\n\ndef test_single_step():\n    assert ladder_length(\"a\", \"c\", [\"a\", \"b\", \"c\"]) == 2\n\n\ndef test_shortest_is_found():\n    words = [\"hot\", \"hit\", \"hat\", \"cat\", \"cot\", \"cog\", \"dog\"]\n    assert ladder_length(\"hit\", \"cot\", words) == 3\n\n\ndef test_larger_input_is_fast():\n    words = [a + b + c for a in \"abcdefgh\" for b in \"abcdefgh\" for c in \"abcdefgh\"]\n    start = time.monotonic()\n    assert ladder_length(\"aaa\", \"hhh\", words) == 4\n    assert time.monotonic() - start < 2.0\n"
 },
 "events": [
  {
   "ts": "2026-07-17T21:27:04.972435+00:00",
   "event": "start",
   "run": 2,
   "model": "qwen3-30b-a3b",
   "mode": "agentic",
   "challenge": "word-ladder",
   "sample": 0
  },
  {
   "ts": "2026-07-17T21:42:11.048543+00:00",
   "event": "error",
   "error": "qwen3-30b-a3b: timed out",
   "trace": "Traceback (most recent call last):\n  File \"/Users/richardblundell/repos/llmcoderlab/lab/runner.py\", line 67, in _attempt\n    agent.run(model, challenge, root, session,\n    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n              max_turns=config.run.max_agent_turns,\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n              test_timeout=config.run.test_timeout_secs,\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n              retries=config.run.request_retries)\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/richardblundell/repos/llmcoderlab/lab/agent.py\", line 49, in run\n    completion = client.chat(model, messages, retries=retries)\n  File \"/Users/richardblundell/repos/llmcoderlab/lab/client.py\", line 70, in chat\n    raise last_err if last_err is not None else TransportError(f\"{model.alias}: no attempts made\")\nlab.client.TransportError: qwen3-30b-a3b: timed out\n"
  }
 ],
 "files": {},
 "file_metrics": [],
 "code": {
  "files": 0,
  "loc": 0,
  "sloc": 0,
  "chars": 0,
  "functions": 0,
  "classes": 0,
  "complexity": 0,
  "max_complexity": 0,
  "max_depth": 0,
  "imports": [],
  "avg_function_len": 0.0,
  "parse_errors": 0
 },
 "session": {
  "model_calls": 0,
  "actions": {},
  "bad_actions": 0,
  "test_runs": 0,
  "tokens_out": 0,
  "tokens_in": 0,
  "turns": 0
 },
 "test_output": null
}