{"record":{"id":"08d6a7aa61817faf","repo":"ruvnet/ruflo","slug":"plugin-name-requires-core-version-resolved-08d6a7","errorCode":null,"errorMessage":"Plugin ${name} requires core version <= ${resolvedPlugin.metadata.maxCoreVersion}, but current version is ${this.config.coreVersion}","messagePattern":"Plugin (.+?) requires core version <= (.+?), but current version is (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts","lineNumber":311,"sourceCode":"    }\n\n    // Check max plugins\n    if (this.config.maxPlugins && this.plugins.size >= this.config.maxPlugins) {\n      throw new Error(`Maximum plugin limit (${this.config.maxPlugins}) reached`);\n    }\n\n    // Check core version compatibility\n    if (resolvedPlugin.metadata.minCoreVersion) {\n      if (!satisfiesVersion(`>=${resolvedPlugin.metadata.minCoreVersion}`, this.config.coreVersion)) {\n        throw new Error(\n          `Plugin ${name} requires core version >= ${resolvedPlugin.metadata.minCoreVersion}, ` +\n          `but current version is ${this.config.coreVersion}`\n        );\n      }\n    }\n    if (resolvedPlugin.metadata.maxCoreVersion) {\n      if (!satisfiesVersion(`<=${resolvedPlugin.metadata.maxCoreVersion}`, this.config.coreVersion)) {\n        throw new Error(\n          `Plugin ${name} requires core version <= ${resolvedPlugin.metadata.maxCoreVersion}, ` +\n          `but current version is ${this.config.coreVersion}`\n        );\n      }\n    }\n\n    // Parse dependencies\n    const dependencies = this.parseDependencies(resolvedPlugin.metadata.dependencies);\n\n    // Add to dependency graph\n    this.dependencyGraph.addPlugin(name, version, dependencies);\n\n    // Create config\n    const pluginConfig: PluginConfig = {\n      enabled: true,\n      priority: 50,\n      settings: {},\n      ...this.config.defaultConfig,","sourceCodeStart":293,"sourceCodeEnd":329,"githubUrl":"https://github.com/ruvnet/ruflo/blob/fa13ee4ad60ac2090b1480656eb233521790d640/v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts#L293-L329","documentation":"Thrown by EnhancedPluginRegistry.register() during the upper-bound core-version check. If plugin.metadata.maxCoreVersion is set, the registry tests '<=' + maxCoreVersion against config.coreVersion. A miss means the plugin declares it does not work with cores newer than its ceiling, and registration is refused rather than loading a plugin likely to break at runtime.","triggerScenarios":"Registering a legacy plugin declaring maxCoreVersion '2.9.0' against a registry with coreVersion '3.x'; plugin package abandoned before the v3 API rename, so its ceiling excludes your host; major-version upgrade of the host with old plugin bundles still in the load path.","commonSituations":"Upgrading the core/host to a new major while third-party plugins lag behind; stale plugin directories auto-discovered at boot; coreVersion config edited to a newer value without checking plugin ceilings.","solutions":["Upgrade the plugin to a release built for your core major (no maxCoreVersion ceiling below it)","Drop the incompatible legacy plugin from the discovery/load list","If you maintain the plugin, raise or remove metadata.maxCoreVersion after verifying compatibility, and rebuild"],"exampleFix":"// before\nawait registry.register(legacyPlugin); // maxCoreVersion: '2.9.0', coreVersion '3.0.0' -> throws\n\n// after\n// in the plugin source, after verifying compatibility with core v3:\n// metadata: { name: 'legacy', version: '3.0.0' /* maxCoreVersion removed */ }\nawait registry.register(upgradedPlugin);","handlingStrategy":"validation","validationCode":"const maxCore = plugin.metadata.maxCoreVersion;\nif (maxCore && !satisfiesSemver(coreVersion, `<=${maxCore}`)) {\n  logger.warn(\n    `skipping ${plugin.metadata.name}: supports core <= ${maxCore}, host is ${coreVersion}`\n  );\n  continue;\n}\nawait registry.register(plugin);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["On core major upgrades, audit every plugin's maxCoreVersion ceiling in your load list","Prefer upgrading legacy plugins over force-loading them against their declared ceiling","Filter incompatible plugins during discovery with a logged skip instead of letting register() throw at boot"],"tags":["version-compatibility","plugin-registry","semver","typescript"],"backgroundTag":"plugin-core-version-incompatible","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"}