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

  1. Re-run the harness with --include-expensive if you intend to run them.
  2. Otherwise, demote some tasks by removing `expensive: true` (or setting it false).
  3. 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

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


AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12). Data as JSON: /api/errors/6ca65fa9e2986c56. Report an issue: GitHub.