affaan-m/ECC · error · ClaudeSetupError

FINAL_VERIFICATION_FAILED

FINAL_VERIFICATION_FAILED

Error message

Could not verify destination-only ${CURRENT_PLUGIN_ID} state after source cleanup.

What it means

Error "Could not verify destination-only ${CURRENT_PLUGIN_ID} state after source cleanup." thrown in affaan-m/ECC.

Source

Thrown at scripts/lib/claude-scope-migration.js:236

    } catch {
      // Preserve the safest known two-scope state in the structured recovery.
    }
    throw migrationError(
      'SOURCE_UNINSTALL_FAILED',
      `The destination is installed, but Claude could not remove the ${migration.sourceScope} source scope.`,
      {
        phase: 'source-uninstall',
        observedScopes,
        recovery: recoveryCommands(migration.sourceScope, destinationScope),
      }
    );
  }
}

function verifyFinalState(run, paths, destinationScope) {
  const plugins = readPluginInventory(run, paths.projectRoot, 'final-verification');
  return validateExpectedScopes(plugins, [destinationScope], {
    code: 'FINAL_VERIFICATION_FAILED',
    destinationScope,
    message: `Could not verify destination-only ${CURRENT_PLUGIN_ID} state after source cleanup.`,
    phase: 'final-verification',
    recovery: recoveryCommands(null, destinationScope),
  });
}

function migrateClaudePluginScope(options = {}, dependencies = {}) {
  if (!VALID_SCOPES.has(options.scope)) {
    throw migrationError(
      'INVALID_SCOPE',
      'Scope migration requires --scope user, project, or local.'
    );
  }
  if (options.hooks !== undefined && !VALID_HOOK_MODES.has(options.hooks)) {
    throw migrationError('INVALID_HOOK_MODE', `Invalid hook mode: ${options.hooks}`);
  }

View on GitHub (pinned to 01e15490f0)

Solutions

  1. The source scope was cleaned up but the plugin could not be verified as present only in the destination scope. Inspect the plugin inventory at the project root to see which scopes still report the plugin.
  2. Re-run the migration after manually removing stale plugin entries from the old scope, then verify with the listed recovery commands.
  3. Check for partial writes or permission errors during the destination install; fix permissions and re-run the migration.

Example fix

# Inspect scopes, remove the stale source entry, then retry:
ls ~/.claude/plugins && rm -rf ~/.claude/plugins/<stale-ecc-entry>
ecc setup --move-scope --scope project

When it happens

Trigger: Thrown at scripts/lib/claude-scope-migration.js:236 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13). Data as JSON: /api/errors/e61fdd500af71c85. Report an issue: GitHub.