{"record":{"id":"ebdf6413b9b1f9eb","repo":"paperclipai/paperclip","slug":"referenced-project-projectid-has-no-workspace-c","errorCode":null,"errorMessage":"Referenced project ${projectId} has no workspace checkout or repository URL to realize.","messagePattern":"Referenced project (.+?) has no workspace checkout or repository URL to realize\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":1980,"sourceCode":"    };\n  }\n\n  if (input.workspaceConfigMetadata) {\n    base[WORKSPACE_CONFIG_FINGERPRINT_METADATA_KEY] = {\n      version: input.workspaceConfigMetadata.version,\n      workspaceHash: input.workspaceConfigMetadata.fingerprint,\n      categories: input.workspaceConfigMetadata.categories,\n      categoryFingerprints: input.workspaceConfigMetadata.categoryFingerprints,\n      lastEvaluatedAt: input.workspaceConfigMetadata.evaluatedAt,\n    };\n  }\n\n  if (\n    (input.shouldReuseExisting && !input.shouldRefreshConfigSnapshot) ||\n    !input.configSnapshot\n  ) {\n    return base;\n  }\n\n  return mergeExecutionWorkspaceConfig(base, input.configSnapshot);\n}\n\nexport function resolveExecutionWorkspaceBranchOwnership(\n  executionWorkspace: Pick<\n    RealizedExecutionWorkspace,\n    \"created\" | \"branchCreatedByRuntime\"\n  >,\n) {\n  return executionWorkspace.branchCreatedByRuntime;\n}\n\nexport function stripWorkspaceRuntimeFromExecutionRunConfig(\n  config: Record<string, unknown>,\n) {\n  const nextConfig = { ...config };\n  delete nextConfig.workspaceRuntime;","sourceCodeStart":1962,"sourceCodeEnd":1998,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L1962-L1998","documentation":"Workspace-source validation in heartbeat run preparation: the issue resolves to a project (projectId), but none of the project's workspace rows provide a local checkout with content nor a repository URL to clone from. The driver refuses to fabricate an empty managed directory and report success, so launch preparation fails.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:1812 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Configure a workspace checkout or repository URL for the referenced project, then retry."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01ad8584922b5d85292b1723cae71fa0d9b07a19","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}