{"record":{"id":"35333dfd58c98d00","repo":"abhigyanpatwari/GitNexus","slug":"task-task-id-sandbox-dependencies-entries-requir","errorCode":null,"errorMessage":"task {task_id} sandbox_dependencies entries require nonblank source and target strings","messagePattern":"task (.+?) sandbox_dependencies entries require nonblank source and target strings","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"eval/workflow_bench/runner_tasks.py","lineNumber":64,"sourceCode":"        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\n\ndef _task_definition_binding(\n    task: dict[str, Any],\n    repo_identity: Path,\n    oracle_snapshot: TaskOracleSnapshot,\n    dependency_binding: Mapping[str, str],\n) -> dict[str, Any]:","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/abhigyanpatwari/GitNexus/blob/d540b00184d71a896261ee02670da9a92d59d8f7/eval/workflow_bench/runner_tasks.py#L46-L82","documentation":"Raised by select_tasks during per-entry validation of sandbox_dependencies (runner_tasks.py:59-66). Each entry must be a Mapping whose key set is exactly {source, target} and both must be nonblank strings. Extra keys, missing keys, or a source/target that is empty/non-string all trip it.","triggerScenarios":"An entry with only `source`, an entry with `source`/`target`/`mode` (extra key), an entry where source or target is null/empty, or a non-mapping entry (e.g. a string).","commonSituations":"Adding a `mode` or `readonly` key to a dependency; forgetting the target half; a generator emitting one-field records.","solutions":["Ensure every dependency entry has exactly source and target keys, both nonblank strings.","Strip any extra keys (mode, flags, etc.) — the schema is intentionally minimal.","Validate programmatically before running the harness."],"exampleFix":"# before\n- id: t1\n  sandbox_dependencies:\n    - source: a\n      target: b\n      readonly: true\n# after\n- id: t1\n  sandbox_dependencies:\n    - source: a\n      target: b","handlingStrategy":"validation","validationCode":"for i, t in enumerate(doc.get(\"tasks\", [])):\n    for dep in t.get(\"sandbox_dependencies\", []):\n        if (not isinstance(dep, dict) or set(dep) != {\"source\", \"target\"}\n                or not all(isinstance(dep[k], str) and dep[k] for k in (\"source\", \"target\"))):\n            raise SystemExit(f\"task {i} dependency entry invalid: {dep!r}\")","typeGuard":"from collections.abc import Mapping\ndef dependency_entry_is_valid(dep: object) -> bool:\n    return (\n        isinstance(dep, Mapping)\n        and set(dep) == {\"source\", \"target\"}\n        and all(isinstance(dep[k], str) and dep[k] for k in (\"source\", \"target\"))\n    )","tryCatchPattern":null,"preventionTips":["Keep dependency entries to exactly source and target — no extra keys.","Validate the schema in a pre-commit hook on the tasks file."],"tags":["workflow-bench","task-validation","sandbox","schema"],"backgroundTag":null,"analyzedSha":"d540b00184d71a896261ee02670da9a92d59d8f7","analyzedAt":"2026-08-12T19:50:25.132Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}