{"record":{"id":"310d84ee249cb938","repo":"ruvnet/ruflo","slug":"plugin-name-health-check-failed","errorCode":null,"errorMessage":"Plugin '${name}' health check failed","messagePattern":"Plugin '(.+?)' health check failed","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/shared/src/plugin-loader.ts","lineNumber":606,"sourceCode":"      if (info.plugin.dependencies?.includes(pluginName)) {\n        dependents.push(name);\n      }\n    }\n\n    return dependents;\n  }\n\n  /**\n   * Start periodic health checks\n   */\n  private startHealthChecks(): void {\n    this.healthCheckIntervalId = setInterval(async () => {\n      for (const [name, info] of Array.from(this.registry.getAllPlugins().entries())) {\n        if (info.state === 'initialized' && info.plugin.healthCheck) {\n          try {\n            const healthy = await info.plugin.healthCheck();\n            if (!healthy) {\n              console.warn(`Plugin '${name}' health check failed`);\n              this.registry.updatePluginState(name, 'error', new Error('Health check failed'));\n            }\n          } catch (error) {\n            console.error(`Plugin '${name}' health check error:`, error);\n            this.registry.updatePluginState(name, 'error', error instanceof Error ? error : new Error(String(error)));\n          }\n        }\n      }\n    }, this.config.healthCheckInterval);\n  }\n\n  /**\n   * Utility: Run promise with timeout\n   */\n  private async withTimeout<T>(promise: Promise<T>, timeoutMs: number, errorMessage: string): Promise<T> {\n    return Promise.race([\n      promise,\n      new Promise<T>((_, reject) =>","sourceCodeStart":588,"sourceCodeEnd":624,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/shared/src/plugin-loader.ts#L588-L624","documentation":"Log warning in startHealthChecks' interval: an initialized plugin's healthCheck() returned false (or threw); the plugin is flagged unhealthy so the loader/operator can react, while the check loop keeps running for other plugins.","triggerScenarios":"Thrown at v3/@claude-flow/shared/src/plugin-loader.ts:606 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the plugin's health check failure detail; fix the plugin's health endpoint or remove the plugin if it is unhealthy."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fa13ee4ad60ac2090b1480656eb233521790d640","analyzedAt":"2026-08-18T21:34:22.708Z","contentChangedAt":"2026-08-18T21:34:22.708Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}