JuliusBrussee/caveman · error · Error
caveman build: generated no candidate plans
Error message
caveman build: generated no candidate plans
What it means
Error "caveman build: generated no candidate plans" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/agent/src/build.ts:260
true,
new Map(),
ENGINE_TRANSFORM_CAPABILITIES,
new Set(input.evals.some((fixture) =>
fixture.quality.some((grader) => grader.type === "tool_called"))
? ["history", "tool_result"] as ContextKind[]
: []),
// The public compile() enforces the same model/safety policy and catalog
// pricing the CLI does — an unpriced or policy-denied model is rejected
// here, not only in the CLI.
{
...(input.config.allowedModels === undefined ? {} : { allowedModels: input.config.allowedModels }),
...(input.config.deniedModels === undefined ? {} : { deniedModels: input.config.deniedModels }),
...(input.config.forbiddenSafetyClasses === undefined
? {}
: { forbiddenSafetyClasses: input.config.forbiddenSafetyClasses }),
},
);
if (candidates.length === 0) throw new Error("caveman build: generated no candidate plans");
if (!input.entitled && candidates.some((candidate) => candidate.requires_entitlement && !candidate.static_rejection)) {
return emptyResult("needs_login", "entitled engine required for eligible candidates");
}
const runnable = candidates.filter((candidate) => !candidate.static_rejection);
const staticRejections = candidates.length - runnable.length;
const plannedRuns = runnable.length * approved.length * seeds.length;
const estimatedCeiling = roundUsd(
runnable.reduce((sum, candidate) => sum + candidate.estimated_cost_usd_per_run * approved.length * seeds.length, 0),
);
if (estimatedCeiling > input.config.maxSearchCostUsd) {
return {
status: "search_budget_exceeded",
estimated_ceiling_usd: estimatedCeiling,
planned_runs: plannedRuns,
completed_runs: 0,
static_rejections: staticRejections,
actual_cost_usd: 0,View on GitHub (pinned to 27d5a3981a)
Solutions
- Broaden the seed set or relax plan constraints so the planner can generate at least one candidate plan.
When it happens
Trigger: Thrown at packages/agent/src/build.ts:260 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/470aa3260e58894b.
Report an issue: GitHub.