{"record":{"id":"297826d3adeeb4c4","repo":"paperclipai/paperclip","slug":"missing-effective-cwd","errorCode":"missing_effective_cwd","errorMessage":"Issue ${issue.identifier ?? issue.id} expected a project workspace, but no adapter cwd was resolved before launch.","messagePattern":"Issue (.+?) expected a project workspace, but no adapter cwd was resolved before launch\\.","errorType":"validation","errorClass":"WorkspaceValidationFailure","httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":2302,"sourceCode":"      scrubGitCredentialText(\n        `Failed to prepare managed checkout for \"${input.repoUrl}\" at \"${cwd}\": ${reason}${authNote ? ` ${authNote}` : \"\"}`,\n      ),\n    );\n  }\n\n  try {\n    await fs.rename(cloneTmpDir, cwd);\n  } catch (renameError) {\n    await fs\n      .rm(cloneTmpDir, { recursive: true, force: true })\n      .catch(() => undefined);\n    // The target appearing between the emptiness check and the rename means another\n    // materialization won the race; adopt its checkout instead of failing the run.\n    if (await hasAdoptableGitDir()) {\n      return { cwd, warning: null };\n    }\n    const reason =\n      renameError instanceof Error ? renameError.message : String(renameError);\n    throw new Error(\n      `Failed to move managed checkout into place at \"${cwd}\": ${reason}`,\n    );\n  }\n  return { cwd, warning: null };\n}\n\n/**\n * Resolve one project workspace row to a usable cwd. The anchor path and each additional\n * referenced project share this step: use the configured cwd when present, otherwise clone or\n * create the managed checkout directory for the project. It throws only when the managed\n * checkout cannot be prepared (for example, a clone failure).\n */\nasync function resolveConfiguredOrManagedProjectCwd(input: {\n  companyId: string;\n  projectId: string;\n  cwd: string | null;\n  repoUrl: string | null;","sourceCodeStart":2284,"sourceCodeEnd":2320,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L2284-L2320","documentation":"Launch-safety guard in the heartbeat pre-launch workspace checks: a project workspace was expected for the issue, but no adapter cwd (effective, persisted, or lease-derived) could be resolved before launch. Since the agent would start without a valid project directory, the launch is refused.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:2134 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the adapter cwd is resolved before launch; check project workspace configuration and 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-14T05:17:10.506Z"}