{"record":{"id":"e4c8d60ce3d24319","repo":"paperclipai/paperclip","slug":"configuration-incomplete-requiredscopedenvbindi-e4c8d6","errorCode":null,"errorMessage":"configuration incomplete: ${requiredScopedEnvBinding.remediation}; ${detail}","messagePattern":"configuration incomplete: (.+?); (.+?)","errorType":"validation","errorClass":"ConfigurationIncompleteFailure","httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":1215,"sourceCode":"  );\n}\n\nfunction mergeAdapterRecoveryMetadata(input: {\n  resultJson: Record<string, unknown> | null | undefined;\n  errorFamily?: string | null;\n  retryNotBefore?: string | null;\n}) {\n  const errorFamily = readNonEmptyString(input.errorFamily);\n  const retryNotBefore = readNonEmptyString(input.retryNotBefore);\n  if (!input.resultJson && !errorFamily && !retryNotBefore)\n    return input.resultJson ?? null;\n\n  return {\n    ...(input.resultJson ?? {}),\n    ...(errorFamily ? { errorFamily } : {}),\n    ...(retryNotBefore\n      ? {\n          retryNotBefore,\n          transientRetryNotBefore: retryNotBefore,\n          ...(errorFamily === \"provider_quota\"\n            ? { providerQuotaRetryNotBefore: retryNotBefore }\n            : {}),\n        }\n      : {}),\n  };\n}\nconst RUNNING_ISSUE_WAKE_REASONS_REQUIRING_FOLLOWUP = new Set([\n  \"approval_approved\",\n  ISSUE_BLOCKERS_RESOLVED_WAKE_REASON,\n  \"issue_recovery_action_restored\",\n]);\nconst ISSUE_RESPONSIBLE_USER_WAKE_REASONS = new Set([\n  \"issue_assigned\",\n  \"issue_checked_out\",\n  \"issue_commented\",\n  \"issue_comment_mentioned\",","sourceCodeStart":1197,"sourceCodeEnd":1233,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/server/src/services/heartbeat.ts#L1197-L1233","documentation":"Configuration-incomplete sentinel in heartbeat run preparation: scoped-env analysis found missing bindings that intersect the requiredScopedEnvBinding's required keys/scopes (detail enumerates them). The run fails with the binding spec's remediation plus the specific missing-binding detail so the operator knows exactly which secrets to add.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:1041 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Apply the remediation and additional detail in the message to complete the configuration."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}