affaan-m/ECC · error · Error
Seed path does not exist in repoRoot
Error message
Seed path does not exist in repoRoot: ${seedPath} What it means
overlaySeedPaths copies each normalized seed path from the repo root into the target worktree. It throws when the source file/directory does not exist in repoRoot (checked with fs.existsSync), preventing silent no-op seeding. This is a hard existence check on the repo-side source before copy.
Solutions
- Verify the path exists in repoRoot (ls repoRoot/<seedPath>) and fix the seedPath spelling.
- Create the missing file/directory or run the build step that generates it before orchestrating.
- Remove the stale entry from seedPaths if it is no longer needed.
- Commit the file if it was expected to be tracked but is missing from a fresh clone.
Example fix
// before seedPaths: ['skills/my-skill'] // directory renamed // after seedPaths: ['skills/my-skill-v2']
Defensive patterns
Strategy: validation
Validate before calling
const fs = require('fs');
const path = require('path');
for (const sp of seedPaths) {
if (!fs.existsSync(path.join(repoRoot, sp))) throw new Error(`Seed path missing before overlay: ${sp}`);
} Type guard
const seedExists = (root, sp) => fs.existsSync(path.join(root, sp));
Try / catch
try {
overlaySeedPaths(repoRoot, worktreePath, seedPaths);
} catch (e) {
if (String(e.message).startsWith('Seed path does not exist in repoRoot')) {
console.error('Missing seed source; run build or fix config:', e.message);
}
throw e;
} Prevention
- Run build/generation steps before orchestrating when seeds include build output.
- Keep seed paths tracked in git so fresh clones have them.
- Glob-check seedPaths existence at startup and fail early with a summary.
- Remove entries for deleted files from config.
When it happens
Trigger: Passing a seedPath that names a file/directory absent from the current repo (typo, renamed dir, file deleted); seeding a path that only exists after a build step; running the orchestrator in a fresh clone where an untracked generated asset is missing.
Common situations: Config referencing 'dist/output.js' before building; a renamed skill directory (e.g. 'skills/my-skill' moved); stale orchestration config after a repo restructure.
Understand the failure class
Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.
Related errors
- Agents directory not found
- asset must be a local regular file
- buildOrchestrationPlan requires at least one worker
- cannot open
- cannot open video
AI-assisted analysis of affaan-m/ECC@8321021c54 (2026-09-16).
Data as JSON: /api/errors/fa0fd87459128c63.
Report an issue: GitHub.
Appendix: source
Thrown at scripts/lib/tmux-worktree-orchestrator.js:94
continue;
}
seen.add(normalizedPath);
normalized.push(normalizedPath);
}
return normalized;
}
function overlaySeedPaths({ repoRoot, seedPaths, worktreePath }) {
const normalizedSeedPaths = normalizeSeedPaths(seedPaths, repoRoot);
for (const seedPath of normalizedSeedPaths) {
const sourcePath = path.join(repoRoot, seedPath);
const destinationPath = path.join(worktreePath, seedPath);
if (!fs.existsSync(sourcePath)) {
throw new Error(`Seed path does not exist in repoRoot: ${seedPath}`);
}
fs.mkdirSync(path.dirname(destinationPath), { recursive: true });
fs.rmSync(destinationPath, { force: true, recursive: true });
fs.cpSync(sourcePath, destinationPath, {
dereference: false,
force: true,
preserveTimestamps: true,
recursive: true
});
}
}
function buildWorkerArtifacts(workerPlan) {
const seededPathsSection = workerPlan.seedPaths.length > 0
? [
'',
'## Seeded Local Overlays',View on GitHub (pinned to 8321021c54)