{"record":{"id":"470aa3260e58894b","repo":"JuliusBrussee/caveman","slug":"caveman-build-generated-no-candidate-plans","errorCode":null,"errorMessage":"caveman build: generated no candidate plans","messagePattern":"caveman build: generated no candidate plans","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/agent/src/build.ts","lineNumber":260,"sourceCode":"    true,\n    new Map(),\n    ENGINE_TRANSFORM_CAPABILITIES,\n    new Set(input.evals.some((fixture) =>\n      fixture.quality.some((grader) => grader.type === \"tool_called\"))\n      ? [\"history\", \"tool_result\"] as ContextKind[]\n      : []),\n    // The public compile() enforces the same model/safety policy and catalog\n    // pricing the CLI does — an unpriced or policy-denied model is rejected\n    // here, not only in the CLI.\n    {\n      ...(input.config.allowedModels === undefined ? {} : { allowedModels: input.config.allowedModels }),\n      ...(input.config.deniedModels === undefined ? {} : { deniedModels: input.config.deniedModels }),\n      ...(input.config.forbiddenSafetyClasses === undefined\n        ? {}\n        : { forbiddenSafetyClasses: input.config.forbiddenSafetyClasses }),\n    },\n  );\n  if (candidates.length === 0) throw new Error(\"caveman build: generated no candidate plans\");\n  if (!input.entitled && candidates.some((candidate) => candidate.requires_entitlement && !candidate.static_rejection)) {\n    return emptyResult(\"needs_login\", \"entitled engine required for eligible candidates\");\n  }\n\n  const runnable = candidates.filter((candidate) => !candidate.static_rejection);\n  const staticRejections = candidates.length - runnable.length;\n  const plannedRuns = runnable.length * approved.length * seeds.length;\n  const estimatedCeiling = roundUsd(\n    runnable.reduce((sum, candidate) => sum + candidate.estimated_cost_usd_per_run * approved.length * seeds.length, 0),\n  );\n  if (estimatedCeiling > input.config.maxSearchCostUsd) {\n    return {\n      status: \"search_budget_exceeded\",\n      estimated_ceiling_usd: estimatedCeiling,\n      planned_runs: plannedRuns,\n      completed_runs: 0,\n      static_rejections: staticRejections,\n      actual_cost_usd: 0,","sourceCodeStart":242,"sourceCodeEnd":278,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/packages/agent/src/build.ts#L242-L278","documentation":"Error \"caveman build: generated no candidate plans\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at packages/agent/src/build.ts:260 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Broaden the seed set or relax plan constraints so the planner can generate at least one candidate plan."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}