{"record":{"id":"207a569e5090bbad","repo":"JuliusBrussee/caveman","slug":"caveman-build-seeds-must-be-a-non-empty-unique-se","errorCode":null,"errorMessage":"caveman build: seeds must be a non-empty unique set","messagePattern":"caveman build: seeds must be a non-empty unique set","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/agent/src/build.ts","lineNumber":235,"sourceCode":"\nexport async function compile(input: CompileInput): Promise<CompileResult> {\n  // An unsandboxed run cannot produce a lock. Host mode runs tool\n  // closures in the host process, so its evidence shows no containment and is\n  // refused here rather than downgraded to a soft status. The whole definition\n  // graph is checked, not just the root: a host subagent under a fixture root\n  // runs its closures in this process exactly as a host root would, and the CLI\n  // saves that lock all the same. Coding agents lock by compiling against\n  // fixture corpora with a contained sandbox mode.\n  if (graphUsesHostSandbox(input.agent)) {\n    throw new Error(\"cave_host_sandbox_lock_ineligible\");\n  }\n  const approved = input.evals.filter((fixture) => fixture.approved && fixture.required);\n  if (approved.length === 0) {\n    return emptyResult(\"needs_eval\", \"no approved required eval fixture\");\n  }\n  const seeds = input.seeds ?? [1, 2, 3, 4, 5];\n  if (seeds.length === 0 || new Set(seeds).size !== seeds.length) {\n    throw new Error(\"caveman build: seeds must be a non-empty unique set\");\n  }\n  const candidates = input.candidates ?? generateCandidatePlans(\n    input.agent,\n    input.contextIR,\n    input.baselinePlan,\n    input.modelCandidates ?? [input.baselinePlan.model],\n    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 }),","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/packages/agent/src/build.ts#L217-L253","documentation":"Error \"caveman build: seeds must be a non-empty unique set\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at packages/agent/src/build.ts:235 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass at least one seed and remove duplicate seeds from the build config."],"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"}