{"record":{"id":"fa0fd87459128c63","repo":"affaan-m/ECC","slug":"seed-path-does-not-exist-in-reporoot-seedpath","errorCode":null,"errorMessage":"Seed path does not exist in repoRoot: ${seedPath}","messagePattern":"Seed path does not exist in repoRoot: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/lib/tmux-worktree-orchestrator.js","lineNumber":94,"sourceCode":"      continue;\n    }\n\n    seen.add(normalizedPath);\n    normalized.push(normalizedPath);\n  }\n\n  return normalized;\n}\n\nfunction overlaySeedPaths({ repoRoot, seedPaths, worktreePath }) {\n  const normalizedSeedPaths = normalizeSeedPaths(seedPaths, repoRoot);\n\n  for (const seedPath of normalizedSeedPaths) {\n    const sourcePath = path.join(repoRoot, seedPath);\n    const destinationPath = path.join(worktreePath, seedPath);\n\n    if (!fs.existsSync(sourcePath)) {\n      throw new Error(`Seed path does not exist in repoRoot: ${seedPath}`);\n    }\n\n    fs.mkdirSync(path.dirname(destinationPath), { recursive: true });\n    fs.rmSync(destinationPath, { force: true, recursive: true });\n    fs.cpSync(sourcePath, destinationPath, {\n      dereference: false,\n      force: true,\n      preserveTimestamps: true,\n      recursive: true\n    });\n  }\n}\n\nfunction buildWorkerArtifacts(workerPlan) {\n  const seededPathsSection = workerPlan.seedPaths.length > 0\n    ? [\n        '',\n        '## Seeded Local Overlays',","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/scripts/lib/tmux-worktree-orchestrator.js#L76-L112","documentation":"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.","triggerScenarios":"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.","commonSituations":"Config referencing 'dist/output.js' before building; a renamed skill directory (e.g. 'skills/my-skill' moved); stale orchestration config after a repo restructure.","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."],"exampleFix":"// before\nseedPaths: ['skills/my-skill'] // directory renamed\n// after\nseedPaths: ['skills/my-skill-v2']","handlingStrategy":"validation","validationCode":"const fs = require('fs');\nconst path = require('path');\nfor (const sp of seedPaths) {\n  if (!fs.existsSync(path.join(repoRoot, sp))) throw new Error(`Seed path missing before overlay: ${sp}`);\n}","typeGuard":"const seedExists = (root, sp) => fs.existsSync(path.join(root, sp));","tryCatchPattern":"try {\n  overlaySeedPaths(repoRoot, worktreePath, seedPaths);\n} catch (e) {\n  if (String(e.message).startsWith('Seed path does not exist in repoRoot')) {\n    console.error('Missing seed source; run build or fix config:', e.message);\n  }\n  throw e;\n}","preventionTips":["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."],"tags":["file-not-found","seed","tmux"],"backgroundTag":"file-not-found","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}