affaan-m/ECC · error · Error
Selection excludes every requested install module
Error message
Selection excludes every requested install module
What it means
Thrown by resolveInstallPlan() when requestedModuleIds is non-empty but effectiveRequestedIds — requested minus excluded — is zero. Every module the user asked for was eliminated by an exclude component or a target-default exclusion. This catches the contradiction before producing a useless plan that installs nothing while pretending to honor the request.
Source
Thrown at scripts/lib/install-manifests.js:597
const targetPlanningInput = target
? {
repoRoot: manifests.repoRoot,
projectRoot: validatedProjectRoot || manifests.repoRoot,
homeDir: validatedHomeDir || os.homedir(),
}
: null;
const targetAdapter = target ? getInstallTargetAdapter(target) : null;
const effectiveRequestedIds = dedupeStrings(
requestedModuleIds.filter(moduleId => !excludedModuleOwners.has(moduleId))
);
if (requestedModuleIds.length === 0) {
throw new Error('No install profile, module IDs, or included component IDs were provided');
}
if (effectiveRequestedIds.length === 0) {
throw new Error('Selection excludes every requested install module');
}
const selectedIds = new Set();
const skippedTargetIds = new Set();
const excludedIds = new Set([
...excludedModuleIds,
...targetDefaultExclusions.map(exclusion => exclusion.moduleId),
]);
const visitingIds = new Set();
const resolvedIds = new Set();
function resolveModule(moduleId, dependencyOf, rootRequesterId) {
const module = manifests.modulesById.get(moduleId);
if (!module) {
throw new Error(`Unknown install module: ${moduleId}`);
}
if (excludedModuleOwners.has(moduleId)) {View on GitHub (pinned to 01e15490f0)
Solutions
- Reduce the exclude list so at least one requested module survives.
- Review targetDefaultExclusions in the returned plan to understand target-driven opt-outs.
- If you genuinely want nothing, do not call resolveInstallPlan at all.
- Use module-level (not component-level) excludes if you want finer control.
Example fix
// before
resolveInstallPlan({ target: 'claude', profileId: 'baseline', excludeComponentIds: ['lang:rust'] });
// after (drop the over-broad exclude)
resolveInstallPlan({ target: 'claude', profileId: 'baseline' }); Defensive patterns
Strategy: validation
Validate before calling
const requested = new Set([
...(options.moduleIds || []),
...(options.includeComponentIds || []),
]);
const excluded = new Set(options.excludeComponentIds || []);
const contradiction = [...requested].filter(id => excluded.has(id));
if (contradiction.length > 0 && requested.size === contradiction.length) {
throw new Error('Every requested component is also excluded');
}
resolveInstallPlan(options); Prevention
- Do not source includes and excludes from the same list.
- Inspect targetDefaultExclusions in the returned plan to understand target opt-outs.
When it happens
Trigger: Passing includeComponentIds: ['lang:rust'] and excludeComponentIds: ['lang:rust'] simultaneously; or excluding every module that a profile pulls in. Target-default exclusions (e.g. OpenCode's intentional opt-outs) can also remove all requested modules.
Common situations: A wrapper script computes excludes from the same source as includes; a user manually excludes a baseline component while keeping the baseline profile; the OpenCode default exclusion list intersects the entire requested set.
Related errors
- No install profile, module IDs, or included component IDs we
- At least one guided harness must be selected
- ${harness.label} is an advanced harness and is not guided-re
- Target '${target}' is supported, but the bare-language insta
- Unknown install target: ${target}. Expected one of ${SUPPORT
AI-assisted analysis of affaan-m/ECC@01e15490f0 (2026-08-13).
Data as JSON: /api/errors/c6d070412654270c.
Report an issue: GitHub.