{"record":{"id":"a5aee0dfd0106017","repo":"aaif-goose/goose","slug":"concurrency-must-be-at-least-1","errorCode":null,"errorMessage":"--concurrency must be at least 1","messagePattern":"--concurrency must be at least 1","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"evals/harbor/runner.py","lineNumber":132,"sourceCode":"\ndef dataset_config(dataset_ref: str, tasks: list[str]) -> dict[str, Any]:\n    name, sep, ref = dataset_ref.rpartition(\"@\")\n    dataset_name = name if sep else dataset_ref\n    dataset: dict[str, Any] = {\"name\": dataset_name}\n    if sep:\n        dataset[\"ref\" if \"/\" in name else \"version\"] = ref\n    if tasks:\n        dataset[\"task_names\"] = tasks\n    return dataset\n\n\ndef build_harbor_config(args: argparse.Namespace) -> dict[str, Any]:\n    if \"/\" not in args.model:\n        raise ValueError(\"--model must be in provider/model form, e.g. anthropic/claude-sonnet-4-6\")\n    if args.trials < 1:\n        raise ValueError(\"--trials must be at least 1\")\n    if args.concurrency < 1:\n        raise ValueError(\"--concurrency must be at least 1\")\n    if args.timeout_multiplier <= 0:\n        raise ValueError(\"--timeout-multiplier must be positive\")\n\n    goose_binary = args.goose_binary.expanduser().resolve()\n    if not goose_binary.is_file():\n        raise ValueError(f\"--goose-binary does not exist or is not a file: {args.goose_binary}\")\n\n    config_yaml, extension_entries = render_goose_config(args.extensions)\n\n    provider = args.model.split(\"/\", 1)[0]\n    missing_secrets = [\n        key for key in PROVIDER_SECRETS.get(provider, []) if not os.environ.get(key)\n    ]\n    if missing_secrets:\n        raise ValueError(\n            f\"Missing env vars for provider '{provider}': {', '.join(missing_secrets)}. \"\n            f\"Set them in a .env file (cwd or {HARBOR_DIR}) or your shell.\"\n        )","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/evals/harbor/runner.py#L114-L150","documentation":"Raised by build_harbor_config in the harbor benchmark runner when --concurrency is less than 1. Concurrency sets how many task instances the job runs in parallel (the default is 4); zero or negative would mean no workers and the job could never make progress, so the runner rejects it during argument validation.","triggerScenarios":"Running with --concurrency 0; a negative value like --concurrency -1; automation scaling concurrency off a machine-size formula that can round to 0.","commonSituations":"Trying to force fully serial execution with 0 instead of 1; CI scripts computing max(0, cpus - N) and passing the result straight through; typos in flag values.","solutions":["Use --concurrency 1 for serial execution","Fix generating code to clamp: max(1, computed_concurrency)","Leave the flag off to accept the default of 4"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"assert args.concurrency >= 1, f'--concurrency must be at least 1, got {args.concurrency}'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use --concurrency 1 for serial execution, never 0","Clamp generated values with max(1, computed)","Leave the flag out to accept the default of 4"],"tags":["cli","validation","concurrency","harbor","benchmark"],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}