abhigyanpatwari/GitNexus · error · ValueError
no tasks selected after expensive-task filtering
Error message
no tasks selected after expensive-task filtering
What it means
Raised by select_tasks after the loop: every task was marked expensive and `include_expensive` is False, leaving the selected list empty (runner_tasks.py:72-73). The harness refuses to run zero tasks rather than silently producing an empty report.
Source
Thrown at eval/workflow_bench/runner_tasks.py:73
dependencies = task.get("sandbox_dependencies", [])
if not isinstance(dependencies, list):
raise ValueError(f"task {task_id} sandbox_dependencies must be a list")
for dependency in dependencies:
if (
not isinstance(dependency, Mapping)
or set(dependency) != {"source", "target"}
or not all(isinstance(dependency[field], str) and dependency[field] for field in ("source", "target"))
):
raise ValueError(
f"task {task_id} sandbox_dependencies entries require nonblank source and target strings"
)
validate_oracle_declaration(task)
if expensive and not include_expensive:
skipped.append(task_id)
else:
selected.append(task)
if not selected:
raise ValueError("no tasks selected after expensive-task filtering")
return selected, skipped
def _task_definition_binding(
task: dict[str, Any],
repo_identity: Path,
oracle_snapshot: TaskOracleSnapshot,
dependency_binding: Mapping[str, str],
) -> dict[str, Any]:
return {
"id": task["id"],
"class": task.get("class", ""),
"repo_identity": str(repo_identity),
"ref": task.get("ref", "HEAD"),
"prompt_digest": hashlib.sha256(task["prompt"].encode()).hexdigest(),
"setup_digest": hashlib.sha256(str(task.get("setup", "")).encode()).hexdigest(),
"verify_digest": hashlib.sha256(str(task["verify"]).encode()).hexdigest(),
"expensive": bool(task.get("expensive", False)),View on GitHub (pinned to d540b00184)
Solutions
- Re-run the harness with --include-expensive if you intend to run them.
- Otherwise, demote some tasks by removing `expensive: true` (or setting it false).
- Add at least one non-expensive task to the file.
Example fix
# command: run all expensive tasks # before: wfbench --tasks tasks.yaml # after: wfbench --tasks tasks.yaml --include-expensive
Defensive patterns
Strategy: validation
Validate before calling
tasks = doc.get("tasks", [])
all_expensive = tasks and all(t.get("expensive", False) for t in tasks)
if all_expensive:
print("warn: all tasks are expensive; pass --include-expensive to run them") Type guard
def has_runnable_task(tasks: list[dict], include_expensive: bool) -> bool:
return any(not t.get("expensive", False) or include_expensive for t in tasks) Prevention
- Pass --include-expensive when the suite is intentionally all-expensive.
- Keep at least one cheap smoke-test task unmarked expensive.
When it happens
Trigger: All tasks in the YAML carry `expensive: true` and the runner is invoked without `--include-expensive`; or the only task is expensive.
Common situations: Running the suite on a budget and forgetting the flag; a tasks file where every entry was marked expensive for CI gating.
Related errors
- {label} is unavailable: {path}: {exc}
- {label} must be a real non-symlink directory: {path}
- {label} contains an unsafe path component: {relative}
- {label} is unreadable: {path}: {exc}
- {label} must be a regular non-symlink file: {path}
AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12).
Data as JSON: /api/errors/6ca65fa9e2986c56.
Report an issue: GitHub.