Currently, the collectSeeds orchestrator unconditionally executes discoverNodeProjects(root) and turboTaskGraph(root) before invoking any feature mappers.
This design assumes a Node.js-centric environment and passes the eager results to all 17 language mappers (Go, Python, Rust, C++, etc.) via the MapperContext. While Node-ecosystem mappers require this context, non-Node mappers completely ignore it. This means that for pure Go or Python repositories, the CLI pays a heavy, unnecessary I/O penalty (recursively scanning for package.json, project.json, lockfiles, etc.) blocking the non-Node mappers from starting their execution.
Expected Behavior
Non-Node mappers should not wait for Node.js workspace discovery. The MapperContext should be evaluated lazily so that Node workspace discovery only runs when a mapper actually requests it, avoiding redundant disk I/O in polyglot or non-JS/TS repositories.
Currently, the collectSeeds orchestrator unconditionally executes discoverNodeProjects(root) and turboTaskGraph(root) before invoking any feature mappers.
This design assumes a Node.js-centric environment and passes the eager results to all 17 language mappers (Go, Python, Rust, C++, etc.) via the MapperContext. While Node-ecosystem mappers require this context, non-Node mappers completely ignore it. This means that for pure Go or Python repositories, the CLI pays a heavy, unnecessary I/O penalty (recursively scanning for package.json, project.json, lockfiles, etc.) blocking the non-Node mappers from starting their execution.
Expected Behavior
Non-Node mappers should not wait for Node.js workspace discovery. The MapperContext should be evaluated lazily so that Node workspace discovery only runs when a mapper actually requests it, avoiding redundant disk I/O in polyglot or non-JS/TS repositories.