Repository Analysis

repowise-dev/repowise

Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.

42.1 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of repowise-dev/repowise, a Python project with 3,606 GitHub stars. SynthScan v2.0 examined 498,538 lines of code across 2803 source files, recording 13302 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 42.1 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

42.1
Adjusted Score
42.1
Raw Score
100%
Time Factor
2026-07-14
Last Push
3.6K
Stars
Python
Language
498.5K
Lines of Code
2.8K
Files
13.3K
Pattern Hits
2026-07-14
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 9HIGH 86MEDIUM 2780LOW 10427

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 13302 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators2686 hits · 9783 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml1# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml3# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml29# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml32# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml127# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml129# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml149# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml151# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml172# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml174# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml197# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml199# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml210# ---------------------------------------------------------------------------COMMENT
MEDIUMpyproject.toml212# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py53# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py55# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py88# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_procutils.py90# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_commit_rows.py45# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_commit_rows.py47# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_commit_rows.py131# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_commit_rows.py133# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py193# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py195# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py373# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py375# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py750# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py752# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py772# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py774# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py804# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py806# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py885# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py887# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py14# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py44# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py46# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py143# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py145# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py580# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/test_git_indexer.py582# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py44# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py46# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py72# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py74# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py109# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py111# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py153# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/pipeline/test_resume.py155# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py27# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py127# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py129# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py184# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_language_capabilities.py187# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_traverser.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit/ingestion/test_traverser.py14# ---------------------------------------------------------------------------COMMENT
2626 more matches not shown…
Hyper-Verbose Identifiers6092 hits · 6279 pts
SeverityFileLineSnippetContext
LOWtests/unit/test_procutils.py42def test_pid_alive_dead_child() -> None:CODE
LOWtests/unit/test_procutils.py47def test_pid_alive_rejects_garbage() -> None:CODE
LOWtests/unit/test_procutils.py58def test_create_token_self_is_stable() -> None:CODE
LOWtests/unit/test_procutils.py65def test_create_token_dead_pid_is_none_or_differs_from_live() -> None:CODE
LOWtests/unit/test_procutils.py76def test_create_token_distinguishes_processes() -> None:CODE
LOWtests/unit/test_procutils.py93def test_parent_pid_of_child_is_us() -> None:CODE
LOWtests/unit/test_procutils.py102def test_process_name_of_child_is_python() -> None:CODE
LOWtests/unit/test_procutils.py113def test_ancestor_chain_starts_at_parent() -> None:CODE
LOWtests/unit/test_procutils.py124def test_ancestor_chain_excludes_self_and_has_no_duplicates() -> None:CODE
LOWtests/unit/test_git_commit_rows.py50def test_commit_sink_collects_full_footprint_including_non_indexable() -> None:CODE
LOWtests/unit/test_git_commit_rows.py85def test_commit_sink_since_ts_drops_old_commits() -> None:CODE
LOWtests/unit/test_git_commit_rows.py111def test_commit_sink_default_none_is_noop() -> None:CODE
LOWtests/unit/test_git_commit_rows.py136def test_build_commit_rows_features_and_ordering() -> None:CODE
LOWtests/unit/test_git_commit_rows.py175def test_build_commit_rows_author_experience_is_cumulative() -> None:CODE
LOWtests/unit/test_git_commit_rows.py223def test_build_commit_rows_truncates_subject() -> None:CODE
LOWtests/unit/test_git_commit_rows.py238def test_build_commit_rows_handles_empty_and_no_changes() -> None:CODE
LOWtests/unit/test_git_commit_rows.py257def test_build_commit_rows_committed_at_parsed() -> None:CODE
LOWtests/unit/test_platform_telemetry.py56 def test_do_not_track_blocks_send(self, isolated, monkeypatch: pytest.MonkeyPatch):CODE
LOWtests/unit/test_platform_telemetry.py62 def test_stored_disable_blocks_send(self, isolated, monkeypatch: pytest.MonkeyPatch):CODE
LOWtests/unit/test_platform_telemetry.py85 def test_no_patch_version_leak(self, isolated, monkeypatch: pytest.MonkeyPatch):CODE
LOWtests/unit/test_platform_telemetry.py92 def test_missing_platform_json_sends_null_anon(self, isolated, monkeypatch: pytest.MonkeyPatch):CODE
LOWtests/unit/test_platform_telemetry.py101 def test_debug_prints_does_not_send(CODE
LOWtests/unit/test_git_commit_index.py44def test_load_commit_index_buckets_per_file() -> None:CODE
LOWtests/unit/test_git_commit_index.py79def test_load_commit_index_drops_non_indexable_files() -> None:CODE
LOWtests/unit/test_git_commit_index.py102def test_load_commit_index_captures_multiline_body() -> None:CODE
LOWtests/unit/test_git_commit_index.py134def test_log_format_arg_has_no_real_null_byte() -> None:CODE
LOWtests/unit/test_git_commit_index.py152def test_load_commit_index_returns_empty_on_failure() -> None:CODE
LOWtests/unit/test_git_commit_index.py159def test_load_commit_index_handles_renames() -> None:CODE
LOWtests/unit/test_git_indexer.py201 def test_hotspot_classification(self) -> None:CODE
LOWtests/unit/test_git_indexer.py274 def test_single_drive_by_commit_is_not_a_hotspot(self) -> None:CODE
LOWtests/unit/test_git_indexer.py284 def test_repeated_trivial_commits_are_not_a_hotspot(self) -> None:CODE
LOWtests/unit/test_git_indexer.py293 def test_real_activity_is_a_hotspot(self) -> None:CODE
LOWtests/unit/test_git_indexer.py301 def test_high_commit_volume_escape_hatch(self) -> None:CODE
LOWtests/unit/test_git_indexer.py363 def test_window_anchors_to_most_recent_author(self) -> None:CODE
LOWtests/unit/test_git_indexer.py381 def test_stable_classification(self) -> None:CODE
LOWtests/unit/test_git_indexer.py759 async def test_git_unavailable_graceful(self) -> None:CODE
LOWtests/unit/test_git_indexer.py780 def test_co_change_below_threshold_skipped(self) -> None:CODE
LOWtests/unit/test_git_indexer.py813 def test_change_entropy_focused_vs_scattered(self) -> None:CODE
LOWtests/unit/test_git_indexer.py893 def test_blame_ownership_computed(self) -> None:CODE
LOWtests/unit/test_git_indexer.py58 def test_significant_commit_filter(self) -> None:CODE
LOWtests/unit/test_git_indexer.py328 def test_counts_distinct_recent_authors(self) -> None:CODE
LOWtests/unit/test_git_indexer.py346 def test_unknown_when_no_timestamps(self) -> None:CODE
LOWtests/unit/test_git_indexer.py404 def test_top_authors_carry_per_author_timestamps(self) -> None:CODE
LOWtests/unit/test_git_indexer.py444 def _mock_repo_with_old_commits(self) -> tuple[MagicMock, datetime]:CODE
LOWtests/unit/test_git_indexer.py458 def test_default_uses_wall_clock(self, monkeypatch) -> None:CODE
LOWtests/unit/test_git_indexer.py466 def test_anchor_to_head_commit(self, monkeypatch) -> None:CODE
LOWtests/unit/test_git_indexer.py479 def test_include_patterns_match(self) -> None:CODE
LOWtests/unit/test_git_indexer.py489 def test_exclude_overrides_include(self) -> None:CODE
LOWtests/unit/test_git_indexer.py534 def test_counts_and_attributes_fixes(self) -> None:CODE
LOWtests/unit/test_git_indexer.py552 def test_ignores_non_indexable_paths(self) -> None:CODE
LOWtests/unit/test_git_indexer.py615 def test_only_target_file_counted(self) -> None:CODE
LOWtests/unit/test_git_indexer.py646 def test_binary_file_stats_ignored(self) -> None:CODE
LOWtests/unit/test_git_indexer.py673 def test_empty_output_returns_defaults(self) -> None:CODE
LOWtests/unit/test_git_indexer.py684 def test_malformed_header_skipped(self) -> None:CODE
LOWtests/unit/test_git_indexer.py703 def test_merge_commit_detected(self) -> None:CODE
LOWtests/unit/test_git_indexer.py720 def test_rename_tracking_with_follow(self) -> None:CODE
LOWtests/unit/test_git_indexer.py855 def test_change_entropy_percentile_silent_when_all_zero(self) -> None:CODE
LOWtests/unit/test_git_indexer.py867 def test_change_entropy_percentile_ranks_nonzero(self) -> None:CODE
LOWtests/unit/test_git_indexer.py920 def test_get_tracked_files_respects_exclude_patterns(self) -> None:CODE
LOWtests/unit/test_git_indexer.py931 def test_get_tracked_files_no_exclude_patterns(self) -> None:CODE
6032 more matches not shown…
Unused Imports2690 hits · 2420 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py3CODE
LOWtests/unit/test_procutils.py9CODE
LOWtests/unit/test_git_commit_rows.py8CODE
LOWtests/unit/test_platform_telemetry.py8CODE
LOWtests/unit/test_git_commit_index.py3CODE
LOWtests/unit/test_git_indexer.py3CODE
LOWtests/unit/test_csharp_dead_code_markers.py9CODE
LOWtests/unit/test_function_blame_rollup.py3CODE
LOWtests/unit/pipeline/test_coverage_ingestion.py8CODE
LOWtests/unit/pipeline/test_phase_timing.py3CODE
LOWtests/unit/pipeline/test_drop_transient_git_signals.py11CODE
LOWtests/unit/pipeline/test_parallel_source_reads.py8CODE
LOWtests/unit/pipeline/test_cancellation.py9CODE
LOWtests/unit/pipeline/test_update_graph_convergence.py15CODE
LOWtests/unit/pipeline/test_resume.py9CODE
LOW…ts/unit/pipeline/test_entry_point_score_persistence.py9CODE
LOWtests/unit/pipeline/test_modes.py3CODE
LOWtests/unit/pipeline/test_checkpoint.py7CODE
LOWtests/unit/pipeline/test_kg_refresh.py9CODE
LOWtests/unit/pipeline/test_ingestion_parse_cache.py9CODE
LOWtests/unit/upgrade/test_release.py4CODE
LOWtests/unit/upgrade/test_bundled_changelog_sync.py10CODE
LOWtests/unit/upgrade/test_changelog.py3CODE
LOWtests/unit/upgrade/test_update_check_cache.py3CODE
LOWtests/unit/upgrade/test_whats_new.py3CODE
LOWtests/unit/upgrade/test_cli_executor.py9CODE
LOWtests/unit/upgrade/test_manager.py9CODE
LOWtests/unit/upgrade/test_parse_cache_decoupling.py8CODE
LOWtests/unit/ingestion/test_rust_framework_edges.py3CODE
LOWtests/unit/ingestion/test_language_capabilities.py20CODE
LOWtests/unit/ingestion/test_jvm_type_refs.py7CODE
LOWtests/unit/ingestion/test_jvm_type_refs.py13CODE
LOWtests/unit/ingestion/test_rust_resolver.py3CODE
LOWtests/unit/ingestion/test_rust_resolver.py11CODE
LOWtests/unit/ingestion/test_rust_resolver.py11CODE
LOWtests/unit/ingestion/test_rust_resolver.py11CODE
LOW…sts/unit/ingestion/test_type_ref_defined_name_index.py18CODE
LOWtests/unit/ingestion/test_resolver_merged_index.py8CODE
LOWtests/unit/ingestion/test_shell_extractors.py3CODE
LOWtests/unit/ingestion/test_traverser.py3CODE
LOWtests/unit/ingestion/test_shell_resolver.py9CODE
LOWtests/unit/ingestion/test_author_identity.py9CODE
LOWtests/unit/ingestion/test_cpp_dynamic_hints.py3CODE
LOWtests/unit/ingestion/test_swift_same_module.py3CODE
LOWtests/unit/ingestion/test_jvm_calls.py4CODE
LOWtests/unit/ingestion/test_jvm_calls.py9CODE
LOWtests/unit/ingestion/test_typescript_resolver.py3CODE
LOWtests/unit/ingestion/test_agent_provenance.py9CODE
LOWtests/unit/ingestion/test_csharp_resolver.py10CODE
LOWtests/unit/ingestion/test_rust_dynamic_hints.py3CODE
LOWtests/unit/ingestion/test_typo3_framework_edges.py3CODE
LOWtests/unit/ingestion/test_git_deep_commit_index.py13CODE
LOWtests/unit/ingestion/test_git_rename_markers.py3CODE
LOWtests/unit/ingestion/test_ts_reexport_dead_code.py11CODE
LOWtests/unit/ingestion/test_cpp_header_pairs.py3CODE
LOWtests/unit/ingestion/test_ts_framework_edges.py3CODE
LOWtests/unit/ingestion/test_laravel_framework_edges.py3CODE
LOWtests/unit/ingestion/test_c_type_use.py17CODE
LOWtests/unit/ingestion/test_cpp_framework_edges.py4CODE
LOWtests/unit/ingestion/test_dynamic_hints_per_language.py3CODE
2630 more matches not shown…
Excessive Try-Catch Wrapping779 hits · 786 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py31 except Exception:CODE
LOWtests/unit/pipeline/test_cancellation.py65 except Exception:CODE
LOWtests/unit/pipeline/test_update_graph_convergence.py70 except Exception:CODE
LOWtests/unit/health/test_dataflow_langs.py29 except Exception:CODE
LOWtests/unit/health/test_complexity_walker.py47 except Exception:CODE
LOWtests/unit/health/test_ff_track_d_exceptions.py31 except Exception:CODE
LOWtests/unit/health/test_ff_track_d_exceptions.py35 except Exception:CODE
MEDIUMtests/unit/health/test_dataflow_facts.py21def _require_python() -> None:CODE
LOWtests/unit/health/test_dataflow_facts.py24 except Exception:CODE
LOWtests/unit/health/test_perf_promotion.py24 except Exception:CODE
MEDIUMtests/unit/health/test_perf_promotion.py21def _require_python() -> None:CODE
LOWtests/unit/health/test_error_handling.py146 except Exception:CODE
LOWtests/unit/health/test_error_handling.py150 except Exception:CODE
LOWtests/unit/health/test_ff_track_bch_complexity.py31 except Exception: # pragma: no cover - depends on optional depsCODE
LOWtests/unit/health/test_refactoring_extract_method.py53 except Exception:STRING
MEDIUMtests/unit/health/test_refactoring_extract_method.py50def _require_python() -> None:CODE
MEDIUMtests/unit/health/test_dataflow_cfg.py25def _require_python() -> None:CODE
MEDIUMtests/unit/health/test_dataflow_cfg.py222def f():CODE
LOWtests/unit/health/test_dataflow_cfg.py28 except Exception:CODE
LOWtests/unit/health/test_dataflow_cfg.py404 except Exception:STRING
LOWtests/unit/health/test_perf_promotion_engine.py20 except Exception:CODE
MEDIUMtests/unit/health/test_perf_promotion_engine.py17def _require_python() -> None:CODE
MEDIUMtests/unit/health/test_dataflow_reaching.py24def _require_python() -> None:CODE
LOWtests/unit/health/test_dataflow_reaching.py27 except Exception:CODE
LOWtests/integration/test_health_perf_benchmark.py70 except Exception:CODE
LOWtests/integration/test_health_perf_benchmark.py110 except Exception:CODE
LOWtests/integration/test_cpp_dead_code.py51 except Exception:CODE
LOWtests/integration/test_health_coverage_integration.py32 except Exception:CODE
LOWtests/integration/test_jvm_dead_code.py53 except Exception:CODE
LOWtests/integration/test_dead_code_integration.py31 except Exception:CODE
LOWtests/integration/test_persistence.py100 except Exception:CODE
LOWtests/integration/test_generation_pipeline.py191 except Exception:CODE
LOWtests/integration/persistence/test_sql_job_store_pg.py28 except Exception as exc: # pragma: no cover - skip when Docker missingCODE
MEDIUMtests/integration/persistence/test_sql_job_store_pg.py24def postgres_container():CODE
LOWtests/integration/persistence/test_graph_metrics_pg.py32 except Exception as exc: # pragma: no cover - skip when Docker missingCODE
MEDIUMtests/integration/persistence/test_graph_metrics_pg.py28def postgres_container():CODE
LOWtests/integration/persistence/test_embed_batch_pg.py33 except Exception as exc: # pragma: no cover - skip when Docker / image missingCODE
MEDIUMtests/integration/persistence/test_embed_batch_pg.py29def pgvector_container():CODE
LOWscripts/benchmark_large_repo.py148 except Exception:CODE
LOWscripts/validate_quality.py40 except Exception:CODE
LOWscripts/validate_quality.py181 except Exception as exc:CODE
LOWscripts/benchmark_upgrade.py55 except Exception:CODE
LOWscripts/benchmark_upgrade.py136 except Exception:CODE
LOWscripts/kg_validate/run.py163 except Exception as exc:CODE
LOWpackages/core/src/repowise/core/fsutils.py22 except Exception:CODE
LOWpackages/core/src/repowise/core/procutils.py258 except Exception:CODE
LOWpackages/core/src/repowise/core/procutils.py288 except Exception:CODE
LOWpackages/core/src/repowise/core/procutils.py306 except Exception:CODE
LOWpackages/core/src/repowise/core/procutils.py327 except Exception:CODE
LOWpackages/core/src/repowise/core/procutils.py354 except Exception:CODE
LOWpackages/core/src/repowise/core/pipeline/checkpoint.py163 except Exception as exc: # checkpointing must never break a runCODE
LOWpackages/core/src/repowise/core/pipeline/persist.py128 except Exception as exc: # analysis is non-load-bearing for persistenceCODE
LOWpackages/core/src/repowise/core/pipeline/persist.py240 except Exception as exc: # materialization is non-load-bearingCODE
LOWpackages/core/src/repowise/core/pipeline/persist.py250 except Exception as exc: # materialization is non-load-bearingCODE
LOWpackages/core/src/repowise/core/pipeline/persist.py641 except Exception as _sec_err:CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py746 except Exception as _snap_err:CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py772 except Exception as _purge_err:CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py803 except Exception as _evo_err:CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py818 except Exception as _stale_err:CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py850 except Exception as _gov_err:CODE
719 more matches not shown…
Deep Nesting396 hits · 364 pts
SeverityFileLineSnippetContext
LOWtests/unit/health/test_function_hotspot.py14CODE
LOWtests/unit/health/test_refactoring_split_file.py129CODE
LOWtests/unit/persistence/test_decision_supersession.py30CODE
LOWtests/unit/generation/test_layer_pages.py195CODE
LOWpackages/core/src/repowise/core/update_lock.py98CODE
LOWpackages/core/src/repowise/core/fs_walk.py237CODE
LOWpackages/core/src/repowise/core/pipeline/checkpoint.py143CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py144CODE
LOWpackages/core/src/repowise/core/pipeline/persist.py684CODE
LOW…ckages/core/src/repowise/core/pipeline/orchestrator.py155CODE
LOWpackages/core/src/repowise/core/pipeline/incremental.py45CODE
LOW…es/core/src/repowise/core/pipeline/phases/ingestion.py180CODE
LOW…es/core/src/repowise/core/pipeline/phases/ingestion.py484CODE
LOW…ges/core/src/repowise/core/pipeline/phases/analysis.py71CODE
LOW…ges/core/src/repowise/core/pipeline/phases/analysis.py144CODE
LOW…ges/core/src/repowise/core/pipeline/phases/analysis.py246CODE
LOWpackages/core/src/repowise/core/upgrade/manager.py124CODE
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py153CODE
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py245CODE
LOW…kages/core/src/repowise/core/ingestion/import_index.py38CODE
LOWpackages/core/src/repowise/core/ingestion/parser.py349CODE
LOWpackages/core/src/repowise/core/ingestion/parser.py552CODE
LOWpackages/core/src/repowise/core/ingestion/parser.py595CODE
LOW…ges/core/src/repowise/core/ingestion/parser_helpers.py26CODE
LOW…ges/core/src/repowise/core/ingestion/parser_helpers.py217CODE
LOW…ages/core/src/repowise/core/ingestion/graph_warmups.py37CODE
LOW…ages/core/src/repowise/core/ingestion/graph_warmups.py102CODE
LOW…ages/core/src/repowise/core/ingestion/graph_warmups.py191CODE
LOW…ages/core/src/repowise/core/ingestion/graph_warmups.py263CODE
LOW…ages/core/src/repowise/core/ingestion/call_resolver.py138CODE
LOW…ages/core/src/repowise/core/ingestion/call_resolver.py560CODE
LOWpackages/core/src/repowise/core/ingestion/traverser.py600CODE
LOWpackages/core/src/repowise/core/ingestion/traverser.py667CODE
LOWpackages/core/src/repowise/core/ingestion/traverser.py686CODE
LOW…es/core/src/repowise/core/ingestion/change_detector.py119CODE
LOW…es/core/src/repowise/core/ingestion/change_detector.py260CODE
LOW…/repowise/core/ingestion/git_indexer/function_blame.py124CODE
LOW…ore/src/repowise/core/ingestion/git_indexer/indexer.py312CODE
LOW…epowise/core/ingestion/git_indexer/agent_provenance.py366CODE
LOW…rc/repowise/core/ingestion/git_indexer/file_history.py134CODE
LOW…rc/repowise/core/ingestion/git_indexer/file_history.py220CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py156CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py271CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py423CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py459CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py659CODE
LOW…/src/repowise/core/ingestion/external_systems/bazel.py80CODE
LOW…/src/repowise/core/ingestion/external_systems/bazel.py120CODE
LOW…e/src/repowise/core/ingestion/external_systems/pypi.py50CODE
LOW…/src/repowise/core/ingestion/external_systems/maven.py80CODE
LOW…s/core/src/repowise/core/ingestion/graph/_resolvers.py29CODE
LOW…s/core/src/repowise/core/ingestion/graph/_resolvers.py186CODE
LOW…s/core/src/repowise/core/ingestion/graph/_resolvers.py244CODE
LOW…s/core/src/repowise/core/ingestion/graph/_resolvers.py311CODE
LOW…s/core/src/repowise/core/ingestion/graph/_resolvers.py470CODE
LOW…src/repowise/core/ingestion/graph/_centrality_cache.py107CODE
LOW…ages/core/src/repowise/core/ingestion/graph/builder.py251CODE
LOW…core/src/repowise/core/ingestion/graph/_betweenness.py105CODE
LOW…rc/repowise/core/ingestion/lightweight_imports/lean.py40CODE
LOW…repowise/core/ingestion/lightweight_imports/clojure.py36CODE
336 more matches not shown…
Cross-File Repetition52 hits · 260 pts
SeverityFileLineSnippetContext
HIGHtests/unit/ingestion/parser/conftest.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_csharp.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_misc.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_swift.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_python.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_kotlin.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_java.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_cpp.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_ruby.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_scala.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_php.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_go.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_typescript.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_luau.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/test_rust.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/ingestion/parser/_helpers.py0unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typSTRING
HIGHtests/unit/server/mcp/conftest.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_search.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_why.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_risk.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_dead_code.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_config.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_context.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_overview.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/server/mcp/test_health.py0unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated teSTRING
HIGHtests/unit/test_providers/test_openai_provider.py0unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made.STRING
HIGHtests/unit/test_providers/test_kimi_provider.py0unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made.STRING
HIGHtests/unit/test_providers/test_deepseek_provider.py0unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made.STRING
HIGHtests/unit/test_providers/test_openrouter_provider.py0unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made.STRING
HIGH…es/core/src/repowise/core/pipeline/phases/ingestion.py0pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py)STRING
HIGHpackages/core/src/repowise/core/pipeline/phases/git.py0pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py)STRING
HIGH…s/core/src/repowise/core/pipeline/phases/generation.py0pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py)STRING
HIGH…ges/core/src/repowise/core/pipeline/phases/analysis.py0pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py)STRING
HIGH…kages/core/src/repowise/core/analysis/decision_gate.py0back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export kSTRING
HIGH…core/src/repowise/core/analysis/decision_provenance.py0back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export kSTRING
HIGH…/src/repowise/core/analysis/decision_semantic_match.py0back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export kSTRING
HIGH…/core/src/repowise/core/analysis/decision_extractor.py0back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export kSTRING
HIGH…/core/src/repowise/core/analysis/decision_evolution.py0back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export kSTRING
HIGH…src/repowise/core/workspace/extractors/grpc/dialect.py0return the contracts found in *ctx* (may be empty).STRING
HIGH…src/repowise/core/workspace/extractors/http/dialect.py0return the contracts found in *ctx* (may be empty).STRING
HIGH…src/repowise/core/workspace/extractors/data/dialect.py0return the contracts found in *ctx* (may be empty).STRING
HIGHpackages/core/src/repowise/core/distill/missed_mcp.py0only shell tool_use lines and result lines are worth parsing.STRING
HIGHpackages/core/src/repowise/core/distill/corrections.py0only shell tool_use lines and result lines are worth parsing.STRING
HIGHpackages/core/src/repowise/core/distill/missed.py0only shell tool_use lines and result lines are worth parsing.STRING
HIGHpackages/core/src/repowise/core/persistence/crud/git.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…src/repowise/core/persistence/crud/external_systems.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…/src/repowise/core/persistence/crud/knowledge_graph.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…s/core/src/repowise/core/persistence/crud/decisions.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…kages/core/src/repowise/core/persistence/crud/graph.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…ckages/core/src/repowise/core/persistence/crud/chat.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…kages/core/src/repowise/core/persistence/crud/pages.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
HIGH…/core/src/repowise/core/persistence/crud/repository.py0crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; STRING
Modern Structural Boilerplate187 hits · 191 pts
SeverityFileLineSnippetContext
LOWtests/unit/server/mcp/test_mcp_exclude_filter.py155def _set_excluded(monkeypatch, tmp_path, pattern: str) -> None:CODE
LOWtests/unit/cli/test_workspace_cmd.py463 def _setup(self, root: Path) -> None:CODE
LOWtests/unit/persistence/conftest.py58__all__ = ["insert_repo", "make_page_kwargs", "make_repo_kwargs"]CODE
LOWpackages/core/src/repowise/core/cancellation.py63def set_active_token(token: CancellationToken | None) -> None:CODE
LOWpackages/core/src/repowise/core/fs_walk.py44__all__ = ["PRUNED_DIRS", "PRUNED_DIRS_DERIVED", "WalkSnapshot", "iter_glob", "walk_repo"]CODE
LOWpackages/core/src/repowise/core/pipeline/checkpoint.py38__all__ = [CODE
LOWpackages/core/src/repowise/core/pipeline/__init__.py28__all__ = [CODE
LOWpackages/core/src/repowise/core/pipeline/modes.py20__all__ = ["OrchestratorMode"]CODE
LOW…es/core/src/repowise/core/pipeline/resume/rehydrate.py28__all__ = [CODE
LOW…ges/core/src/repowise/core/pipeline/resume/__init__.py23__all__ = [CODE
LOWpackages/core/src/repowise/core/upgrade/release.py172__all__ = [CODE
LOWpackages/core/src/repowise/core/upgrade/version.py49__all__ = [CODE
LOWpackages/core/src/repowise/core/upgrade/registry.py68__all__ = ["MIGRATIONS", "Migration", "migrations_between"]CODE
LOWpackages/core/src/repowise/core/upgrade/__init__.py28__all__ = [CODE
LOWpackages/core/src/repowise/core/upgrade/changelog.py144__all__ = [CODE
LOWpackages/core/src/repowise/core/upgrade/manager.py175__all__ = ["UpgradeContext", "apply_auto", "assess", "stamp"]CODE
LOWpackages/core/src/repowise/core/upgrade/verdict.py83__all__ = [CODE
LOW…/core/src/repowise/core/ingestion/python_local_refs.py49__all__ = ["extract_python_local_refs"]CODE
LOWpackages/core/src/repowise/core/ingestion/__init__.py34__all__ = [CODE
LOW…ckages/core/src/repowise/core/ingestion/parse_cache.py47__all__ = ["ParseCache", "parser_fingerprint"]CODE
LOW…e/src/repowise/core/ingestion/git_indexer/co_change.py35__all__ = ["compute_co_changes", "compute_co_changes_and_entropy"]CODE
LOW…core/src/repowise/core/ingestion/git_indexer/enrich.py27__all__ = [CODE
LOW…ore/src/repowise/core/ingestion/git_indexer/records.py13__all__ = [CODE
LOW…re/src/repowise/core/ingestion/git_indexer/__init__.py54__all__ = [CODE
LOW…/repowise/core/ingestion/git_indexer/function_blame.py33__all__ = [CODE
LOW…re/src/repowise/core/ingestion/git_indexer/backfill.py32__all__ = ["BACKFILL_BLAME_PHASE", "BACKFILL_PHASE", "backfill_blame", "backfill_full_tier"]CODE
LOW…c/repowise/core/ingestion/git_indexer/prior_defects.py39__all__ = ["compute_prior_defects"]CODE
LOW…ore/src/repowise/core/ingestion/git_indexer/indexer.py40__all__ = ["GitIndexer"]CODE
LOW…epowise/core/ingestion/git_indexer/agent_provenance.py69__all__ = [CODE
LOW…rc/repowise/core/ingestion/git_indexer/file_history.py77__all__ = ["index_file", "new_meta"]CODE
LOW…/core/src/repowise/core/ingestion/git_indexer/tiers.py15__all__ = ["GitIndexTier"]CODE
LOW…/src/repowise/core/ingestion/external_systems/cmake.py778__all__ = [CODE
LOW…c/repowise/core/ingestion/external_systems/__init__.py24__all__ = [CODE
LOW…/src/repowise/core/ingestion/external_systems/bazel.py316__all__ = [CODE
LOW…kages/core/src/repowise/core/ingestion/graph/_edges.py69 def update_co_change_edges(self, updated_meta: dict, min_count: int = 3) -> None:CODE
LOW…src/repowise/core/ingestion/graph/_centrality_cache.py39__all__ = ["CentralityCache", "subgraph_signature"]CODE
LOW…ges/core/src/repowise/core/ingestion/graph/__init__.py41__all__ = ["GraphBuilder", "_stem_priority", "build_stem_map"]CODE
LOW…ages/core/src/repowise/core/ingestion/graph/builder.py121 def set_tsconfig_resolver(self, resolver: Any) -> None:CODE
LOW…epowise/core/ingestion/lightweight_imports/__init__.py54__all__ = [CODE
LOW…core/src/repowise/core/ingestion/languages/__init__.py15__all__ = ["REGISTRY", "LanguageSpec"]CODE
LOW…rc/repowise/core/ingestion/languages/specs/__init__.py133__all__ = ["ALL_SPECS"]CODE
LOW…rc/repowise/core/ingestion/framework_edges/__init__.py106__all__ = [CODE
LOW…src/repowise/core/ingestion/resolvers/kotlin_gradle.py18__all__ = [CODE
LOW…core/src/repowise/core/ingestion/resolvers/__init__.py78__all__ = [CODE
LOW…src/repowise/core/ingestion/resolvers/cpp_workspace.py446__all__ = [CODE
LOW…c/repowise/core/ingestion/resolvers/dotnet/__init__.py20__all__ = [CODE
LOW…/src/repowise/core/ingestion/dynamic_hints/__init__.py6__all__ = ["HintRegistry", "DynamicEdge", "DynamicHintExtractor"]CODE
LOW…ore/src/repowise/core/ingestion/dynamic_hints/_walk.py26__all__ = ["PRUNED_DIRS", "iter_glob"]CODE
LOW…ore/src/repowise/core/ingestion/extractors/__init__.py10__all__ = [CODE
LOW…epowise/core/ingestion/extractors/heritage/__init__.py120__all__ = ["HERITAGE_EXTRACTORS", "extract_heritage", "heritage_node_types_for"]CODE
LOW…epowise/core/ingestion/extractors/bindings/__init__.py68__all__ = [CODE
LOWpackages/core/src/repowise/core/analysis/kg_curation.py152__all__ = [CODE
LOWpackages/core/src/repowise/core/analysis/kg_curation.py162logger = logging.getLogger(__name__)CODE
LOW…/core/src/repowise/core/analysis/dead_code/__init__.py37__all__ = [CODE
LOW…ges/core/src/repowise/core/analysis/health/__init__.py18__all__ = [CODE
LOW…src/repowise/core/analysis/health/dataflow/__init__.py68__all__ = [CODE
LOW…ise/core/analysis/health/dataflow/dialects/__init__.py47__all__ = [CODE
LOW…c/repowise/core/analysis/health/biomarkers/__init__.py8__all__ = [CODE
LOW…src/repowise/core/analysis/health/complexity/walker.py67__all__ = [CODE
LOW…c/repowise/core/analysis/health/complexity/__init__.py18__all__ = [CODE
127 more matches not shown…
Cross-Language Confusion30 hits · 182 pts
SeverityFileLineSnippetContext
HIGHtests/unit/ingestion/test_jvm_type_refs.py225 "package com.foo\nclass Holder { val r: Repo? = null }\n",CODE
HIGHtests/unit/ingestion/test_ts_reexport_dead_code.py99 "pkg/src/comp/search-bar.tsx": "export function SearchBar() {\n return null;\n}\n",CODE
HIGHtests/unit/ingestion/test_ts_reexport_dead_code.py116 "pkg/src/widget.tsx": "export function Widget() {\n return null;\n}\n",CODE
HIGHtests/unit/ingestion/test_ts_framework_edges.py109 "export function getUserHandler() { return null; }\n"CODE
HIGHtests/unit/health/test_dataflow_langs.py1010 out.push(r);CODE
HIGHtests/unit/health/test_dataflow_langs.py369 results.push(r);CODE
HIGHtests/unit/health/test_dataflow_langs.py904 results.push(*r);CODE
HIGHtests/unit/health/test_complexity_walker.py126 if (req.query.active && req.user) {CODE
HIGHtests/unit/health/test_ff_track_aefg_perf.py220 b" acc.push(x);\n"CODE
HIGHtests/unit/health/test_perf_dialects.py512 push = "function f(xs){ return xs.reduce((acc, x) => { acc.push(x); return acc; }, []); }"CODE
HIGHtests/unit/health/test_shell_complexity.py26 assert _ccn("run || exit 1") == 2CODE
HIGHtests/unit/health/test_shell_complexity.py29 assert _ccn("a && b || c") == 3CODE
HIGHtests/unit/health/test_shell_complexity.py29 assert _ccn("a && b || c") == 3CODE
HIGHtests/unit/health/test_dataflow_cfg.py382 if (dead && hot) return "unified";STRING
HIGHtests/unit/health/test_perf_promotion_engine.py163 out.push(r);CODE
HIGHtests/unit/workspace/test_contracts.py431 router.push("/home");CODE
HIGHtests/unit/distill/test_rewrite_hook.py97 "pytest && echo done",CODE
HIGHtests/unit/distill/test_rewrite_hook.py98 "pytest || true",CODE
HIGHtests/unit/distill/test_corrections.py377 ("cd /tmp && ls -la", "ls"),CODE
HIGH…e/analysis/health/biomarkers/array_spread_in_reduce.py5The fix is to mutate-and-return the accumulator (``a.push(x); return a``) or useSTRING
HIGHpackages/core/src/repowise/core/persistence/search.py5- PostgreSQL: GIN index on ``to_tsvector('english', title || content)``.STRING
HIGH…src/repowise/server/mcp_server/tool_context/targets.py517 sym = sym_matches[0] # type: ignore[possibly-undefined]CODE
HIGH…src/repowise/server/mcp_server/tool_context/targets.py541 if len(sym_matches) > 1: # type: ignore[possibly-undefined]CODE
HIGH…src/repowise/server/mcp_server/tool_context/targets.py545 for m in sym_matches[1:5] # type: ignore[possibly-undefined]CODE
HIGHpackages/cli/src/repowise/cli/hooks.py65 ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || exit 0CODE
HIGHpackages/cli/src/repowise/cli/hooks.py67 HEAD=$(git rev-parse HEAD 2>/dev/null) || HEAD=""CODE
HIGHpackages/cli/src/repowise/cli/hooks.py68 TS=$(date +%s 2>/dev/null) || TS=""CODE
HIGHpackages/cli/src/repowise/cli/hooks.py71 > "$ROOT/.repowise/.update.queued" 2>/dev/null || trueCODE
HIGHpackages/cli/src/repowise/cli/hooks.py76 "$(date 2>/dev/null)" "$HEAD"CODE
HIGHpackages/cli/src/repowise/cli/hooks.py77 } >> "$LOG" 2>/dev/null || trueCODE
Over-Commented Block150 hits · 144 pts
SeverityFileLineSnippetContext
LOWtests/unit/dead_code/test_interfaces.py161 # so the strongest assertion is "no spurious COM clamp masked theCOMMENT
LOWdocs/design/no-raw-hex-check.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/kg_validate/kg_checks.py21COMMENT
LOWscripts/kg_validate/kg_checks.py41SMALL_REPO_FILES = 10COMMENT
LOWpackages/ui/scripts/no-raw-hex-check.sh1#!/usr/bin/env bashCOMMENT
LOWpackages/ui/scripts/ui-gates.sh1#!/usr/bin/env bashCOMMENT
LOWpackages/ui/src/docs/docs-tree.tsx341 deterministic.push(page);COMMENT
LOWpackages/ui/src/docs/docs-tree.tsx401 return best;COMMENT
LOWpackages/ui/src/docs/reader-persona.ts1// Reader personas — a client-side lens that filters which sections of aCOMMENT
LOWpackages/core/src/repowise/core/rate_limiter.py41COMMENT
LOW…es/core/src/repowise/core/pipeline/resume/rehydrate.py61COMMENT
LOW…es/core/src/repowise/core/pipeline/phases/ingestion.py61# Process-pool worker (module-level — must be picklable)COMMENT
LOW…es/core/src/repowise/core/pipeline/phases/ingestion.py401 logger.warning("dynamic_hints_failed", error=str(hints_exc))COMMENT
LOWpackages/core/src/repowise/core/ingestion/parser.py381 node_type = def_node.typeCOMMENT
LOW…ges/core/src/repowise/core/ingestion/parser_helpers.py641 return textCOMMENT
LOWpackages/core/src/repowise/core/ingestion/traverser.py101 "Builds",COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py61_MIN_MESSAGE_LEN = 12COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py81# Per-file persisted contributor / commit fan-out. Previously hard-codedCOMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py121# meaningfully blowing up wall-clock time (single `git log` call).COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py161 ),COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py321# Co-change temporal decay: half-life ~125 days (lambda for exp(-t/tau)).COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py341# threshold the health biomarkers already treat as hotspot-equivalent.COMMENT
LOW…/src/repowise/core/ingestion/git_indexer/_constants.py361# Files larger than this skip git blame. blame is O(lines) and blocks theCOMMENT
LOW…ore/src/repowise/core/ingestion/git_indexer/records.py21 "_parse_commit_record",COMMENT
LOW…ages/core/src/repowise/core/ingestion/graph/builder.py401COMMENT
LOW…ages/core/src/repowise/core/ingestion/graph/builder.py421 self._resolve_csharp_partials(ctx, progress=progress)COMMENT
LOW…ges/core/src/repowise/core/ingestion/languages/spec.py41COMMENT
LOW…ges/core/src/repowise/core/ingestion/languages/spec.py61 # entry_stems: the flag set is deliberately tighter than the tour'sCOMMENT
LOW…ges/core/src/repowise/core/ingestion/languages/spec.py81 # it never faces the test suite in the tour.COMMENT
LOW…ges/core/src/repowise/core/ingestion/languages/spec.py101 suite_anchor_stems: tuple[str, ...] = ()COMMENT
LOW…e/src/repowise/core/ingestion/framework_edges/typo3.py21COMMENT
LOW…ges/core/src/repowise/core/ingestion/resolvers/luau.py41from .context import ResolverContextCOMMENT
LOW…src/repowise/core/ingestion/resolvers/jvm_workspace.py41 re.MULTILINE,COMMENT
LOW…owise/core/ingestion/resolvers/dotnet/namespace_map.py21COMMENT
LOW…core/src/repowise/core/ingestion/dynamic_hints/xaml.py101COMMENT
LOW…re/src/repowise/core/ingestion/dynamic_hints/dotnet.py61COMMENT
LOWpackages/core/src/repowise/core/analysis/kg_curation.py61# per-extension; fixture files hold test data, they never face the suite.COMMENT
LOWpackages/core/src/repowise/core/analysis/kg_curation.py441COMMENT
LOW…core/src/repowise/core/analysis/dead_code/constants.py101 # gRPC generated artifacts.COMMENT
LOW…core/src/repowise/core/analysis/dead_code/constants.py121 # `[DllImport]`-mediated calls, never via a `using` directive thatCOMMENT
LOW…core/src/repowise/core/analysis/dead_code/constants.py501 "**/fuzz/fuzz_targets/**/*.rs",COMMENT
LOW…core/src/repowise/core/analysis/dead_code/constants.py541 "*zz_generated*.go",COMMENT
LOW…core/src/repowise/core/analysis/dead_code/constants.py941# locally-named Group instance, e.g.::COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py61)COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py121 "Main", # C#, Java, Kotlin, Go, Rust, Swift, ScalaCOMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py181 "TEST_CLASS",COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py681COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py741 if sym.get("visibility") != "public":COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py841 # node with every type name referenced inside its ownCOMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py881COMMENT
LOW…/core/src/repowise/core/analysis/dead_code/analyzer.py921 # so the demo doesn't ship public-API interfaces asCOMMENT
LOW…c/repowise/core/analysis/dead_code/contract_methods.py61# Method names reserved by JVM ``Object`` / ``Serializable`` / ``Comparable`` /COMMENT
LOW…c/repowise/core/analysis/dead_code/contract_methods.py101# limit). Listed explicitly so a single set lookup covers the case.COMMENT
LOW…kages/core/src/repowise/core/analysis/health/models.py81 # refactoring package here (it imports this module).COMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py61 Severity.HIGH: 1.2,COMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py81# non-predictive at T0 are floored to 0.5 (kept as mild maintainability/parityCOMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py101 "god_class": 1.13,COMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py121 "primitive_obsession": 0.5,COMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py181# score into dimensions is purely additive: ``maintainability`` andCOMMENT
LOW…ages/core/src/repowise/core/analysis/health/scoring.py321# conservative ceiling for this first release (a file loses at most twoCOMMENT
90 more matches not shown…
Hallucination Indicators9 hits · 110 pts
SeverityFileLineSnippetContext
CRITICALtests/unit/test_providers/test_openai_provider.py270 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_openai_provider.py285 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_openai_provider.py296 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_kimi_provider.py176 mock_client.return_value.chat.completions.create.assert_called_once()CODE
CRITICALtests/unit/test_providers/test_kimi_provider.py273 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_deepseek_provider.py170 mock_client.return_value.chat.completions.create.assert_called_once()CODE
CRITICALtests/unit/test_providers/test_deepseek_provider.py196 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_openrouter_provider.py339 mock_client.return_value.chat.completions.create.assert_not_called()CODE
CRITICALtests/unit/test_providers/test_openrouter_provider.py320 mock_client.return_value.chat.completions.create.assert_not_called()CODE
Modern AI Meta-Vocabulary35 hits · 110 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit/server/mcp/test_code_rationale.py212 "# The symbol cap is 40 because dense files flood the context window.\n"STRING
MEDIUMdocs/architecture/ARCHITECTURE.md126│ │ │ │ ├── context_assembler.py# context assembly (RAG + graph + git + source)CODE
MEDIUMdocs/architecture/chat.md187. [Agentic Loop](#7-agentic-loop)CODE
MEDIUMdocs/architecture/language-support.md115 parser.py # ASTParser (language-agnostic orchestration)CODE
MEDIUMpackages/core/src/repowise/core/upgrade/version.py46#: state.json key holding the embedding model id the vectors were built with.COMMENT
MEDIUMpackages/core/src/repowise/core/upgrade/manager.py94 # be format-current yet hold vectors from a different embedding model (#426),COMMENT
MEDIUM…re/src/repowise/core/ingestion/git_indexer/backfill.py37# orchestration; named so callers can distinguish a blame-only backfill fromCOMMENT
MEDIUM…re/src/repowise/core/ingestion/dynamic_hints/dotnet.py101 # in microservice repos, so we emit dynamic edges to *every*COMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1634 # Recognised scaffolding earns a real role instead of a bare nameCOMMENT
MEDIUM…core/src/repowise/core/analysis/decisions/extractor.py1278 # Anti-hallucination substring gate (Phase 1D)COMMENT
MEDIUM…core/src/repowise/core/analysis/decisions/extractor.py97 # anti-hallucination substring gate (Phase 1D).COMMENT
MEDIUM…core/src/repowise/core/analysis/decisions/extractor.py1465 # Raw per-source pool, then the anti-hallucination gate.COMMENT
MEDIUM…ore/src/repowise/core/analysis/decisions/provenance.py105# Anti-hallucination substring gateCOMMENT
MEDIUMpackages/core/src/repowise/core/workspace/update.py512# Workspace update orchestrationCOMMENT
MEDIUMpackages/core/src/repowise/core/persistence/models.py649 # Verification (anti-hallucination gate, Phase 1D). Aggregate over theCOMMENT
MEDIUM…ages/core/src/repowise/core/generation/interlinking.py30# qualified names. The same expression used by the hallucinationCOMMENT
MEDIUM…ages/core/src/repowise/core/generation/interlinking.py169# Top-level orchestrationCOMMENT
MEDIUMpackages/core/src/repowise/core/generation/models.py136 # RAG search is bypassed entirely until the vector store has at leastCOMMENT
MEDIUMpackages/core/src/repowise/core/generation/models.py240 # cross-run reuse can key on it even when the rendered prompt (RAGCOMMENT
MEDIUM…/core/src/repowise/core/generation/well_known_files.py21# scaffolding that shows up in almost every repo, where the filename alone isCOMMENT
MEDIUM…re/src/repowise/core/generation/page_generator/core.py193 # generate_all — orchestration (delegates to orchestrate.py)COMMENT
MEDIUM…re/src/repowise/core/generation/page_generator/core.py264 # RAG context: query vector store for related pages (B1).COMMENT
MEDIUM…re/src/repowise/core/generation/page_generator/core.py422 # rendered prompt embeds RAG context rebuilt fresh each run, so theCOMMENT
MEDIUM…repowise/core/generation/page_generator/orchestrate.py454 # next level's RAG search depends on these landing in the store.COMMENT
MEDIUM…repowise/core/generation/page_generator/orchestrate.py455 # Embedding is a RAG enhancement, not load-bearing, so a failure mustCOMMENT
MEDIUM…repowise/core/generation/page_generator/orchestrate.py401 # embedder round-trip and the level drains before the next level's RAGCOMMENT
MEDIUM…/src/repowise/core/generation/page_generator/levels.py157 # Store too small for useful RAG — the per-page gate wouldCOMMENT
MEDIUMpackages/server/src/repowise/server/app.py107 # Honour the indexed embedding model so serve doesn't silently rebuildCOMMENT
MEDIUMpackages/server/src/repowise/server/routers/chat.py152 # agentic loop internally (e.g. Gemini for thought_signature).COMMENT
MEDIUM…rver/src/repowise/server/mcp_server/_answer_context.py174 return "## Context scaffolding\n\n" + "\n".join(f"- {s}" for s in sections) + "\n"CODE
MEDIUM…ckages/server/src/repowise/server/mcp_server/_state.py26# initialise we still fall back to MockEmbedder (so non-RAG tools stay up) butCOMMENT
MEDIUM…s/server/src/repowise/server/mcp_server/tool_symbol.py70# can never blow up the agent's context window. Set to ~18 KB of source:COMMENT
MEDIUM…r/src/repowise/server/mcp_server/tool_answer/config.py123# (b) synthesis hallucination on tangential top hits.COMMENT
MEDIUM…r/src/repowise/server/mcp_server/tool_answer/answer.py850 # call, zero LLM cost, and cannot hallucinate. Not cached: extraction isCOMMENT
MEDIUM…r/src/repowise/server/mcp_server/tool_answer/answer.py908 # dropped before formatting, so the prompt never carries hollow scaffolding.COMMENT
AI Slop Vocabulary37 hits · 103 pts
SeverityFileLineSnippetContext
MEDIUMpackage-lock.json15494 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
LOWtests/unit/ingestion/test_typescript_resolver.py296 # resolver's job upstream; here we just return None.COMMENT
MEDIUM…sts/unit/ingestion/test_git_commit_rows_integration.py85 # robust assertion; the precise boundary is covered by the unit test.)COMMENT
MEDIUMtests/unit/health/test_dataflow_reaching.py358 # compute_def_use + compute_reaching can be driven without the file harness.STRING
MEDIUMtests/unit/server/test_mcp_decision_graph.py113 content="# Test Repo\n\nA comprehensive test repository.",CODE
MEDIUMtests/unit/server/test_job_executor.py187 """Unknown / missing / malformed style resolves to the comprehensive default."""STRING
MEDIUMtests/unit/server/mcp/conftest.py103 content="# Test Repo\n\nA comprehensive test repository.",CODE
MEDIUMtests/unit/server/mcp/test_health.py78 # Per-file leverage: (8 - score) * nloc, 0 once healthy.COMMENT
MEDIUMtests/unit/generation/test_layer_pages.py347 # Reuse the level-5 fixture harness verbatim.COMMENT
MEDIUMscripts/kg_validate/matrix.toml184# resolution at harness-friendly size.COMMENT
MEDIUMscripts/kg_validate/matrix.toml191# --- Structural-mode batch (no resolver; harness-only acceptance) ---COMMENT
MEDIUMpackages/ui/src/health/findings-view.tsx208 // not group size, so "Leverage" sorted stays leverage-led inside and out.COMMENT
MEDIUM…/repowise/core/ingestion/git_indexer/function_blame.py226 # parser robust to out-of-order line emission from --incremental.COMMENT
MEDIUM…ges/core/src/repowise/core/ingestion/languages/spec.py50 # Consumed by the KG validation harness (density floors, honesty checks);COMMENT
MEDIUM…e/src/repowise/core/ingestion/extractors/visibility.py193 # nodes — but textual matching is robust across grammar versions.COMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1087# The harness signal is "this test file *depends on* that one" — typeCOMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py78# harness uses, calibrated on the 13-repo matrix: express (1.89, broken CJSCOMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1173 # consumers (UI, harness) can see the degradation level.COMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1238 # Shared test harness files — base classes and helpers imported by twoCOMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1278 # Drop harness files unless that would leave nothing. OneCOMMENT
MEDIUMpackages/core/src/repowise/core/analysis/kg_curation.py1279 # single-target import from another test file is already harnessCOMMENT
MEDIUM…core/src/repowise/core/analysis/dead_code/constants.py493 # `#[cfg(test)] mod tests;` and the Cargo test harness, not production imports.COMMENT
MEDIUM…/core/src/repowise/core/analysis/dead_code/analyzer.py167 # ---- libFuzzer / Honggfuzz / AFL fuzz harness entries ------------COMMENT
MEDIUM…se/core/analysis/health/biomarkers/untested_hotspot.py55 # Not enough leverage to flag — would over-trigger onCOMMENT
MEDIUM…wise/core/analysis/health/complexity/class_analysis.py262 # keys off that index directly (robust to duplicate method names, which aCOMMENT
MEDIUMpackages/core/src/repowise/core/distill/corrections.py50#: stringly (cancellations, rejections, permission denials, harness errors)COMMENT
MEDIUMpackages/core/src/repowise/core/distill/corrections.py221 # rejections, and harness errors are neither failure nor success.COMMENT
MEDIUMpackages/core/src/repowise/core/generation/models.py152 # ``generation.styles.resolve_style``. "comprehensive" (default) is inert andCOMMENT
MEDIUM…re/src/repowise/core/generation/page_generator/core.py151 # Resolve the wiki style once. "comprehensive" (default) is inert, so thisCOMMENT
MEDIUM…re/src/repowise/core/generation/page_generator/core.py603 # styles, so default ("comprehensive") pages keep byte-identical metadata.COMMENT
MEDIUM…s/core/src/repowise/core/generation/styles/registry.py33# Built-in styles (see WIKI_STYLES_PLAN.md D1). ``comprehensive`` is inert byCOMMENT
MEDIUM…s/core/src/repowise/core/generation/styles/registry.py160 """Resolve a style name to a :class:`StyleSpec`, defaulting to ``comprehensive``.STRING
MEDIUM…s/server/src/repowise/server/mcp_server/tool_health.py591 # impact_delta sort buries the highest-leverage plans — a Split File on aCOMMENT
MEDIUM…s/server/src/repowise/server/mcp_server/tool_health.py593 # per-file delta, so file leverage has to lead. ``refactoring_plans_total``COMMENT
MEDIUM…src/repowise/server/mcp_server/tool_context/targets.py188 # counts are small, so picking in Python is robust and cheap.COMMENT
LOWpackages/cli/src/repowise/cli/commands/costs_cmd.py127 # would just return an empty result and confuse the user.COMMENT
LOW…ages/cli/src/repowise/cli/commands/init_cmd/command.py893 # resolve_provider / interactive provider selection may have just setCOMMENT
Structural Annotation Overuse48 hits · 92 pts
SeverityFileLineSnippetContext
LOWplugins/claude-code/commands/init.md10## Step 1: Check if repowise is installedCOMMENT
LOWplugins/claude-code/commands/init.md27## Step 2: Check if this repo is already indexedCOMMENT
LOWplugins/claude-code/commands/init.md38## Step 3: Ask about modeCOMMENT
LOWplugins/claude-code/commands/init.md103## Step 4: Provider selection (full mode only)COMMENT
LOWplugins/claude-code/commands/init.md136## Step 5: ExclusionsCOMMENT
LOWplugins/claude-code/commands/init.md144## Step 6: Run itCOMMENT
LOWplugins/claude-code/commands/init.md150## Step 7: Post-setupCOMMENT
LOWwebsite/getting-started.md97### Step 1: Install the pluginCOMMENT
LOWwebsite/getting-started.md106### Step 2: Index your repoCOMMENT
LOWwebsite/getting-started.md171### Step 1: Install repowiseCOMMENT
LOWwebsite/getting-started.md177### Step 2: Set your API keyCOMMENT
LOWwebsite/getting-started.md185### Step 3: Index your repoCOMMENT
LOWwebsite/getting-started.md194### Step 4: Connect Claude CodeCOMMENT
LOWwebsite/getting-started.md210### Step 1: Install repowise and CodexCOMMENT
LOWwebsite/getting-started.md219### Step 2: Index your repoCOMMENT
LOWwebsite/getting-started.md228### Step 3: Start CodexCOMMENT
LOWwebsite/getting-started.md242### Step 1: Install and set upCOMMENT
LOWwebsite/getting-started.md249### Step 2: Index your repoCOMMENT
LOWwebsite/getting-started.md256### Step 3: Start the web dashboardCOMMENT
LOWwebsite/getting-started.md264### Step 4: Start the MCP server (optional)COMMENT
LOWtests/integration/test_mcp.py351 # Step 1: Get overviewCOMMENT
LOWtests/integration/test_mcp.py358 # Step 2: Drill into auth module via get_context.COMMENT
LOWtests/integration/test_mcp.py367 # Step 3: Get file contextCOMMENT
LOWtests/integration/test_mcp.py374 # Step 4: Look up a symbolCOMMENT
LOWdocs/architecture/language-support.md140### Step 1: Add a `LanguageSpec` moduleCOMMENT
LOWdocs/architecture/language-support.md174### Step 2: Add the `LanguageTag`COMMENT
LOWdocs/architecture/language-support.md181### Step 3: Write a tree-sitter query fileCOMMENT
LOWdocs/architecture/language-support.md201### Step 4: Add a `LanguageConfig` entryCOMMENT
LOWdocs/architecture/language-support.md222### Step 5: Add the tree-sitter grammar dependencyCOMMENT
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py131 # Step 1: try path alias entries.COMMENT
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py141 # Step 2: baseUrl-only fallback.COMMENT
LOWpackages/core/src/repowise/core/workspace/update.py548 # Step 1: Determine which repos are staleCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py557 # Step 0: Sync ``last_commit_at_index`` from each repo's state.json soCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py741 # Step 3: Save workspace config with updated timestampsCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py745 # Step 4: Run cross-repo hooks (Phase 3/4 placeholder)COMMENT
LOWpackages/core/src/repowise/core/workspace/update.py617 # Step 2: Update stale repos (parallel with concurrency limit)COMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py411 # Step 1: Parse git logs for all reposCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py418 # Step 2: Drop noise files, then commits left with nothing, thenCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py434 # Step 3: Group all commits by author identity, tagged with repo aliasCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py440 # Step 4: Walk each author's sessions, accumulating per-file activityCOMMENT
LOW…s/core/src/repowise/core/generation/knowledge_graph.py327 # Step 1: main entry pointCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py454 # Step 1: Select repos to indexCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py463 # Step 2: Select primary repoCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py548 # Step 3: Create workspace configCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py629 # Step 5: Cross-repo analysis (co-changes, package deps, contracts)COMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py632 # Step 6: Register primary repo with configured editor clientsCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py638 # Step 7: Completion summaryCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py566 # Step 4: Index each selected repo (always generate_docs=False; generation is separate)COMMENT
Verbosity Indicators23 hits · 44 pts
SeverityFileLineSnippetContext
LOWtests/integration/test_mcp.py351 # Step 1: Get overviewCOMMENT
LOWtests/integration/test_mcp.py358 # Step 2: Drill into auth module via get_context.COMMENT
LOWtests/integration/test_mcp.py367 # Step 3: Get file contextCOMMENT
LOWtests/integration/test_mcp.py374 # Step 4: Look up a symbolCOMMENT
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py131 # Step 1: try path alias entries.COMMENT
LOW…/core/src/repowise/core/ingestion/tsconfig_resolver.py141 # Step 2: baseUrl-only fallback.COMMENT
LOWpackages/core/src/repowise/core/workspace/update.py548 # Step 1: Determine which repos are staleCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py557 # Step 0: Sync ``last_commit_at_index`` from each repo's state.json soCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py741 # Step 3: Save workspace config with updated timestampsCOMMENT
LOWpackages/core/src/repowise/core/workspace/update.py745 # Step 4: Run cross-repo hooks (Phase 3/4 placeholder)COMMENT
LOWpackages/core/src/repowise/core/workspace/update.py617 # Step 2: Update stale repos (parallel with concurrency limit)COMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py411 # Step 1: Parse git logs for all reposCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py418 # Step 2: Drop noise files, then commits left with nothing, thenCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py434 # Step 3: Group all commits by author identity, tagged with repo aliasCOMMENT
LOWpackages/core/src/repowise/core/workspace/cross_repo.py440 # Step 4: Walk each author's sessions, accumulating per-file activityCOMMENT
LOW…s/core/src/repowise/core/generation/knowledge_graph.py327 # Step 1: main entry pointCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py454 # Step 1: Select repos to indexCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py463 # Step 2: Select primary repoCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py548 # Step 3: Create workspace configCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py629 # Step 5: Cross-repo analysis (co-changes, package deps, contracts)COMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py632 # Step 6: Register primary repo with configured editor clientsCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py638 # Step 7: Completion summaryCOMMENT
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py566 # Step 4: Index each selected repo (always generate_docs=False; generation is separate)COMMENT
Fake / Example Data34 hits · 44 pts
SeverityFileLineSnippetContext
LOWtests/unit/ingestion/test_author_identity.py63 assert owner_key("Jane Doe", None) == "name:Jane Doe"CODE
LOWtests/unit/ingestion/test_author_identity.py83 ("Jane Doe", "jane@company.com"),CODE
LOWtests/unit/ingestion/test_author_identity.py84 ("Jane Doe", "12345+jane@users.noreply.github.com"),CODE
LOWtests/unit/ingestion/test_author_identity.py87 assert resolve("Jane Doe", "jane@company.com") == "jane@company.com"CODE
LOWtests/unit/ingestion/test_author_identity.py88 assert resolve("Jane Doe", "12345+jane@users.noreply.github.com") == "jane@company.com"CODE
LOWtests/unit/ingestion/test_author_identity.py115 ("Jane Doe", "jane@company.com"),CODE
LOWtests/unit/ingestion/test_agent_provenance.py139 prov = _classify(an="Jane Doe", ae="jane@anthropic.com")CODE
LOWtests/unit/workspace/test_update.py110 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/unit/workspace/test_incremental_update.py43 _git(repo, "config", "user.email", "test@test.com")CODE
LOWtests/unit/workspace/test_cross_repo.py60 author_name="Jane Doe",CODE
LOWtests/unit/server/test_stats_contributors.py45 _commit("a1", "Jane Doe", "jane@company.com", 1000),CODE
LOWtests/unit/server/test_stats_contributors.py46 _commit("a2", "Jane Doe", "12345+jane@users.noreply.github.com", 1100),CODE
LOWtests/unit/server/test_stats_contributors.py47 _commit("a3", "Jane Doe", "999+jane@users.noreply.github.com", 1200),CODE
LOWtests/unit/server/test_stats_contributors.py71 _commit("a1", "Jane Doe", "jane@company.com", 1_600_000_000),CODE
LOWtests/unit/server/test_stats_contributors.py72 _commit("a2", "Jane Doe", "jane@company.com", 1_600_086_400),CODE
LOWtests/unit/server/test_stats_superlatives.py26 "author_name": "Jane Doe",CODE
LOWtests/unit/server/test_owners.py208 primary_owner_name="Jane Doe",CODE
LOWtests/unit/server/test_owners.py211 [{"name": "Jane Doe", "email": "jane@company.com", "commit_count": 10}]CODE
LOWtests/unit/server/test_owners.py221 primary_owner_name="Jane Doe",CODE
LOWtests/unit/server/test_owners.py226 "name": "Jane Doe",CODE
LOWtests/unit/server/test_owners.py243 assert jane.name == "Jane Doe"CODE
LOWtests/unit/server/test_stats_signals.py31 "author_name": "Jane Doe",CODE
LOWtests/unit/server/mcp/test_ff_mcp_payload_overview.py26 "primary_owner_name": "Jane Doe",CODE
LOWtests/unit/server/mcp/test_ff_mcp_payload_overview.py53 assert top["name"] == "Jane Doe"CODE
LOWtests/unit/server/mcp/test_ff_mcp_payload_overview.py63 assert _owner_display_name("Jane Doe", "jane.doe@example.com") == "Jane Doe"CODE
LOWtests/unit/cli/test_update_e2e.py36 _git(repo, "config", "user.email", "test@test.com")CODE
LOWtests/unit/test_providers/test_gemini_provider.py206 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py220 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py231 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py242 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py137 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py149 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py165 provider = GeminiProvider(api_key="fake-key")CODE
LOWtests/unit/test_providers/test_gemini_provider.py185 provider = GeminiProvider(api_key="fake-key")CODE
Self-Referential Comments7 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit/workspace/test_registry.py35 # Create an empty wiki.db — init_db will create tables on first accessCOMMENT
MEDIUMtests/unit/cli/test_workspace_cmd.py312 # Create a git repo inside the workspace rootCOMMENT
MEDIUMtests/unit/cli/test_workspace_cmd.py192 # Create a subdirectory that has no workspace config anywhere in its treeCOMMENT
MEDIUMtests/integration/test_dead_code_integration.py68 # Create a mock providerCOMMENT
MEDIUMtests/integration/test_git_intelligence_integration.py32 # Create a temp dir with a file so GitIndexer has something to look at,COMMENT
MEDIUM…kages/server/src/repowise/server/mcp_server/_server.py386# Create the MCP serverCOMMENT
MEDIUM…ages/cli/src/repowise/cli/commands/init_cmd/command.py963 # Create the engine, session factory, and repository row *before*COMMENT
Overly Generic Function Names15 hits · 18 pts
SeverityFileLineSnippetContext
LOWtests/unit/pipeline/test_ingestion_parse_cache.py17 (repo / "util.py").write_text("def helper(x):\n return x + 1\n", encoding="utf-8")CODE
LOWtests/unit/pipeline/test_ingestion_parse_cache.py52 "def helper(x):\n return x * 3\n",CODE
LOWtests/unit/ingestion/test_resolver_merged_index.py62 "lib.py": ("python", "def helper():\n return 1\n"),CODE
LOWtests/unit/ingestion/test_resolver_merged_index.py84 "a_lib.py": ("python", "def helper():\n return 'a'\n"),CODE
LOWtests/unit/ingestion/test_resolver_merged_index.py85 "z_lib.py": ("python", "def helper():\n return 'z'\n"),CODE
LOWtests/unit/ingestion/test_resolver_merged_index.py152 "class Other:\n def helper(self):\n return 1\n"CODE
LOWtests/unit/ingestion/test_traverser.py81 (tmp_path / "src" / "utils.py").write_text("def helper(): pass")CODE
LOWtests/unit/ingestion/test_single_query_pass.py32def helper(arg: str) -> str:CODE
LOWtests/unit/ingestion/test_subgraph_cache.py40 gb.add_file(_parsed(tmp_path, "b.py", "def helper():\n return 1\n"))CODE
LOWtests/unit/ingestion/test_centrality_cache.py20_UTIL = "def helper(x):\n return x + 1\n"CODE
LOWtests/unit/ingestion/test_metrics_precompute.py36 "b.py": "def helper():\n return 1\n",CODE
LOWtests/unit/ingestion/test_parse_cache.py24 "def helper(x):\n return x + 1\n",CODE
LOWtests/unit/ingestion/test_parse_cache.py82 "def helper(x):\n return x * 2\n\n\ndef extra(y):\n return y\n",CODE
LOWtests/unit/ingestion/parser/test_scala.py21 private def helper(): Unit = {}CODE
LOWtests/unit/health/test_perf_crossfn.py99 b"def helper(session, r):\n"CODE
AI Structural Patterns19 hits · 16 pts
SeverityFileLineSnippetContext
LOWtests/unit/health/test_coverage_biomarkers.py15CODE
LOWtests/unit/generation/conftest.py49CODE
LOWtests/unit/generation/test_onboarding.py97CODE
LOWtests/unit/generation/test_workspace_claude_md.py37CODE
LOW…ckages/core/src/repowise/core/pipeline/orchestrator.py155CODE
LOW…s/core/src/repowise/core/pipeline/phases/generation.py22CODE
LOW…kages/core/src/repowise/core/analysis/health/engine.py767CODE
LOW…s/core/src/repowise/core/persistence/crud/decisions.py59CODE
LOW…kages/core/src/repowise/core/persistence/crud/pages.py29CODE
LOW…src/repowise/core/generation/page_generator/pertype.py92CODE
LOW…re/src/repowise/core/generation/page_generator/core.py196CODE
LOW…ckages/server/src/repowise/server/routers/decisions.py35CODE
LOWpackages/server/src/repowise/server/routers/symbols.py125CODE
LOW…rc/repowise/server/routers/code_health/files_routes.py40CODE
LOW…erver/src/repowise/server/mcp_server/tool_dead_code.py215CODE
LOWpackages/cli/src/repowise/cli/ui/result_panels.py16CODE
LOW…es/cli/src/repowise/cli/commands/update_cmd/command.py268CODE
LOW…es/cli/src/repowise/cli/commands/update_cmd/command.py316CODE
LOW…es/cli/src/repowise/cli/commands/init_cmd/workspace.py404CODE
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippetContext
HIGH…kages/core/src/repowise/core/providers/llm/registry.py92Instantiate a provider by name. Providers are imported lazily — only the requested provider's dependencies needSTRING
HIGHpackages/core/src/repowise/core/providers/llm/base.py143Generate a response from the LLM. Args: system_prompt: System-level instructions (role, output formSTRING
HIGH…core/src/repowise/core/providers/embedding/registry.py54Instantiate an embedder by name. Args: name: Embedder identifier ('openai', 'gemini', 'mock'). STRING
Redundant / Tautological Comments9 hits · 13 pts
SeverityFileLineSnippetContext
LOW…rc/repowise/core/ingestion/resolvers/rust_workspace.py248 # Check if this is a proc-macro crateCOMMENT
LOW…ges/core/src/repowise/core/ingestion/resolvers/rust.py106 # Check if it might be a local module at the crate root firstCOMMENT
LOW…/repowise/core/ingestion/dynamic_hints/pytest_hints.py92 # Check if any test function uses a fixture from this conftestCOMMENT
LOW…ges/core/src/repowise/core/analysis/execution_flows.py177 # Check if the containing file is marked as an entry pointCOMMENT
LOW…repowise/core/analysis/health/complexity/cyclomatic.py270 # Check if this is a case/arm inside a flat match — skip it.COMMENT
LOW…core/src/repowise/core/analysis/decisions/extractor.py1373 # Check if the commit message shares meaningfulCOMMENT
LOWpackages/core/src/repowise/core/workspace/scanner.py95 # Check if root itself is a git repoCOMMENT
LOWpackages/server/src/repowise/server/routers/jobs.py182 # Check if client disconnectedCOMMENT
LOW…rver/src/repowise/server/mcp_server/tool_dependency.py250 # Check if they're in completely disconnected componentsCOMMENT
Synthetic Comment Markers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdocs/USER_GUIDE.md155├── AGENTS.md # Auto-generated Codex context when enabledCODE