perf(ingestion): one repo walk per update, not one per worker - #1926
Open
azhard wants to merge 5 commits into
Open
perf(ingestion): one repo walk per update, not one per worker#1926azhard wants to merge 5 commits into
azhard wants to merge 5 commits into
Repowise Bot / Repowise / code health
succeeded
Aug 27, 2026 in 0s
Health gate passed
Repository health 7.3 -> 7.3. No configured gate rule tripped.
Details
Symbols changed (blast radius)
packages/core/src/repowise/core/ingestion/resolvers/swift_spm.py::build_swift_targets: signature, 1 caller(s) outside this PR:tests/unit/ingestion/test_swift_resolver.py::TestBuildSwiftTargets::test_merges_multiple_packagespackages/core/src/repowise/core/ingestion/traverser.py::_find_entry_points_in: removed, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::_primary_language_in: removed, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/external_systems/cmake.py::discover_cmake_reactor: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::_scan_package_dir: added, 0 caller(s) outside this PRtests/unit/ingestion/external_systems/test_cmake.py::test_orphan_glob_honours_the_snapshot_nested_repo_setting: added, 0 caller(s) outside this PRtests/unit/ingestion/external_systems/test_cmake.py::test_orphan_glob_reads_the_snapshot_when_given_one: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::TestConcurrentLazyInit: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::TestPackageScanPruning: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::_never_pruned: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::_pkg: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_a_committed_build_dir_is_excluded_too: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_a_package_with_nothing_indexed_reports_unknown: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_console_script_tables_is_collected_once: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_dir_ignore_cache_publishes_one_spec_per_directory: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_entry_points_come_only_from_indexed_directories: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_gitignored_output_no_longer_decides_the_language: added, 0 caller(s) outside this PRtests/unit/ingestion/test_traverser.py::test_pre_seeded_root_entry_survives_concurrent_readers: added, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::FileTraverser: body, 67 caller(s) outside this PR:packages/cli/src/repowise/cli/commands/dead_code_cmd.py::dead_code_command,packages/cli/src/repowise/cli/commands/health_cmd/command.py::health_command,packages/cli/src/repowise/cli/commands/update_cmd/persistence.py::_repair_module_attribution,packages/cli/src/repowise/cli/commands/workspace_cmd.py::_generate_docs_for_added_repo,packages/core/src/repowise/core/ingestion/package_roots.py::_default_prune,packages/core/src/repowise/core/pipeline/incremental.py::build_repo_graph,packages/core/src/repowise/core/pipeline/phases/ingestion.py::_run_ingestion,packages/core/src/repowise/core/pipeline/phases/ingestion.py::reparse_for_resume,packages/core/src/repowise/core/pipeline/reparse.py::reparse_repo,packages/core/src/repowise/core/workspace/extractors/base.py::iter_source_files,packages/server/src/repowise/server/routers/repos.py::preflight_index,scripts/benchmark_upgrade.py::_parse_and_build,scripts/validate_quality.py::main,tests/integration/test_commonjs_dead_code.py::chained_graph,tests/integration/test_commonjs_dead_code.py::graph_and_report,tests/integration/test_cpp_dead_code.py::cpp_report,tests/integration/test_dead_code_integration.py::test_dead_code_detects_unreachable_fixture,tests/integration/test_deterministic_generation.py::TestFilePagesOnly::scoped_pages,tests/integration/test_deterministic_generation.py::_run_deterministic,tests/integration/test_deterministic_generation.py::deterministic_pages,tests/integration/test_dotnet_solution.py::ingest_solution,tests/integration/test_generation_determinism.py::_parse_sample_repo,tests/integration/test_generation_pipeline.py::pipeline_result,tests/integration/test_go_dead_code.py::go_report,tests/integration/test_health_coverage_integration.py::_build_parsed_files,tests/integration/test_health_perf_benchmark.py::test_health_analyzer_meets_30s_budget,tests/integration/test_health_perf_benchmark.py::test_health_analyzer_meets_30s_budget_with_blame,tests/integration/test_ingest_sample_repo.py::TestIngestSampleRepo::ingestion_result,tests/integration/test_jvm_dead_code.py::jvm_report,tests/integration/test_persistence.py::persisted,tests/integration/test_ts_dead_code.py::ts_report,tests/integration/test_wiki_idempotence.py::_parse_sample_repo,tests/unit/health/test_module_attribution.py::_analyze,tests/unit/health/test_module_attribution.py::test_the_engine_reads_package_roots_off_disk_not_the_file_list,tests/unit/health/test_module_attribution.py::test_without_a_repo_root_the_engine_still_produces_the_old_answer,tests/unit/health/test_perf_crossfn.py::_build,tests/unit/health/test_perf_incremental_parity.py::_repo,tests/unit/health/test_reachability_wiring.py::_tree,tests/unit/ingestion/test_c_type_use.py::TestCppSameTranslationUnitTypeUse::_build,tests/unit/ingestion/test_cohesion_cycles.py::_builderpackages/core/src/repowise/core/ingestion/resolvers/cpp_workspace.py::build_cpp_workspace_index: body, 4 caller(s) outside this PR:packages/core/src/repowise/core/ingestion/call_resolver.py::CallResolver::_get_cpp_index,tests/unit/ingestion/test_cpp_workspace.py::test_project_export_macro_discovery,tests/unit/ingestion/test_cpp_workspace.py::test_public_header_layout_includes_lib_dir,tests/unit/ingestion/test_cpp_workspace.py::test_siblings_in_targetspackages/core/src/repowise/core/ingestion/traverser.py::_detect_monorepo: body, 2 caller(s) outside this PR:tests/unit/ingestion/test_fs_walk.py::TestMonorepoDetectionBoundaries::test_nested_repo_not_reported_as_package,tests/unit/ingestion/test_fs_walk.py::TestMonorepoDetectionBoundaries::test_nested_repo_reported_when_opted_inpackages/core/src/repowise/core/ingestion/resolvers/swift_spm.py::get_or_build_swift_targets: body, 1 caller(s) outside this PR:packages/core/src/repowise/core/ingestion/graph/_resolvers.py::ResolveMixin::_resolve_swift_same_modulepackages/core/src/repowise/core/ingestion/resolvers/ruby.py::_scan_gem_metadata: body, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::__init__: body, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::_console_script_tables: body, 0 caller(s) outside this PRpackages/core/src/repowise/core/ingestion/traverser.py::_get_dir_ignore: body, 0 caller(s) outside this PR
Review priority (recent bug-fix history)
packages/core/src/repowise/core/ingestion/traverser.py: fixed 13x in the last ~6 monthstests/unit/ingestion/test_traverser.py: fixed 7x in the last ~6 monthspackages/core/src/repowise/core/ingestion/external_systems/cmake.py: fixed 2x in the last ~6 monthspackages/core/src/repowise/core/ingestion/resolvers/swift_spm.py: fixed once in the last ~6 months
Touched hotspots (blast radius)
packages/core/src/repowise/core/ingestion/resolvers/ruby.py: 1 commits/90d, 2 dependents, owner Swati Ahujatests/unit/ingestion/test_traverser.py: 14 commits/90d, 3 dependents, owner Raghav Chamadiyapackages/core/src/repowise/core/ingestion/traverser.py: 22 commits/90d, 28 dependents, owner Raghav Chamadiyapackages/core/src/repowise/core/ingestion/resolvers/swift_spm.py: 3 commits/90d, 3 dependents, owner Raghav Chamadiyapackages/core/src/repowise/core/ingestion/external_systems/cmake.py: 3 commits/90d, 4 dependents, owner Raghav Chamadiya
Hidden coupling (co-change partners not in this PR)
packages/core/src/repowise/core/ingestion/traverser.pyco-changes withpackages/core/src/repowise/core/pipeline/orchestrator.py(5x)packages/core/src/repowise/core/ingestion/traverser.pyco-changes withpackages/core/src/repowise/core/pipeline/incremental.py(5x)tests/unit/ingestion/test_traverser.pyco-changes withpackages/core/src/repowise/core/pipeline/orchestrator.py(4x)packages/core/src/repowise/core/ingestion/traverser.pyco-changes withpackages/core/src/repowise/core/ingestion/parser.py(4x)tests/unit/ingestion/test_traverser.pyco-changes withpackages/cli/src/repowise/cli/commands/dead_code_cmd.py(3x)
Change risk
- Raw change-risk score: 8.9/10 (banded moderate, riskier than 55% of this repo's commits)
- Driven by: more lines added than baseline
- Driven by: more scattered than baseline
Annotations
Check warning on line 66 in packages/core/src/repowise/core/ingestion/resolvers/swift_spm.py
repowise-bot / Repowise / code health
Signature changed: build_swift_targets
1 caller outside this PR call `build_swift_targets`: `tests/unit/ingestion/test_swift_resolver.py::TestBuildSwiftTargets::test_merges_multiple_packages`. They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.
Loading