JuliusBrussee/caveman · error · Error
cave_invalid_lock:shape
Error message
cave_invalid_lock:shape
What it means
Error "cave_invalid_lock:shape" thrown in JuliusBrussee/caveman.
Source
Thrown at packages/agent/src/build.ts:507
if (lock.context_ir_sha256 !== current.contextIRSha256) stale.push("context_ir");
if (lock.eval_suite_sha256 !== current.evalSuiteSha256) stale.push("eval_suite");
if (lock.runtime.caveman_version !== current.runtimeVersion) stale.push("runtime");
if (lock.harness.adapter_version !== current.adapterVersion) stale.push("adapter");
if (lock.harness.upstream_version !== current.upstreamVersion) stale.push("upstream");
if (lock.runtime.transform_registry_sha256 !== current.transformRegistrySha256) stale.push("transform_registry");
if (lock.runtime.external_provenance_sha256 !== (current.externalProvenanceSha256 ?? "")) stale.push("external_provenance");
if (lock.catalog_sha256 !== current.catalogSha256) stale.push("catalog");
return { valid: stale.length === 0, stale };
}
export function parseCaveBuildLock(value: unknown): CaveBuildLock {
if (!isRecord(value) || !exactKeys(value, [
"schema_version", "agent_id", "build_sha256", "plan_sha256", "source_sha256",
"agent_definition_sha256", "context_ir_sha256", "eval_suite_sha256",
"context_ir_schema", "harness", "runtime", "catalog_sha256",
"baseline_plan_id", "selected_plan_id", "selected_plan", "evidence",
])) {
throw new Error("cave_invalid_lock:shape");
}
const lock = value as unknown as CaveBuildLock;
if (lock.schema_version !== 2 || lock.context_ir_schema !== "1" ||
!isRecord(lock.harness) || !exactKeys(lock.harness, ["id", "adapter_version", "upstream_version"]) ||
!["pi", "claude", "vercel-ai-sdk", "eve", "mastra"].includes(lock.harness.id) ||
!isRecord(lock.runtime) || !exactKeys(lock.runtime, ["caveman_version", "transform_registry_sha256", "external_provenance_sha256"]) ||
!isRecord(lock.evidence) || !exactKeys(lock.evidence, [
"status", "basis", "quality_retention_lcb95", "error_rate", "p95_latency_ms",
"catalog_cost_usd_per_task", "completed_runs",
]) ||
lock.evidence.status !== "locked" || lock.evidence.basis !== "inferred" ||
!isRecord(lock.selected_plan) || !exactKeys(lock.selected_plan, [
"schema_version", "plan_id", "model", "reasoning", "segment_routes",
"budgets", "recovery", "fallbacks",
]) || !validPlanShape(lock.selected_plan)) {
throw new Error("cave_invalid_lock:shape");
}
const integrity = lockIntegrityErrors(lock);View on GitHub (pinned to 27d5a3981a)
Solutions
- The build lock shape is invalid; run npm run build to regenerate a well-formed lock.
When it happens
Trigger: Thrown at packages/agent/src/build.ts:507 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/5e5ce860f5b7f40b.
Report an issue: GitHub.