ruvnet/ruflo · error
Force removing ${name}, breaking: ${dependents.join(', ')}
Error message
Force removing ${name}, breaking: ${dependents.join(', ')} What it means
Warning in unregister(): force removal of a plugin was requested while other plugins still depend on it. Unlike cascade mode, dependents are NOT shut down first — they are left with a missing dependency, which is why the warning lists them.
Source
Thrown at v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts:368
if (!entry) {
throw new Error(`Plugin ${name} not found`);
}
// Check dependents
const dependents = this.dependencyGraph.getDependents(name);
if (dependents.length > 0) {
if (options?.cascade) {
// Unload dependents first (in reverse order)
const order = this.dependencyGraph.getRemovalOrder(name);
for (const dep of order) {
if (dep !== name) {
await this.shutdownPlugin(dep);
this.removePluginFromGraph(dep);
}
}
} else if (options?.force) {
this.logger.warn(`Force removing ${name}, breaking: ${dependents.join(', ')}`);
} else {
throw new Error(`Cannot remove ${name}: required by ${dependents.join(', ')}`);
}
}
// Shutdown and remove
await this.shutdownPlugin(name);
this.removePluginFromGraph(name);
this.logger.info(`Plugin unregistered: ${name}`);
}
// =========================================================================
// Initialization
// =========================================================================
/**
* Initialize all registered plugins.View on GitHub (pinned to fa13ee4ad6)
Solutions
- Confirm the dependents can tolerate the removal; otherwise remove or update the dependent plugins first instead of force-removing.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/@claude-flow/plugins/src/registry/enhanced-plugin-registry.ts:368 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/76baed7789909771.
Report an issue: GitHub.