{"record":{"id":"cd4fc6c9c97bfb48","repo":"abhigyanpatwari/GitNexus","slug":"task-task-id-sandbox-dependencies-must-be-a-list","errorCode":null,"errorMessage":"task {task_id} sandbox_dependencies must be a list","messagePattern":"task (.+?) sandbox_dependencies must be a list","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"eval/workflow_bench/runner_tasks.py","lineNumber":57,"sourceCode":"                raise ValueError(f\"task {index} requires a nonblank string {field}\")\n        for field in optional_strings:\n            if field in task and not isinstance(task[field], str):\n                raise ValueError(f\"task {task['id']} field {field} must be a string\")\n        task_id = task[\"id\"]\n        if not re.fullmatch(r\"[A-Za-z0-9][A-Za-z0-9._-]{0,127}\", task_id):\n            raise ValueError(f\"task id must be a simple artifact-safe slug: {task_id!r}\")\n        if task_id in seen:\n            raise ValueError(f\"duplicate task id: {task_id}\")\n        seen.add(task_id)\n        expensive = task.get(\"expensive\", False)\n        if not isinstance(expensive, bool):\n            raise ValueError(f\"task {task_id} expensive metadata must be boolean\")\n        copies = task.get(\"sandbox_copy\", [])\n        if not isinstance(copies, list) or not all(isinstance(path, str) and path for path in copies):\n            raise ValueError(f\"task {task_id} sandbox_copy must be a string list\")\n        dependencies = task.get(\"sandbox_dependencies\", [])\n        if not isinstance(dependencies, list):\n            raise ValueError(f\"task {task_id} sandbox_dependencies must be a list\")\n        for dependency in dependencies:\n            if (\n                not isinstance(dependency, Mapping)\n                or set(dependency) != {\"source\", \"target\"}\n                or not all(isinstance(dependency[field], str) and dependency[field] for field in (\"source\", \"target\"))\n            ):\n                raise ValueError(\n                    f\"task {task_id} sandbox_dependencies entries require nonblank source and target strings\"\n                )\n        validate_oracle_declaration(task)\n        if expensive and not include_expensive:\n            skipped.append(task_id)\n        else:\n            selected.append(task)\n    if not selected:\n        raise ValueError(\"no tasks selected after expensive-task filtering\")\n    return selected, skipped\n","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/abhigyanpatwari/GitNexus/blob/d540b00184d71a896261ee02670da9a92d59d8f7/eval/workflow_bench/runner_tasks.py#L39-L75","documentation":"Raised by select_tasks when `sandbox_dependencies` is present but is not a list (runner_tasks.py:56-57). sandbox_dependencies describes {source,target} copy mappings between repos; non-list shapes are rejected before per-entry validation runs.","triggerScenarios":"`sandbox_dependencies:` left null, set to a single mapping, or provided as a string.","commonSituations":"Forgetting list brackets around a single dependency; YAML null from a bare key; passing a dict instead of a list of dicts.","solutions":["Wrap sandbox_dependencies in a YAML list.","If no cross-repo dependencies exist, remove the key (defaults to []).","Confirm each entry is a mapping with exactly source and target."],"exampleFix":"# before\n- id: t1\n  sandbox_dependencies:\n    source: a\n    target: b\n# after\n- id: t1\n  sandbox_dependencies:\n    - source: a\n      target: b","handlingStrategy":"type-guard","validationCode":"for i, t in enumerate(doc.get(\"tasks\", [])):\n    d = t.get(\"sandbox_dependencies\", [])\n    if not isinstance(d, list):\n        raise SystemExit(f\"task {i} sandbox_dependencies must be a list\")","typeGuard":"def sandbox_dependencies_is_list(task: dict) -> bool:\n    d = task.get(\"sandbox_dependencies\", [])\n    return isinstance(d, list)","tryCatchPattern":null,"preventionTips":["Use a YAML list even for a single dependency mapping.","Leave the key out when there are no dependencies."],"tags":["workflow-bench","task-validation","sandbox","yaml"],"backgroundTag":null,"analyzedSha":"d540b00184d71a896261ee02670da9a92d59d8f7","analyzedAt":"2026-08-12T19:50:25.132Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}