perf(ingestion): one repo walk per update, not one per worker

Analysed against 34148e587 files changedby azhard
Open PR on GitHub

Change-risk score

8.9out of 10Typical
Repository health
4.8to4.9base against this head

This change sits in the middle third of this repository's own risk distribution, so it is about as risky as the work around it. It is riskier than 55% of this repository's own commits.

No changed file lost health in this diff. 1 contract changed, called by 1 symbol in files this PR does not touch.

Files changed
7
in this diff
Contracts changed
1
removed or signature
Outside callers
1
not in this diff
Findings added
2
10 resolved

Blast radius on the repo map

Every file in the repository, grouped into its own directories and sized by lines. The ones this PR changes are lit, and everything that imports them is marked.

packagestestsapi-clientclicoreserveruivscodewebunitsrcsrc/repowis…src/repowise/coresrc/repowise/server__tests__srcsrccligenerationhealthingestionpersiste…servertest_pro…workspaceagent_targe…commandsanalysisgenerationingestionworkspacemcp_serverroutersc4graphcomponen…mcp
changed, health fellchanged, health rosechanged, health heldimports a changed fileuntouchedchanged by this PR

Drawing 3,306 of 3,706 files at a readable size, grouped by directory and sized by lines of code. 7 changed here reach 14 more by import. 400 are too small to see at this width, which is what the frame below is for.

Inside packages/core/src/repowise/core/ingestion

dynamic_hintsexternal_systemsextractorsframework_edgesgit_indexergraphlanguagesresolversbindingsspecsdotnetaspnet_…call_re…change_…disp…fram…git_…grap…heri…languag…models.…package…parse_c…parser.…parse…pytho…sfc_s…speci…travers…tsconfi…type_na…type_re…c.pycpp…dja…dotn…jvm.…nod…php…pyt…regi…ruby…rust…xaml.…baze…cmake.pygo.…io_…mav…pyp…do…he…si…visibilit…__i…and…asp…bas…dja…exp…flu…go.…gte…jak…pytes…quark…rails…sprin…typo3.…READM…__ini…_cons…agent…co_ch…co…enrich…file_h…fix_sh…functi…indexer.pyprior_defec…records.pyRE…_b…_c…_edge…_metr…_rehy…_resolvers…builder.…csharp_…csharp_sa…go_…recei…regi…cl…da…ht…co…cp…cpp_work…er…go.pygo_works…jvm_gra…jvm_works…lu…lu…mo…ph…ru…rust…rust…sca…sca…she…sql…sub…ts_workspace.pyts_js…cp…lom…java.…rust…ind…msb…nam…

278 files, 5 changed by this PR and 8 that import one. This PR changes 7 files in total, spread across more than one top-level directory. Click any directory above to frame it instead.

Changed

Contracts this PR changes

Only symbols that were removed or had their signature changed. An added symbol has no prior callers, and a body-only change leaves the caller's contract intact, so neither is a finding.

build_swift_targetssignature changedpackages/core/src/repowise/core/ingestion/resolvers/swift_spm.py:66

1 caller outside this PR, 1 inside it.

tests/unit/ingestion/test_swift_resolver.py::TestBuildSwiftTargets::test_merges_multiple_packages

What this PR added, and what it took away

Introduced findings are the ones inside the lines this PR added, not the file's existing ones. The resolved column is the only place in the product that lists them.

Introduced (2)
  • mediumduplicated assertion block
    tests/unit/ingestion/test_traverser.py:1204

    assertion block at lines 1204-1205 is duplicated in tests/unit/ingestion/test_traverser.py

  • mediumduplicated assertion block
    tests/unit/ingestion/test_traverser.py:1241

    assertion block at lines 1241-1242 is duplicated in tests/unit/ingestion/test_traverser.py

Resolved (10)
  • io in loop
    packages/core/src/repowise/core/ingestion/external_systems/cmake.py
  • io in loop
    packages/core/src/repowise/core/ingestion/resolvers/cpp_workspace.py
  • io in loop
    packages/core/src/repowise/core/ingestion/resolvers/ruby.py
  • dry violation
    packages/core/src/repowise/core/ingestion/resolvers/swift_spm.py
  • io in loop
    packages/core/src/repowise/core/ingestion/resolvers/swift_spm.py
  • nested complexity
    packages/core/src/repowise/core/ingestion/traverser.py
  • function hotspot
    packages/core/src/repowise/core/ingestion/traverser.py
  • error handling
    packages/core/src/repowise/core/ingestion/traverser.py
  • dry violation
    tests/unit/ingestion/external_systems/test_cmake.py
  • io in loop
    tests/unit/ingestion/test_traverser.py

Who else knows this code

The primary author of each changed file by share of its recent commits, mined from git history. Advisory: it says who has context, not who must review.

  • packages/core/src/repowise/core/ingestion/resolvers/ruby.pySwati Ahuja 72% of 1 commits
  • tests/unit/ingestion/test_traverser.pyRaghav Chamadiya 79% of 14 commits
  • packages/core/src/repowise/core/ingestion/traverser.pyRaghav Chamadiya 89% of 22 commits
  • packages/core/src/repowise/core/ingestion/resolvers/swift_spm.pyRaghav Chamadiya 99% of 3 commits
  • packages/core/src/repowise/core/ingestion/external_systems/cmake.pyRaghav Chamadiya 100% of 3 commits

Tests that cover this change

Test files that import a file this PR changes. Not a coverage measurement: it is the import graph, so it says which tests are worth running, not which lines they reach.

  • tests/integration/test_deterministic_generation.py
  • tests/integration/test_generation_determinism.py
  • tests/integration/test_generation_pipeline.py
  • tests/unit/ingestion/test_ruby_resolver.py
  • tests/unit/ingestion/test_swift_resolver.py
  • tests/unit/ingestion/test_cpp_include_fragments.py
  • tests/unit/ingestion/test_cpp_workspace.py

2 changed files have no test importing them.

Get this on your own pull requests

This page came from an index of repowise-dev/repowise. No model calls, no configuration, and it refreshes on every push. Install the bot and every pull request gets one of these.