{"record":{"id":"acb4f18c0363b730","repo":"paperclipai/paperclip","slug":"secret-binding-missing","errorCode":"secret_binding_missing","errorMessage":"configuration incomplete: ${detail}","messagePattern":"configuration incomplete: (.+?)","errorType":"validation","errorClass":"ConfigurationIncompleteFailure","httpStatus":null,"severity":"error","filePath":"server/src/services/heartbeat.ts","lineNumber":1171,"sourceCode":"} {\n  const drain = computeTaskDrain(opts);\n  applyTaskDrain(drain);\n  return drain;\n}\n\nexport function stopTaskDrain(): { wasActive: boolean } {\n  const wasActive = readTaskDrain(new Date()) !== null;\n  taskDrainState = null;\n  return { wasActive };\n}\n\n/**\n * Report the task-drain state for this process only. `activeRuns` and\n * `pendingWakes` count in-process work. A process restart clears both\n * counters, even when the database still holds `running` rows for runs\n * this process did not finish.\n */\nexport function getTaskDrainStatus(): {\n  draining: boolean;\n  startedAt: Date | null;\n  expiresAt: Date | null;\n  activeRuns: number;\n  pendingWakes: number;\n  quiescent: boolean;\n} {\n  const state = readTaskDrain(new Date());\n  const activeRuns = activeRunExecutionPromises.size;\n  const pendingWakes = activeWakeupPromises.size;\n  return {\n    draining: state !== null,\n    startedAt: state?.startedAt ?? null,\n    expiresAt: state?.expiresAt ?? null,\n    activeRuns,\n    pendingWakes,\n    quiescent: activeRuns === 0 && pendingWakes === 0,\n  };","sourceCodeStart":1153,"sourceCodeEnd":1189,"githubUrl":"https://github.com/paperclipai/paperclip/blob/01ad8584922b5d85292b1723cae71fa0d9b07a19/server/src/services/heartbeat.ts#L1153-L1189","documentation":"Generic configuration-incomplete wrap-up in heartbeat run preparation: missing scoped env bindings were detected outside the required-binding path; the accumulated detail string names the missing bindings/consumers. The run is blocked from launching until the configuration gaps are fixed.","triggerScenarios":"Thrown at server/src/services/heartbeat.ts:1061 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Complete the configuration per the detail in the message, then retry the run."],"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"}