Codebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.
This report summarizes scanner evidence for repowise-dev/repowise, a Python project with 7,487 GitHub stars. SynthScan examined 1,225,643 lines of code across 5285 source files, recording 34955 pattern matches distributed across 25 syntactic categories. The legacy adjusted pattern signal is 39.1 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 23394 finding(s).
Are imports declared and package/API names verified? 5461 finding(s).
Are wrappers, guards, and repeated structures necessary? 28019 finding(s).
Which changes need focused human review? 34955 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 34955 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 128 | def _isolate_structlog_config(): | CODE |
| LOW | tests/conftest.py | 154 | def _isolate_silenced_logger_levels(): | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 42 | def test_pid_alive_dead_child() -> None: | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 47 | def test_pid_alive_rejects_garbage() -> None: | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 58 | def test_create_token_self_is_stable() -> None: | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 65 | def test_create_token_dead_pid_is_none_or_differs_from_live() -> None: | CODE |
| LOW | tests/unit/test_procutils.py | 76 | def test_create_token_distinguishes_processes() -> None: | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 93 | def test_parent_pid_of_child_is_us() -> None: | CODE |
| LOW⚡ | tests/unit/test_procutils.py | 102 | def test_process_name_of_child_is_python() -> None: | CODE |
| LOW | tests/unit/test_procutils.py | 113 | def test_ancestor_chain_starts_at_parent() -> None: | CODE |
| LOW | tests/unit/test_procutils.py | 124 | def test_ancestor_chain_excludes_self_and_has_no_duplicates() -> None: | CODE |
| LOW⚡ | tests/unit/test_git_commit_rows.py | 61 | def test_commit_sink_collects_full_footprint_including_non_indexable() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 119 | def test_commit_sink_since_ts_drops_old_commits() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 142 | def test_since_ts_bounds_the_numstat_walk_to_the_surviving_prefix() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 165 | def test_since_ts_newer_than_every_commit_skips_the_numstat_walk() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 177 | def test_commit_sink_default_none_is_noop() -> None: | CODE |
| LOW⚡ | tests/unit/test_git_commit_rows.py | 202 | def test_build_commit_rows_features_and_ordering() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 241 | def test_build_commit_rows_author_experience_is_cumulative() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 289 | def test_build_commit_rows_truncates_subject() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 304 | def test_build_commit_rows_handles_empty_and_no_changes() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 323 | def test_build_commit_rows_committed_at_parsed() -> None: | CODE |
| LOW | tests/unit/test_git_commit_rows.py | 354 | def test_build_commit_file_rows_keeps_the_detail_the_aggregates_drop(): | CODE |
| LOW⚡ | tests/unit/test_git_commit_rows.py | 370 | def test_build_commit_file_rows_folds_a_repeated_path(): | CODE |
| LOW⚡ | tests/unit/test_git_commit_rows.py | 379 | def test_build_commit_file_rows_skips_records_without_a_sha(): | CODE |
| LOW⚡ | tests/unit/test_git_commit_rows.py | 385 | def test_build_commit_file_rows_covers_exactly_the_commits_it_was_given(): | CODE |
| LOW | tests/unit/test_ci_sarif.py | 8 | def test_run_indexes_known_rules_and_encodes_uris(): | CODE |
| LOW | tests/unit/test_ci_sarif.py | 30 | def test_result_without_a_line_or_accepted_by_a_baseline(): | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 72 | def test_lists_local_and_remote_tips_newest_first(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 80 | def test_symbolic_remote_head_is_skipped(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 83 | def test_is_remote_separates_tracking_refs(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 90 | def test_a_non_repository_yields_nothing(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 95 | def test_reports_the_checked_out_branch(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 98 | def test_detached_head_is_none(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 103 | def test_a_non_repository_is_none(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 108 | def test_prefers_the_origin_head_symbolic_ref(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 111 | def test_falls_back_to_a_local_trunk(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 115 | def test_falls_back_to_head_when_no_trunk_exists(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 122 | def test_a_non_repository_is_head(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 127 | def test_three_dot_semantics_exclude_the_base_side(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 132 | def test_the_same_revision_changes_nothing(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 135 | def test_an_unknown_revision_yields_nothing(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 138 | def test_a_non_repository_yields_nothing(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 143 | def test_ahead_counts_commits_only_on_the_branch(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 146 | def test_the_orientation_reverses_with_the_arguments(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 149 | def test_an_unknown_revision_is_zero(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 152 | def test_a_non_repository_is_zero(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 157 | def test_names_the_commit_a_branch_points_at(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 160 | def test_an_unknown_revision_yields_nothing(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 163 | def test_a_non_repository_yields_nothing(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 168 | def test_a_range_yields_one_set_per_commit_oldest_first(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 187 | def test_the_three_dot_form_reads_as_the_same_range(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 192 | def test_a_single_revision_carries_nothing(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 196 | def test_a_non_repository_yields_nothing(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 201 | def test_a_pure_rename_names_its_new_path(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 253 | def test_a_path_never_committed_yields_none(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 256 | def test_a_path_still_on_disk_yields_none(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 259 | def test_a_non_repository_yields_none(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 262 | def test_a_path_escaping_the_repo_is_rejected(self, repo: Path) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 277 | def test_remote_name_is_the_last_url_segment(tmp_path: Path, url: str) -> None: | CODE |
| LOW⚡ | tests/unit/test_git_refs.py | 285 | def test_remote_name_unescapes_a_name_with_spaces(tmp_path: Path) -> None: | CODE |
| 21797 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 1 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 3 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 32 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 250 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 252 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 263 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | pyproject.toml | 265 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_procutils.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_commit_rows.py | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_commit_rows.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_commit_rows.py | 197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_commit_rows.py | 199 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_repo_config_reasoning.py | 11 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_repo_config_reasoning.py | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_repo_config_reasoning.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_repo_config_reasoning.py | 48 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 206 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 384 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 386 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 852 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 854 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 963 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 965 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 1053 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 1055 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 1134 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/test_git_indexer.py | 1136 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 151 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 680 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_git_indexer.py | 682 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_ids.py | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/test_ids.py | 198 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 46 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/pipeline/test_resume.py | 155 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/pipeline/test_resume.py | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/pipeline/test_resume.py | 230 | # --------------------------------------------------------------------------- | COMMENT |
| 4244 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 3 | CODE | |
| LOW | tests/unit/test_procutils.py | 9 | CODE | |
| LOW | tests/unit/test_git_commit_rows.py | 8 | CODE | |
| LOW | tests/unit/test_ci_sarif.py | 3 | CODE | |
| LOW | tests/unit/test_git_refs.py | 3 | CODE | |
| LOW | tests/unit/test_platform_telemetry.py | 8 | CODE | |
| LOW | tests/unit/conftest.py | 3 | CODE | |
| LOW | tests/unit/test_ci_action.py | 9 | CODE | |
| LOW | tests/unit/test_blas_threads.py | 15 | CODE | |
| LOW | tests/unit/test_repo_config_invalidation.py | 1 | CODE | |
| LOW | tests/unit/test_pytest_roots.py | 3 | CODE | |
| LOW | tests/unit/test_ci_gitlab.py | 3 | CODE | |
| LOW | tests/unit/test_installed_components.py | 4 | CODE | |
| LOW | tests/unit/test_git_commit_index.py | 3 | CODE | |
| LOW | tests/unit/test_no_test_path_copies.py | 21 | CODE | |
| LOW | tests/unit/test_no_bare_type_name_copies.py | 28 | CODE | |
| LOW | tests/unit/test_manifest_gitignore.py | 10 | CODE | |
| LOW | tests/unit/test_repo_config_reasoning.py | 3 | CODE | |
| LOW | tests/unit/test_no_hotspot_health_copies.py | 24 | CODE | |
| LOW | tests/unit/test_support_paths.py | 3 | CODE | |
| LOW | tests/unit/test_ci.py | 3 | CODE | |
| LOW | tests/unit/test_test_paths.py | 9 | CODE | |
| LOW | tests/unit/test_git_indexer.py | 3 | CODE | |
| LOW | tests/unit/test_release_manifests.py | 25 | CODE | |
| LOW | tests/unit/test_language_support_docs.py | 1 | CODE | |
| LOW | tests/unit/test_structlog_isolation.py | 3 | CODE | |
| LOW | tests/unit/test_csharp_dead_code_markers.py | 9 | CODE | |
| LOW | tests/unit/test_no_doc_extension_copies.py | 18 | CODE | |
| LOW | tests/unit/test_no_unranked_truncation.py | 35 | CODE | |
| LOW | tests/unit/test_ids.py | 3 | CODE | |
| LOW | tests/unit/test_cache_seal.py | 3 | CODE | |
| LOW | tests/unit/test_co_change.py | 3 | CODE | |
| LOW | tests/unit/test_fts_query.py | 13 | CODE | |
| LOW | tests/unit/test_code_origin.py | 3 | CODE | |
| LOW | tests/unit/test_no_barrel_filename_copies.py | 1 | CODE | |
| LOW | tests/unit/test_function_blame_rollup.py | 3 | CODE | |
| LOW | tests/unit/test_repo_config_errors.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_coverage_ingestion.py | 8 | CODE | |
| LOW | tests/unit/pipeline/test_tombstone_absent_files.py | 13 | CODE | |
| LOW | …s/unit/pipeline/test_framework_edge_failure_visible.py | 11 | CODE | |
| LOW | tests/unit/pipeline/test_generation_progress_split.py | 10 | CODE | |
| LOW | tests/unit/pipeline/test_phase_timing.py | 3 | CODE | |
| LOW | …sts/unit/pipeline/test_load_stored_function_mod_p80.py | 6 | CODE | |
| LOW | tests/unit/pipeline/test_run_generation_test_run.py | 11 | CODE | |
| LOW | tests/unit/pipeline/test_authoritative_page_types.py | 21 | CODE | |
| LOW | tests/unit/pipeline/test_git_partial_clone_warning.py | 3 | CODE | |
| LOW | tests/unit/pipeline/test_decision_source_reporting.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_drop_transient_git_signals.py | 11 | CODE | |
| LOW | tests/unit/pipeline/test_doc_drift_incremental.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_doc_drift_phase.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_update_phase_timings.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_parallel_source_reads.py | 8 | CODE | |
| LOW | tests/unit/pipeline/test_partial_health_scope.py | 10 | CODE | |
| LOW | tests/unit/pipeline/test_load_stored_git_meta.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_cancellation.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_update_graph_convergence.py | 15 | CODE | |
| LOW | …ts/unit/pipeline/test_incremental_failure_isolation.py | 11 | CODE | |
| LOW | tests/unit/pipeline/test_resume.py | 9 | CODE | |
| LOW | tests/unit/pipeline/test_load_stored_coverage_map.py | 7 | CODE | |
| LOW | …ts/unit/pipeline/test_entry_point_score_persistence.py | 9 | CODE | |
| 5042 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/test_code_origin.py | 210 | " public DateTime(int year, int month, int day) { throw null; }\n" | CODE |
| HIGH⚡ | tests/unit/test_code_origin.py | 217 | body = "namespace L { public class C { public int M() { throw null; } } }\n" | CODE |
| HIGH⚡ | tests/unit/test_code_origin.py | 356 | "namespace L { // callers may throw null; see docs\n public class C { int M() => 1; } }\n" | CODE |
| HIGH | tests/unit/ingestion/test_jvm_type_refs.py | 224 | "package com.foo\nclass Holder { val r: Repo? = null }\n", | CODE |
| HIGH⚡ | tests/unit/ingestion/test_ts_reexport_dead_code.py | 99 | "pkg/src/comp/search-bar.tsx": "export function SearchBar() {\n return null;\n}\n", | CODE |
| HIGH | tests/unit/ingestion/test_ts_reexport_dead_code.py | 116 | "pkg/src/widget.tsx": "export function Widget() {\n return null;\n}\n", | CODE |
| HIGH | tests/unit/ingestion/test_ts_framework_edges.py | 126 | "export function getUserHandler() { return null; }\n" | CODE |
| HIGH | tests/unit/ingestion/test_bare_name_index_kinds.py | 164 | "import { base } from './base';\nexport const doThing = base.bind(null);\n", | CODE |
| HIGH | tests/unit/ingestion/test_overload_identity.py | 99 | if (obj == null) throw new IllegalArgumentException(msg); | CODE |
| HIGH | tests/unit/ingestion/test_spring_framework_edges.py | 257 | " private final User cachedUser = null;\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1179 | members=" private final List<Object> items = null;\n", | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1206 | " public Object get(int i) { return null; }\n}\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1219 | " public Object get(int i) { return null; }\n}\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1232 | " public Object get(int i) { return null; }\n}\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1246 | ") {\n String data = null;\n return this.data.get(0);", | CODE |
| HIGH⚡ | tests/unit/ingestion/test_call_resolver_strategies.py | 1259 | " public Object get(int i) { return null; }\n }\n}\n" | CODE |
| HIGH | tests/unit/ingestion/test_call_resolver_strategies.py | 1144 | " public Object get(int i) { return null; }\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_shadowed_bare_calls.py | 258 | text = "for (const [k, v] of xs) {\n out.push(serialize(k, v))\n}\nh['x'] = 1\n" | STRING |
| HIGH⚡ | tests/unit/ingestion/test_csharp_partials.py | 205 | " public static object Bulkhead(int n, int q) => null;\n}\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_csharp_partials.py | 209 | " public static object Bulkhead<TResult>(int n) => null;\n}\n" | CODE |
| HIGH | tests/unit/ingestion/test_csharp_framework_edges.py | 379 | " public AppDbContext CreateDbContext(string[] args) => null;\n}\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_fix_shape.py | 183 | removed=[" ctx.push()"], | CODE |
| HIGH⚡ | tests/unit/ingestion/test_fix_shape.py | 184 | added=[" ctx.push()"], | CODE |
| HIGH⚡ | tests/unit/ingestion/test_receiver_types.py | 99 | body = "public void Go() { Ocelot.Configuration.Route route = null; }" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_receiver_types.py | 392 | " fun run() { timeout.toString() }\n}" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_receiver_types.py | 400 | " fun run() { timeout.toString() }\n}" | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 342 | own = "package a;\nclass Duration { static Duration ofSeconds(int s) { return null; }\n long toNanos() { return 0; } | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 607 | tmp_path, 'RuleFor(x => x.Text).Must(t => t != null).WithMessage("m").When(m => true);' | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 616 | edges = _csharp_chain_edges(tmp_path, "RuleFor(x => x.Child).SetValidator(null);") | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 636 | "Plain.Make().When(m => true, null);", | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 637 | {"Plain.cs": "public class Plain { public static Plain Make() { return null; } }\n"}, | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 650 | "public class Plain : Stream { public static Plain Make() { return null; } }\n" | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 665 | "public class Store { public static Task<int> Load() { return null; }\n" | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 684 | "public class Builder { public static Builder Create() { return null; }\n" | CODE |
| HIGH⚡ | …ts/unit/ingestion/test_return_type_chain_resolution.py | 685 | " public object Build() { return null; } }\n" | CODE |
| HIGH | …ts/unit/ingestion/test_return_type_chain_resolution.py | 551 | "(this IRuleBuilder<T, P> rule, Func<P, bool> check) { return null; }\n" | CODE |
| HIGH | …ts/unit/ingestion/test_return_type_chain_resolution.py | 562 | " public IRuleBuilderInitial<T, P> RuleFor<P>(Func<T, P> pick) { return null; }\n" | CODE |
| HIGH⚡ | tests/unit/ingestion/test_type_head_identifiers.py | 159 | "function f(a: Foo | null) {}\n", | CODE |
| HIGH | tests/unit/ingestion/test_chained_receiver_calls.py | 152 | "class Car { engine: Engine | null; }\n" | CODE |
| HIGH | tests/unit/ingestion/parser/test_method_signatures.py | 15 | b"class Example { V get(K key) { return null; } }", | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 477 | return null; | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 479 | const Memoized = React.memo(function Inner() { return null; }); | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 480 | const Ctx = createContext(null); | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 543 | const AccordionItem = React.forwardRef((props, ref) => null); | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 544 | const Memoized = React.memo(function Inner() { return null; }); | CODE |
| HIGH⚡ | tests/unit/ingestion/parser/test_typescript.py | 552 | const Ctx = createContext(null); | CODE |
| HIGH | tests/unit/ingestion/parser/test_typescript.py | 614 | const AccordionItem = React.forwardRef((props, ref) => null); | CODE |
| HIGH⚡ | tests/unit/analysis/test_signature_effect.py | 280 | widened = _effect("function f(x: string)", "function f(x: string | null)", "typescript") | CODE |
| HIGH | tests/unit/analysis/test_security_scan.py | 163 | ("while ((m = re.exec(expr)) !== null) {}\n", set()), | CODE |
| HIGH⚡ | tests/unit/dead_code/test_entry_shape.py | 53 | "app/routes/home.tsx": "export default function Home() { return null }\n", | CODE |
| HIGH | tests/unit/dead_code/test_jsx_prop_guard_dead_code.py | 45 | child_file.write_text("export function Child() { return null; }") | STRING |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 1010 | out.push(r); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2340 | if state.stdin_consumed && arg == "-" { | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2343 | paths.push(arg); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2451 | out.push(limit); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2453 | out.push(doubled); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2470 | re.push('['); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2472 | re.push('^'); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2476 | re.push(r.0); | CODE |
| HIGH⚡ | tests/unit/health/test_dataflow_langs.py | 2478 | re.push(r.1); | CODE |
| 212 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 37 | except Exception: | CODE |
| LOW | tests/conftest.py | 44 | except Exception: | CODE |
| LOW⚡ | tests/unit/pipeline/test_cancellation.py | 65 | except Exception: | CODE |
| LOW | tests/unit/pipeline/test_update_graph_convergence.py | 71 | except Exception: | CODE |
| LOW | tests/unit/ingestion/parser/test_cobol.py | 18 | except Exception as exc: # pragma: no cover - depends on first-use grammar cache/network | CODE |
| LOW | tests/unit/health/test_dataflow_langs.py | 29 | except Exception: | CODE |
| LOW⚡ | tests/unit/health/test_class_biomarkers.py | 88 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_class_biomarkers.py | 85 | def test_low_cohesion_skips_overloaded_formatter_class(): | CODE |
| LOW | tests/unit/health/test_complexity_walker.py | 47 | except Exception: | CODE |
| LOW | tests/unit/health/test_language_node_maps.py | 28 | except Exception: | CODE |
| LOW | tests/unit/health/test_language_node_maps.py | 553 | except Exception: | STRING |
| LOW | tests/unit/health/refactoring_tree_fixture.py | 98 | except Exception: | CODE |
| LOW | tests/unit/health/test_ff_track_d_exceptions.py | 31 | except Exception: | CODE |
| LOW | tests/unit/health/test_ff_track_d_exceptions.py | 35 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_dataflow_facts.py | 21 | def _require_python() -> None: | CODE |
| LOW | tests/unit/health/test_dataflow_facts.py | 24 | except Exception: | CODE |
| LOW⚡ | tests/unit/health/test_dataflow_facts.py | 338 | except Exception: | STRING |
| LOW | tests/unit/health/test_dataflow_facts.py | 368 | except Exception: | STRING |
| LOW | tests/unit/health/test_dataflow_facts.py | 388 | except Exception: | STRING |
| LOW | tests/unit/health/test_extract_method_live_out.py | 732 | except Exception: | STRING |
| LOW | tests/unit/health/test_extract_method_live_out.py | 818 | except Exception: | STRING |
| LOW | tests/unit/health/test_cross_file_oracle.py | 34 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_perf_promotion.py | 21 | def _require_python() -> None: | CODE |
| LOW | tests/unit/health/test_perf_promotion.py | 24 | except Exception: | CODE |
| LOW | tests/unit/health/test_error_handling.py | 170 | except Exception: | CODE |
| LOW | tests/unit/health/test_error_handling.py | 174 | except Exception: | CODE |
| LOW | tests/unit/health/test_assertion_free_test.py | 25 | except Exception: | CODE |
| LOW | tests/unit/health/test_mock_saturated_test.py | 41 | except Exception: | CODE |
| LOW | tests/unit/health/test_perf_unbounded_reduction.py | 27 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_perf_unbounded_reduction.py | 24 | def _require_python() -> None: | CODE |
| LOW | tests/unit/health/test_assertion_vocabulary.py | 29 | except Exception: | CODE |
| LOW | tests/unit/health/test_ff_track_bch_complexity.py | 31 | except Exception: # pragma: no cover - depends on optional deps | CODE |
| LOW | tests/unit/health/test_ast_callee_names.py | 25 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_refactoring_extract_method.py | 56 | def _require_python() -> None: | CODE |
| MEDIUM | tests/unit/health/test_refactoring_extract_method.py | 412 | def test_prefix_sum_matches_per_span_reference_go(): | CODE |
| LOW⚡ | tests/unit/health/test_refactoring_extract_method.py | 415 | except Exception: | STRING |
| LOW | tests/unit/health/test_refactoring_extract_method.py | 59 | except Exception: | STRING |
| LOW | tests/unit/health/test_refactoring_extract_method.py | 962 | except Exception: | STRING |
| MEDIUM | tests/unit/health/test_perf_lazy_load.py | 24 | def _require_python() -> None: | CODE |
| LOW | tests/unit/health/test_perf_lazy_load.py | 27 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_extract_method_span_interface.py | 129 | def f(x): | CODE |
| MEDIUM | tests/unit/health/test_extract_method_span_interface.py | 135 | def check(): | CODE |
| LOW⚡ | tests/unit/health/test_extract_method_span_interface.py | 469 | except Exception as exc: | CODE |
| LOW⚡ | tests/unit/health/test_extract_method_span_interface.py | 476 | except Exception as exc: | CODE |
| LOW | tests/unit/health/test_extract_method_span_interface.py | 154 | except Exception as e: | CODE |
| LOW | tests/unit/health/test_extract_method_span_interface.py | 132 | except Exception as e: | STRING |
| LOW | tests/unit/health/test_go_value_writes.py | 53 | except Exception: | STRING |
| MEDIUM | tests/unit/health/test_dataflow_cfg.py | 25 | def _require_python() -> None: | CODE |
| MEDIUM | tests/unit/health/test_dataflow_cfg.py | 360 | def f(): | CODE |
| LOW⚡ | tests/unit/health/test_dataflow_cfg.py | 542 | except Exception: | CODE |
| LOW | tests/unit/health/test_dataflow_cfg.py | 28 | except Exception: | CODE |
| LOW | tests/unit/health/test_nested_function_complexity.py | 29 | except Exception: | CODE |
| LOW | tests/unit/health/test_perf_promotion_engine.py | 20 | except Exception: | CODE |
| MEDIUM | tests/unit/health/test_perf_promotion_engine.py | 17 | def _require_python() -> None: | CODE |
| LOW | tests/unit/health/test_extract_method_stages.py | 78 | except Exception as exc: | CODE |
| MEDIUM | tests/unit/health/test_dataflow_reaching.py | 25 | def _require_python() -> None: | CODE |
| MEDIUM | tests/unit/health/test_dataflow_reaching.py | 400 | def f(): | CODE |
| MEDIUM | tests/unit/health/test_dataflow_reaching.py | 427 | def f(): | CODE |
| MEDIUM | tests/unit/health/test_dataflow_reaching.py | 451 | def f(): | CODE |
| LOW | tests/unit/health/test_dataflow_reaching.py | 28 | except Exception: | CODE |
| 1117 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 37 | except Exception: | CODE |
| HIGH | tests/conftest.py | 44 | except Exception: | CODE |
| HIGH | tests/unit/pipeline/test_cancellation.py | 67 | except PipelineCancelled: | CODE |
| HIGH | tests/unit/pipeline/test_update_graph_convergence.py | 71 | except Exception: | CODE |
| HIGH | tests/unit/cli/test_vscode_setup.py | 113 | except ValueError: | CODE |
| HIGH | tests/unit/cli/test_vscode_setup.py | 163 | except ValueError: | CODE |
| HIGH | tests/unit/cli/test_telemetry.py | 404 | except click.ClickException: | CODE |
| HIGH | tests/integration/test_deterministic_generation.py | 46 | except Exception: | CODE |
| HIGH | tests/integration/test_deterministic_generation.py | 294 | except Exception: | CODE |
| HIGH | tests/integration/test_deterministic_generation.py | 206 | except Exception: | CODE |
| HIGH | tests/integration/test_generation_determinism.py | 51 | except Exception: | CODE |
| HIGH | tests/integration/test_cpp_dead_code.py | 50 | except Exception: | CODE |
| HIGH | tests/integration/test_wiki_idempotence.py | 61 | except Exception: | CODE |
| HIGH | tests/integration/test_jvm_dead_code.py | 53 | except Exception: | CODE |
| HIGH | tests/integration/test_dead_code_integration.py | 31 | except Exception: | CODE |
| HIGH | tests/integration/test_persistence.py | 100 | except Exception: | CODE |
| HIGH | tests/integration/test_generation_pipeline.py | 191 | except Exception: | CODE |
| HIGH | scripts/validate_quality.py | 39 | except Exception: | CODE |
| HIGH | scripts/benchmark_upgrade.py | 55 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/repo_config.py | 356 | except OSError: | CODE |
| HIGH | packages/core/src/repowise/core/pipeline/reparse.py | 56 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/pipeline/incremental.py | 112 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/pipeline/incremental.py | 1016 | except Exception: | CODE |
| HIGH | …es/core/src/repowise/core/pipeline/resume/rehydrate.py | 122 | except ValueError: | CODE |
| HIGH | packages/core/src/repowise/core/upgrade/release.py | 148 | except Exception: | CODE |
| HIGH | …/src/repowise/core/ingestion/git_indexer/_constants.py | 35 | except Exception: | CODE |
| HIGH | …ore/src/repowise/core/ingestion/git_indexer/records.py | 606 | except Exception: | CODE |
| HIGH | …rc/repowise/core/ingestion/git_indexer/file_history.py | 276 | except ValueError: | CODE |
| HIGH | …rc/repowise/core/ingestion/git_indexer/file_history.py | 579 | except Exception: | CODE |
| HIGH | …ges/core/src/repowise/core/ingestion/resolvers/ruby.py | 91 | except OSError: | CODE |
| HIGH | …ages/core/src/repowise/core/ingestion/resolvers/cpp.py | 109 | except ValueError: | CODE |
| HIGH | …src/repowise/core/ingestion/resolvers/jvm_workspace.py | 479 | except Exception: | CODE |
| HIGH | …kages/core/src/repowise/core/ingestion/resolvers/go.py | 20 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/analysis/communities.py | 139 | except ImportError: | CODE |
| HIGH | packages/core/src/repowise/core/analysis/kg_inputs.py | 58 | except Exception: # pragma: no cover - defensive | CODE |
| HIGH | …kages/core/src/repowise/core/analysis/security_scan.py | 796 | except SyntaxError: | CODE |
| HIGH | …core/src/repowise/core/analysis/decisions/evolution.py | 715 | except (TypeError, ValueError): | CODE |
| HIGH | …kages/core/src/repowise/core/providers/llm/opencode.py | 133 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 186 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 203 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 114 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 124 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 257 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 92 | except Exception: | CODE |
| HIGH | packages/core/src/repowise/core/workspace/update.py | 888 | except Exception: | CODE |
| HIGH | …ages/core/src/repowise/core/sessions/adapters/codex.py | 220 | except OSError: | CODE |
| HIGH | …epowise/core/persistence/vector_store/lancedb_store.py | 84 | except OSError: | CODE |
| HIGH | …powise/core/persistence/vector_store/pgvector_store.py | 34 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | …/core/src/repowise/core/persistence/crud/repository.py | 155 | except OSError: | CODE |
| HIGH | …/src/repowise/core/persistence/crud/analysis/health.py | 438 | except (TypeError, ValueError): | CODE |
| HIGH | …/src/repowise/core/persistence/crud/analysis/health.py | 447 | except Exception: | CODE |
| HIGH | …src/repowise/core/persistence/crud/analysis/actions.py | 394 | except Exception: # an index from before ingests were recorded | CODE |
| HIGH | …s/core/src/repowise/core/generation/knowledge_graph.py | 500 | except json.JSONDecodeError: | CODE |
| HIGH | …ges/core/src/repowise/core/generation/related_pages.py | 314 | except Exception: | CODE |
| HIGH | …repowise/core/generation/context/graph_intelligence.py | 89 | except Exception: | CODE |
| HIGH | …repowise/core/generation/context/graph_intelligence.py | 155 | except Exception: | CODE |
| HIGH | …repowise/core/generation/context/graph_intelligence.py | 182 | except Exception: | CODE |
| HIGH | …repowise/core/generation/page_generator/orchestrate.py | 555 | except Exception: | CODE |
| HIGH | …/src/repowise/core/generation/page_generator/levels.py | 108 | except Exception: | CODE |
| HIGH | …se/core/generation/onboarding/subkinds/key_concepts.py | 152 | except Exception: | CODE |
| 67 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/test_no_test_path_copies.py | 122 | CODE | |
| LOW | tests/unit/test_no_bare_type_name_copies.py | 221 | CODE | |
| LOW | tests/unit/ingestion/test_edge_type_vocabulary.py | 97 | CODE | |
| LOW | tests/unit/ingestion/test_edge_type_vocabulary.py | 136 | CODE | |
| LOW | tests/unit/ingestion/test_edge_type_vocabulary.py | 272 | CODE | |
| LOW | tests/unit/ingestion/test_godot_project_awareness.py | 434 | CODE | |
| LOW | tests/unit/ingestion/test_overload_identity.py | 496 | CODE | |
| LOW | tests/unit/ingestion/test_fs_walk.py | 570 | CODE | |
| LOW | tests/unit/savings/test_repository.py | 216 | CODE | |
| LOW | tests/unit/analysis/test_security_scan_history.py | 166 | CODE | |
| LOW | tests/unit/dead_code/_helpers.py | 19 | CODE | |
| LOW | tests/unit/health/test_snapshot_writers_agree.py | 34 | CODE | |
| LOW | tests/unit/health/test_dataflow_langs.py | 1786 | CODE | |
| LOW | tests/unit/health/test_extract_method_live_out.py | 587 | CODE | |
| LOW | tests/unit/health/test_function_hotspot.py | 14 | CODE | |
| LOW | tests/unit/health/test_refactoring_extract_method.py | 238 | CODE | |
| LOW | tests/unit/health/test_refactoring_split_file.py | 146 | CODE | |
| LOW | tests/unit/health/test_refactoring_split_file.py | 496 | CODE | |
| LOW | …s/unit/server/mcp/test_wire_representation_contract.py | 143 | CODE | |
| LOW | tests/unit/server/mcp/test_answer_backtick_masking.py | 145 | CODE | |
| LOW | tests/unit/server/mcp/test_answer_backtick_masking.py | 161 | CODE | |
| LOW | …unit/server/mcp/test_cross_tool_reference_contracts.py | 258 | CODE | |
| LOW | …unit/server/mcp/test_cross_tool_reference_contracts.py | 508 | CODE | |
| LOW | tests/unit/server/mcp/test_retrieval_guard.py | 105 | CODE | |
| LOW | tests/unit/server/mcp/test_retrieval_guard.py | 189 | CODE | |
| LOW | tests/unit/server/mcp/test_retrieval_guard.py | 123 | CODE | |
| LOW | tests/unit/server/mcp/test_why_evidence_contract.py | 23 | CODE | |
| LOW | tests/unit/persistence/test_decision_supersession.py | 50 | CODE | |
| LOW | tests/unit/test_providers/test_provider_specs.py | 121 | CODE | |
| LOW | tests/unit/generation/test_architecture_mermaid.py | 68 | CODE | |
| LOW | scripts/gen_plugin_content.py | 207 | CODE | |
| LOW | scripts/gen_plugin_content.py | 266 | CODE | |
| LOW | scripts/measure_mcp_response_sizes.py | 193 | CODE | |
| LOW | packages/core/src/repowise/core/cache_seal.py | 202 | CODE | |
| LOW | packages/core/src/repowise/core/stats_highlights.py | 261 | CODE | |
| LOW | packages/core/src/repowise/core/update_lock.py | 175 | CODE | |
| LOW | packages/core/src/repowise/core/repo_config.py | 290 | CODE | |
| LOW | packages/core/src/repowise/core/fs_walk.py | 341 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/checkpoint.py | 145 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/persist.py | 405 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/persist.py | 2086 | CODE | |
| LOW | …ckages/core/src/repowise/core/pipeline/orchestrator.py | 189 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/full_index.py | 16 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/incremental.py | 53 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/incremental.py | 1898 | CODE | |
| LOW | …es/core/src/repowise/core/pipeline/phases/ingestion.py | 407 | CODE | |
| LOW | …es/core/src/repowise/core/pipeline/phases/ingestion.py | 753 | CODE | |
| LOW | …ges/core/src/repowise/core/pipeline/phases/analysis.py | 383 | CODE | |
| LOW | packages/core/src/repowise/core/upgrade/manager.py | 151 | CODE | |
| LOW | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 466 | CODE | |
| LOW | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 171 | CODE | |
| LOW | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 263 | CODE | |
| LOW | …ges/core/src/repowise/core/ingestion/dispatch_edges.py | 113 | CODE | |
| LOW | …kages/core/src/repowise/core/ingestion/return_types.py | 25 | CODE | |
| LOW | …/core/src/repowise/core/ingestion/heritage_resolver.py | 155 | CODE | |
| LOW | …es/core/src/repowise/core/ingestion/cpp_macro_facts.py | 301 | CODE | |
| LOW | …kages/core/src/repowise/core/ingestion/import_index.py | 38 | CODE | |
| LOW | packages/core/src/repowise/core/ingestion/type_names.py | 49 | CODE | |
| LOW | packages/core/src/repowise/core/ingestion/type_names.py | 97 | CODE | |
| LOW | packages/core/src/repowise/core/ingestion/type_names.py | 155 | CODE | |
| 560 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 161 | # and the web what's-new view work offline from the installed wheel. Lives in | COMMENT |
| LOW | ci/gitlab/repowise.gitlab-ci.yml | 1 | # Repowise CI gates for GitLab merge requests. | COMMENT |
| LOW | ci/gitlab/repowise.gitlab-ci.yml | 21 | # REPOWISE_COVERAGE_FAIL_UNDER Minimum patch coverage percent. | COMMENT |
| LOW | tests/unit/test_no_test_path_copies.py | 61 | # `protest/`, `latest/` and `contest/` all counted as tests, while | COMMENT |
| LOW | tests/unit/test_no_test_path_copies.py | 81 | # Excludes bare `test/` on purpose: `django/test/` and `flask/testing.py` | COMMENT |
| LOW | tests/unit/test_no_bare_type_name_copies.py | 61 | _INGESTION / "heritage_resolver.py", | COMMENT |
| LOW | tests/unit/test_no_bare_type_name_copies.py | 81 | # dotted receiver (`this.a.b`) hop by hop: an instance path, where every | COMMENT |
| LOW | tests/unit/test_no_bare_type_name_copies.py | 101 | # Qualifies a PHP name against its `use` alias (the HEAD segment) and | COMMENT |
| LOW | tests/unit/ingestion/test_fs_walk.py | 501 | _write(tmp_path, "a/b/c/package.json", "{}") # 4 parts — boundary, kept | COMMENT |
| LOW | tests/unit/ingestion/test_fs_walk.py | 521 | # nested repos even when matches are filtered afterwards; | COMMENT |
| LOW | tests/unit/ingestion/parser/test_pascal.py | 221 | COMMENT | |
| LOW | tests/unit/ingestion/parser/test_typescript.py | 201 | ) -> None: | COMMENT |
| LOW | tests/unit/health/test_refactoring_extract_helper.py | 561 | COMMENT | |
| LOW | tests/unit/workspace/test_extraction_walk_budget.py | 161 | monkeypatch: pytest.MonkeyPatch, | COMMENT |
| LOW | tests/unit/distill/test_rewrite_perf.py | 141 | # on the worst sample so a real "sometimes takes a second" failure still | COMMENT |
| LOW | tests/unit/server/mcp/test_keyless_vector_leg.py | 241 | # -------------------------------------------------------------------------- | COMMENT |
| LOW | tests/unit/server/mcp/test_tool_table_drift.py | 41 | # Header + separator + one line per row. | COMMENT |
| LOW | tests/unit/cli/test_pricing_table_agreement.py | 21 | from __future__ import annotations | COMMENT |
| LOW | tests/unit/cli/test_agent_matrix.py | 221 | COMMENT | |
| LOW | tests/unit/generation/test_page_confidence.py | 41 | ) | COMMENT |
| LOW | tests/unit/generation/test_page_selection.py | 81 | records = [PageRecord("file_page:src/a.py", "file_page", "src\\a.py", is_template=True)] | COMMENT |
| LOW | tests/unit/generation/test_vocabulary_house_terms.py | 861 | "Blast radius is the set of accounts a posting can reach through the ledger graph." | COMMENT |
| LOW | docs/design/no-raw-hex-check.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/kg_validate/kg_checks.py | 21 | COMMENT | |
| LOW | scripts/kg_validate/kg_checks.py | 41 | SMALL_REPO_FILES = 10 | COMMENT |
| LOW | packages/ui/__tests__/docs/docs-tree.test.tsx | 861 | }); | COMMENT |
| LOW | packages/ui/scripts/no-raw-hex-check.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/ui/scripts/ui-gates.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | packages/ui/src/present/build-present-model.ts | 1 | // Build a Present deck from already-loaded wiki pages. Pure and synchronous: | COMMENT |
| LOW | packages/ui/src/commits/code-evolution-chart.tsx | 41 | COMMENT | |
| LOW | packages/ui/src/commits/priority-badge.tsx | 1 | import { cn } from "../lib/cn"; | COMMENT |
| LOW | packages/ui/src/health/health-file-drawer.tsx | 341 | for (const c of breakdown?.categories ?? []) { | COMMENT |
| LOW | packages/ui/src/graph/graph-legend.tsx | 301 | COMMENT | |
| LOW | packages/ui/src/graph/symbol-relations.ts | 21 | /** Heading per edge type, per side. Both halves of a relation are named, since | COMMENT |
| LOW | packages/ui/src/graph/graph-flow.tsx | 301 | // reading promises "how they depend on each other". The old default was | COMMENT |
| LOW | packages/ui/src/graph/graph-flow.tsx | 721 | // Gated on the fetch actually being in flight. Holding on `!communitySlice` | COMMENT |
| LOW | packages/ui/src/graph/sigma/graphology-adapter.ts | 461 | // The community seed above IS the layout — mark it settled so use-fa2-layout | COMMENT |
| LOW | packages/ui/src/graph/sigma/use-sigma.ts | 721 | // which evaluates on every render and discards all but the first result — | COMMENT |
| LOW | packages/ui/src/wiki/wiki-markdown.tsx | 181 | } | COMMENT |
| LOW | packages/ui/src/docs/docs-tree.tsx | 281 | // longest-prefix path matching to guess which module owned a file. It is now | COMMENT |
| LOW | packages/ui/src/docs/docs-tree.tsx | 321 | "layer_page", | COMMENT |
| LOW | packages/ui/src/docs/docs-tree.tsx | 921 | ); | COMMENT |
| LOW | packages/ui/src/docs/reader-persona.ts | 1 | // Reader personas — a client-side lens that filters which sections of a | COMMENT |
| LOW | packages/ui/src/docs/reader-persona.ts | 21 | COMMENT | |
| LOW | packages/ui/src/docs/page-labels.ts | 1 | // Display labels for wiki pages — replace raw graph ids with derived names. | COMMENT |
| LOW | packages/ui/src/docs/doc-nav.ts | 1 | // Framework-neutral navigation helpers for the wiki reader. | COMMENT |
| LOW | packages/ui/src/decisions/decisions-table.tsx | 161 | cellClassName: "text-[var(--color-text-secondary)]", | COMMENT |
| LOW | packages/ui/src/lib/layers.ts | 1 | // Which layer of the architecture spine a page belongs to, and how to group a | COMMENT |
| LOW | packages/ui/src/lib/page-types.ts | 141 | // --------------------------------------------------------------------------- | COMMENT |
| LOW | packages/ui/src/lib/page-types.ts | 161 | getting_started: "Getting Started", | COMMENT |
| LOW | packages/ui/src/files/file-overview-tab.tsx | 41 | const fixedCount = Object.values(rawFixCounts).filter((n) => n > 0).length; | COMMENT |
| LOW | packages/types/src/decisions.ts | 1 | /** | COMMENT |
| LOW | packages/core/src/repowise/core/co_change.py | 41 | "parse_partners", | COMMENT |
| LOW | packages/core/src/repowise/core/update_lock.py | 21 | COMMENT | |
| LOW | packages/core/src/repowise/core/code_origin.py | 81 | # Longest first, so "/*" is stripped whole rather than as "/". | COMMENT |
| LOW | packages/core/src/repowise/core/test_paths.py | 81 | # tree when its last word, the head of the compound, is one of these. Only the | COMMENT |
| LOW | packages/core/src/repowise/core/test_paths.py | 101 | # Plural only, for the reason above (``HitTest/`` is a UI feature), and matched | COMMENT |
| LOW | packages/core/src/repowise/core/test_paths.py | 121 | # OpenAPI/language specifications as it is RSpec, and "t" is a single letter | COMMENT |
| LOW | packages/core/src/repowise/core/test_paths.py | 141 | # Directories that hold the scaffolding rather than the tests. These only count | COMMENT |
| LOW | packages/core/src/repowise/core/test_paths.py | 161 | # ignores any directory of that name - which is why it needs no Go file to | COMMENT |
| 488 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/pipeline/test_generation_progress_split.py | 39 | def set_cost(self, total_cost: float) -> None: | CODE |
| LOW⚡ | tests/unit/ingestion/test_py_visibility_refinement.py | 54 | __all__ = ["foo", "Bar", "CONST_VAL"] | CODE |
| LOW | tests/unit/ingestion/test_py_visibility_refinement.py | 69 | __all__ = ["_internal_hook", "foo"] | CODE |
| LOW | tests/unit/ingestion/test_py_visibility_refinement.py | 88 | __all__ = ["foo"] | CODE |
| LOW | tests/unit/ingestion/test_py_visibility_refinement.py | 116 | __all__ = ["MyClass", "_module_helper"] | CODE |
| LOW⚡ | tests/unit/server/mcp/test_mcp_exclude_filter.py | 155 | def _set_excluded(monkeypatch, tmp_path, pattern: str) -> None: | CODE |
| LOW | tests/unit/server/mcp/test_hotspot_health_surfaces.py | 24 | async def _set_hotspots(session, repo_id: str, paths: set[str]) -> None: | CODE |
| LOW⚡ | tests/unit/cli/test_workspace_cmd.py | 463 | def _setup(self, root: Path) -> None: | CODE |
| LOW | tests/unit/cli/test_init_agent_backend.py | 29 | def _set_up(monkeypatch: Any, *target_ids: str) -> None: | CODE |
| LOW | tests/unit/cli/test_update_stale_reconciliation.py | 254 | async def _setup_shared_db() -> None: | CODE |
| LOW | tests/unit/persistence/conftest.py | 58 | __all__ = ["insert_repo", "make_page_kwargs", "make_repo_kwargs"] | CODE |
| LOW | packages/core/src/repowise/core/co_change.py | 30 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/references.py | 147 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/git_refs.py | 19 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/cache_seal.py | 30 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/cancellation.py | 63 | def set_active_token(token: CancellationToken | None) -> None: | CODE |
| LOW | packages/core/src/repowise/core/docs_mode.py | 19 | __all__ = ["DOCS_MODES", "DocsMode", "docs_mode_state_fields", "resolve_docs_mode"] | CODE |
| LOW | packages/core/src/repowise/core/support_paths.py | 19 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/callable_spans.py | 61 | __all__ = ["body_span", "signature_end"] | CODE |
| LOW | packages/core/src/repowise/core/code_origin.py | 37 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/installed_components.py | 25 | __all__ = ["is_installed_component"] | CODE |
| LOW | packages/core/src/repowise/core/fs_walk.py | 49 | __all__ = ["PRUNED_DIRS", "PRUNED_DIRS_DERIVED", "WalkSnapshot", "iter_glob", "walk_repo"] | CODE |
| LOW | packages/core/src/repowise/core/pipeline/checkpoint.py | 38 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/pipeline/__init__.py | 30 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/pipeline/modes.py | 25 | __all__ = ["OrchestratorMode"] | CODE |
| LOW | packages/core/src/repowise/core/pipeline/fix_rollups.py | 35 | __all__ = ["apply_fix_rollups"] | CODE |
| LOW | …es/core/src/repowise/core/pipeline/resume/rehydrate.py | 30 | __all__ = [ | CODE |
| LOW | …ges/core/src/repowise/core/pipeline/resume/__init__.py | 23 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/upgrade/release.py | 173 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/upgrade/version.py | 88 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/upgrade/registry.py | 82 | __all__ = ["MIGRATIONS", "Migration", "migrations_between"] | CODE |
| LOW | packages/core/src/repowise/core/upgrade/__init__.py | 28 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/upgrade/changelog.py | 144 | __all__ = [ | CODE |
| LOW | packages/core/src/repowise/core/upgrade/manager.py | 242 | __all__ = ["UpgradeContext", "apply_auto", "assess", "stamp"] | CODE |
| LOW | packages/core/src/repowise/core/upgrade/verdict.py | 83 | __all__ = [ | CODE |
| LOW | …/core/src/repowise/core/ingestion/python_local_refs.py | 51 | __all__ = ["extract_python_local_refs"] | CODE |
| LOW | packages/core/src/repowise/core/ingestion/__init__.py | 64 | __all__ = [ | CODE |
| LOW | …kages/core/src/repowise/core/ingestion/python_tasks.py | 224 | __all__ = ["is_fire_and_forget"] | CODE |
| LOW | …ges/core/src/repowise/core/ingestion/parser_helpers.py | 52 | __all__ = [ | CODE |
| LOW | …ckages/core/src/repowise/core/ingestion/parse_cache.py | 46 | __all__ = ["ParseCache", "parser_fingerprint"] | CODE |
| LOW | …es/core/src/repowise/core/ingestion/symbol_identity.py | 171 | __all__ = [ | CODE |
| LOW | …e/src/repowise/core/ingestion/git_indexer/co_change.py | 42 | __all__ = ["CoChangeWalk", "compute_co_changes_and_entropy"] | CODE |
| LOW | …e/src/repowise/core/ingestion/git_indexer/fix_shape.py | 51 | __all__ = ["SHAPE_KINDS", "classify_fix_shape", "is_code_path", "is_test_path"] | CODE |
| LOW | …core/src/repowise/core/ingestion/git_indexer/enrich.py | 28 | __all__ = [ | CODE |
| LOW | …ore/src/repowise/core/ingestion/git_indexer/records.py | 15 | __all__ = [ | CODE |
| LOW | …re/src/repowise/core/ingestion/git_indexer/__init__.py | 69 | __all__ = [ | CODE |
| LOW | …/repowise/core/ingestion/git_indexer/function_blame.py | 34 | __all__ = [ | CODE |
| LOW | …re/src/repowise/core/ingestion/git_indexer/backfill.py | 32 | __all__ = ["BACKFILL_PHASE", "backfill_full_tier"] | CODE |
| LOW | …c/repowise/core/ingestion/git_indexer/prior_defects.py | 52 | __all__ = ["FixCommit", "FixWalk", "PriorDefects", "collect_fix_commits", "compute_prior_defects"] | CODE |
| LOW | …ore/src/repowise/core/ingestion/git_indexer/indexer.py | 52 | __all__ = ["GitIndexer", "git_worker_count"] | CODE |
| LOW | …epowise/core/ingestion/git_indexer/agent_provenance.py | 78 | __all__ = [ | CODE |
| LOW | …re/src/repowise/core/ingestion/git_indexer/identity.py | 13 | __all__ = [ | CODE |
| LOW | …/src/repowise/core/ingestion/git_indexer/fix_events.py | 37 | __all__ = ["build_fix_events"] | CODE |
| LOW | …rc/repowise/core/ingestion/git_indexer/file_history.py | 65 | __all__ = ["DECAY_REFRESH_KEYS", "index_file", "new_meta"] | CODE |
| LOW | …/core/src/repowise/core/ingestion/git_indexer/tiers.py | 15 | __all__ = ["GitIndexTier"] | CODE |
| LOW | …/src/repowise/core/ingestion/external_systems/cmake.py | 787 | __all__ = [ | CODE |
| LOW | …c/repowise/core/ingestion/external_systems/__init__.py | 27 | __all__ = [ | CODE |
| LOW⚡ | …/src/repowise/core/ingestion/external_systems/bazel.py | 315 | __all__ = [ | CODE |
| LOW | …src/repowise/core/ingestion/graph/_centrality_cache.py | 57 | __all__ = ["BetweennessScoring", "CentralityCache", "subgraph_signature"] | CODE |
| LOW | …ges/core/src/repowise/core/ingestion/graph/__init__.py | 41 | __all__ = ["GraphBuilder", "_stem_priority", "build_stem_map"] | CODE |
| 358 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/unit/ingestion/test_qml_imports.py | 0 | resolvercontext over *files* ({path: content}); writes them under *repo*. | STRING |
| HIGH | tests/unit/ingestion/test_lightweight_resolvers.py | 0 | resolvercontext over *files* ({path: content}); writes them under *repo*. | STRING |
| HIGH | tests/unit/ingestion/test_dbt_sql_imports.py | 0 | resolvercontext over *files* ({path: content}); writes them under *repo*. | STRING |
| HIGH | tests/unit/ingestion/parser/conftest.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_csharp.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_misc.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_swift.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_python.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_kotlin.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_java.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_cpp.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_ruby.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_scala.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_php.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_go.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_typescript.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_luau.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/test_rust.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/ingestion/parser/_helpers.py | 0 | unit tests for the unified astparser. tests parse inline byte strings so no filesystem i/o is needed. covers python, typ | STRING |
| HIGH | tests/unit/health/test_dataflow_langs.py | 0 | package main func process(records []int, threshold int) int { errors := 0 results := []int{} for _, r := range records { | STRING |
| HIGH | …/unit/health/test_refactoring_extract_method_naming.py | 0 | package main func process(records []int, threshold int) int { errors := 0 results := []int{} for _, r := range records { | STRING |
| HIGH | tests/unit/health/test_refactoring_extract_method.py | 0 | package main func process(records []int, threshold int) int { errors := 0 results := []int{} for _, r := range records { | STRING |
| HIGH | tests/unit/health/test_dataflow_langs.py | 0 | function process(records: number[], threshold: number): number { const results: number[] = []; let errors = 0; for (cons | STRING |
| HIGH | …/unit/health/test_refactoring_extract_method_naming.py | 0 | function process(records: number[], threshold: number): number { const results: number[] = []; let errors = 0; for (cons | STRING |
| HIGH | tests/unit/health/test_refactoring_extract_method.py | 0 | function process(records: number[], threshold: number): number { const results: number[] = []; let errors = 0; for (cons | STRING |
| HIGH | tests/unit/health/test_dataflow_facts.py | 0 | def f(ctx, cond): with ctx.push(): if cond: result = 1 else: result = 2 return result | STRING |
| HIGH | tests/unit/health/test_dataflow_cfg.py | 0 | def f(ctx, cond): with ctx.push(): if cond: result = 1 else: result = 2 return result | STRING |
| HIGH | tests/unit/health/test_dataflow_reaching.py | 0 | def f(ctx, cond): with ctx.push(): if cond: result = 1 else: result = 2 return result | STRING |
| HIGH | …/unit/health/test_refactoring_extract_method_naming.py | 0 | def process(records, threshold): results = [] errors = 0 for r in records: if r is none: errors += 1 continue results.ap | STRING |
| HIGH | tests/unit/health/test_refactoring_extract_method.py | 0 | def process(records, threshold): results = [] errors = 0 for r in records: if r is none: errors += 1 continue results.ap | STRING |
| HIGH | tests/unit/health/test_refactoring_declarative.py | 0 | def process(records, threshold): results = [] errors = 0 for r in records: if r is none: errors += 1 continue results.ap | STRING |
| HIGH | tests/unit/server/mcp/conftest.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_search.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_why.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_risk.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_dead_code.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_config.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_context.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_overview.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/server/mcp/test_health.py | 0 | unit tests for repowise mcp server tools. tests all 9 mcp tools using an in-memory sqlite database with pre-populated te | STRING |
| HIGH | tests/unit/test_providers/test_openai_provider.py | 0 | unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made. | STRING |
| HIGH | tests/unit/test_providers/test_kimi_provider.py | 0 | unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made. | STRING |
| HIGH | tests/unit/test_providers/test_deepseek_provider.py | 0 | unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made. | STRING |
| HIGH | tests/unit/test_providers/test_openrouter_provider.py | 0 | unit tests for openrouterprovider. all tests mock the asyncopenai client — no real api calls are made. | STRING |
| HIGH | tests/unit/generation/test_page_confidence.py | 0 | a provider that fails the way a real outage does: every call raises. | STRING |
| HIGH | tests/unit/generation/test_stub_on_provider_error.py | 0 | a provider that fails the way a real outage does: every call raises. | STRING |
| HIGH | tests/unit/generation/test_overview_system_map.py | 0 | a provider that fails the way a real outage does: every call raises. | STRING |
| HIGH | …es/core/src/repowise/core/pipeline/phases/ingestion.py | 0 | pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py) | STRING |
| HIGH | packages/core/src/repowise/core/pipeline/phases/git.py | 0 | pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py) | STRING |
| HIGH | …s/core/src/repowise/core/pipeline/phases/generation.py | 0 | pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py) | STRING |
| HIGH | …ges/core/src/repowise/core/pipeline/phases/analysis.py | 0 | pipeline analysis phase. extracted from the former monolithic ``orchestrator.py``; ``run_pipeline`` (in orchestrator.py) | STRING |
| HIGH | …ckages/core/src/repowise/core/ingestion/parse_cache.py | 0 | atomically persist the entries used or created this run. | STRING |
| HIGH | …s/core/src/repowise/core/analysis/health/walk_cache.py | 0 | atomically persist the entries used or created this run. | STRING |
| HIGH | …powise/core/analysis/health/duplication/token_cache.py | 0 | atomically persist the entries used or created this run. | STRING |
| HIGH | …kages/core/src/repowise/core/analysis/decision_gate.py | 0 | back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export k | STRING |
| HIGH | …core/src/repowise/core/analysis/decision_provenance.py | 0 | back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export k | STRING |
| HIGH | …/src/repowise/core/analysis/decision_semantic_match.py | 0 | back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export k | STRING |
| HIGH | …/core/src/repowise/core/analysis/decision_extractor.py | 0 | back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export k | STRING |
| HIGH | …/core/src/repowise/core/analysis/decision_evolution.py | 0 | back-compat façade — moved to ``repowise.core.analysis.decisions.evolution``. import from the new path; this re-export k | STRING |
| HIGH | packages/core/src/repowise/core/persistence/crud/git.py | 0 | crud operations for the repository domain (repowise persistence layer). split out of the former monolithic ``crud.py``; | STRING |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package-lock.json | 16291 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| LOW⚡ | tests/unit/ingestion/test_typescript_resolver.py | 822 | # resolver's job upstream; here we just return None. | COMMENT |
| MEDIUM | …sts/unit/ingestion/test_git_commit_rows_integration.py | 127 | # robust assertion; the precise boundary is covered by the unit test.) | COMMENT |
| MEDIUM⚡ | tests/unit/savings/test_transcript.py | 809 | # "some other cap": giving the unlisted harness Codex's fails. | COMMENT |
| MEDIUM | tests/unit/health/test_grading.py | 36 | # Bands are presentation; this is the number refactoring leverage is | COMMENT |
| MEDIUM⚡ | tests/unit/health/test_dataflow_reaching.py | 622 | # compute_def_use + compute_reaching can be driven without the file harness. | STRING |
| MEDIUM | tests/unit/server/test_performance_opportunities.py | 453 | # leverage puts it first whatever its rank is. | COMMENT |
| MEDIUM | tests/unit/server/test_mcp_decision_graph.py | 114 | content="# Test Repo\n\nA comprehensive test repository.", | CODE |
| MEDIUM | tests/unit/server/test_job_executor.py | 195 | """Unknown / missing / malformed style resolves to the comprehensive default.""" | STRING |
| MEDIUM | tests/unit/server/mcp/conftest.py | 103 | content="# Test Repo\n\nA comprehensive test repository.", | CODE |
| MEDIUM | tests/unit/server/mcp/test_health.py | 171 | # Per-file leverage: (8 - score) * nloc, 0 once healthy. | COMMENT |
| MEDIUM | tests/unit/cli/test_update_pending_cleanup.py | 121 | # index_repo_full does not persist state.json in the test harness; record | COMMENT |
| MEDIUM | tests/unit/cli/test_update_up_to_date_lock.py | 69 | # index_repo_full does not persist state.json in the test harness; record | COMMENT |
| MEDIUM⚡ | tests/unit/sessions/test_codex_adapter.py | 378 | #: A session bulk-imported from another harness into the Codex store. | COMMENT |
| MEDIUM | tests/unit/sessions/test_efficacy.py | 328 | # The paired record the harness also writes for the same firing. | COMMENT |
| MEDIUM⚡ | tests/unit/sessions/test_adapter_seam.py | 118 | # The three drive paths, all reached by a second harness | COMMENT |
| MEDIUM⚡ | tests/unit/sessions/test_adapter_seam.py | 256 | # Intents: the harness's key names live on the adapter, not in a consumer | COMMENT |
| MEDIUM | scripts/kg_validate/matrix.toml | 184 | # resolution at harness-friendly size. | COMMENT |
| MEDIUM | scripts/kg_validate/matrix.toml | 191 | # --- Structural-mode batch (no resolver; harness-only acceptance) --- | COMMENT |
| MEDIUM | packages/ui/src/health/findings-view.tsx | 372 | // not group size, so "Leverage" sorted stays leverage-led inside and out. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 179 | # for some module's tests: ``bot.test-harness.ts``, ``card-test-helpers.ts``, | COMMENT |
| MEDIUM | …/repowise/core/ingestion/git_indexer/function_blame.py | 242 | # parser robust to out-of-order line emission from --incremental. | COMMENT |
| MEDIUM | …ges/core/src/repowise/core/ingestion/languages/spec.py | 55 | # Consumed by the KG validation harness (density floors, honesty checks); | COMMENT |
| MEDIUM | …e/src/repowise/core/ingestion/extractors/visibility.py | 733 | # nodes — but textual matching is robust across grammar versions. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 106 | #: Per-harness output cap, in tokens. ``estimate_tokens`` is ``len // 4``, so | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 115 | #: An unlisted harness gets ``None``, meaning no cap: a cap is a claim that a | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 164 | #: line in every harness here and names no model. It is the most recent | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 211 | # One harness must not cost another's progress: the cursor save | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 459 | # The floor applies on both branches. An uncapped harness can still land | COMMENT |
| MEDIUM | packages/core/src/repowise/core/savings/transcript.py | 481 | # it. A transcript names the harness it came from. | COMMENT |
| MEDIUM | …core/src/repowise/core/analysis/independent_changes.py | 134 | # A test attaches to whatever shared harness the diff holds rather than to | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_tour.py | 297 | # The harness signal is "this test file *depends on* that one": imports and | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_tour.py | 375 | # consumers (UI, harness) can see the degradation level. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_tour.py | 539 | # referenced, so only single-target imports count as harness evidence. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_tour.py | 592 | # Drop harness files unless that would leave nothing: one single-target | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_tour.py | 593 | # import from another test file is already harness evidence. | COMMENT |
| MEDIUM | …core/src/repowise/core/analysis/dead_code/constants.py | 494 | # `#[cfg(test)] mod tests;` and the Cargo test harness, not production imports. | COMMENT |
| MEDIUM | …core/src/repowise/core/analysis/dead_code/constants.py | 858 | # JMH: the harness instantiates @State classes and runs @Benchmark | COMMENT |
| MEDIUM | …/core/src/repowise/core/analysis/dead_code/analyzer.py | 517 | # ---- libFuzzer / Honggfuzz / AFL fuzz harness entries ------------ | COMMENT |
| MEDIUM | …ages/core/src/repowise/core/analysis/health/grading.py | 37 | # it is the deficit target behind refactoring leverage, and moving it would | COMMENT |
| MEDIUM | …se/core/analysis/health/biomarkers/untested_hotspot.py | 69 | # Not enough leverage to flag — would over-trigger on | COMMENT |
| MEDIUM | …src/repowise/core/analysis/health/complexity/models.py | 106 | # ``checkOk()`` is in it, ``harness.checkOk()`` is not. Read only by the | COMMENT |
| MEDIUM | …/repowise/core/analysis/health/asserts/oracle_reach.py | 265 | # ``harness.checkOk()`` would otherwise pair a method on an unrelated | COMMENT |
| MEDIUM | …se/core/analysis/health/refactoring/recommendations.py | 1152 | # Benefit multiplies rather than offsets: leverage (the host file's | COMMENT |
| MEDIUM | …repowise/core/analysis/health/perf/opportunity_rank.py | 279 | """A total order: value first, then actionability, leverage, and id. | STRING |
| MEDIUM | …es/core/src/repowise/core/analysis/decisions/policy.py | 223 | #: transcript adapter. Only Claude Code by default: a harness added to the | COMMENT |
| MEDIUM | packages/core/src/repowise/core/distill/engine.py | 59 | #: The transcript backfill *does* know the harness, having read that | COMMENT |
| MEDIUM | packages/core/src/repowise/core/distill/engine.py | 60 | #: harness's own file, so it applies a per-agent cap | COMMENT |
| MEDIUM | packages/core/src/repowise/core/distill/corrections.py | 48 | #: stringly (cancellations, rejections, permission denials, harness errors) | COMMENT |
| MEDIUM⚡ | packages/core/src/repowise/core/distill/corrections.py | 218 | # rejections, and harness errors are neither failure nor success. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/sessions/staging.py | 169 | #: than one harness. Same shape as the injections migration beside it. | STRING |
| MEDIUM | packages/core/src/repowise/core/sessions/staging.py | 171 | # Which harness's transcript this observation came off. Empty on rows | STRING |
| MEDIUM | …ages/core/src/repowise/core/sessions/adapters/codex.py | 39 | #: Turn id on sessions bulk-imported from another harness into the Codex | COMMENT |
| MEDIUM | …ages/core/src/repowise/core/sessions/adapters/codex.py | 40 | #: store. Those turns are that harness's, and its own adapter already reads | COMMENT |
| MEDIUM | …s/core/src/repowise/core/sessions/adapters/registry.py | 27 | #: The harness assumed when a caller names none. | COMMENT |
| MEDIUM | …kages/core/src/repowise/core/sessions/adapters/base.py | 33 | #: A consumer asks for an intent; the adapter owns which of its harness's | COMMENT |
| MEDIUM | …kages/core/src/repowise/core/sessions/adapters/base.py | 34 | #: key names spot it, so harness vocabulary never leaks into a miner. | COMMENT |
| MEDIUM⚡ | …kages/core/src/repowise/core/sessions/adapters/base.py | 51 | #: Tool names, in this harness's own vocabulary, whose calls change a file | COMMENT |
| MEDIUM⚡ | …kages/core/src/repowise/core/sessions/adapters/base.py | 53 | #: path reads it from the adapter, never from a shared list: one harness | COMMENT |
| MEDIUM⚡ | …kages/core/src/repowise/core/sessions/adapters/base.py | 61 | #: different names for the same harness, and core cannot import cli, so | COMMENT |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | tests/unit/ingestion/test_chained_receiver_calls.py | 199 | " run() { this.bough.branch.twig.leaf.go(); }\n" | CODE |
| CRITICAL⚡ | tests/unit/workspace/test_framework_dialects.py | 82 | @io.swagger.v3.oas.annotations.tags.Tag(name = "Account") | CODE |
| CRITICAL | tests/unit/server/mcp/test_stack_trace.py | 37 | \tat app//io.javalin.http.servlet.JavalinServlet.service(JavalinServlet.kt:89) ~[javalin-6.1.jar:6.1] | CODE |
| CRITICAL | tests/unit/server/mcp/test_stack_trace.py | 38 | \tat org.eclipse.jetty.server.Server.handle(Server.java:516) | CODE |
| CRITICAL⚡ | tests/unit/test_providers/test_edenai_provider.py | 204 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL⚡ | tests/unit/test_providers/test_openai_provider.py | 441 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL⚡ | tests/unit/test_providers/test_openai_provider.py | 456 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL⚡ | tests/unit/test_providers/test_openai_provider.py | 467 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_openai_provider.py | 379 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_kimi_provider.py | 178 | mock_client.return_value.chat.completions.create.assert_called_once() | CODE |
| CRITICAL | tests/unit/test_providers/test_kimi_provider.py | 252 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_kimi_provider.py | 294 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_deepseek_provider.py | 181 | mock_client.return_value.chat.completions.create.assert_called_once() | CODE |
| CRITICAL | tests/unit/test_providers/test_deepseek_provider.py | 231 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_deepseek_provider.py | 242 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL⚡ | tests/unit/test_providers/test_openrouter_provider.py | 346 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| CRITICAL | tests/unit/test_providers/test_openrouter_provider.py | 327 | mock_client.return_value.chat.completions.create.assert_not_called() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_test_paths.py | 134 | # scaffolding tokens missed because those only count inside a test tree. | COMMENT |
| MEDIUM | tests/unit/test_test_paths.py | 256 | # scaffolding dir inside a test project is support, as under tests/. | COMMENT |
| MEDIUM | tests/unit/test_test_paths.py | 262 | # A name ending in "test" and a scaffolding word is the support for some | COMMENT |
| MEDIUM | tests/unit/test_test_paths.py | 278 | ("src/foo.test-d.ts", None, "test"), # a type test, not a scaffolding word | CODE |
| MEDIUM⚡ | tests/unit/ingestion/test_author_identity.py | 141 | # Union-find merge (E3-E5) and its guardrails | COMMENT |
| MEDIUM | tests/unit/server/mcp/test_code_rationale.py | 212 | "# The symbol cap is 40 because dense files flood the context window.\n" | STRING |
| MEDIUM | docs/architecture/ARCHITECTURE.md | 128 | │ │ │ │ ├── context_assembler.py# context assembly (RAG + graph + git + source) | CODE |
| MEDIUM | docs/architecture/chat.md | 19 | 7. [Agentic Loop](#7-agentic-loop) | CODE |
| MEDIUM | docs/architecture/language-support.md | 152 | parser.py # ASTParser (language-agnostic orchestration) | CODE |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 141 | # Directories that hold the scaffolding rather than the tests. These only count | COMMENT |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 178 | # A source file whose name ends in "test" and a scaffolding word is the support | COMMENT |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 340 | # token, a test- or support-shaped filename, or a scaffolding dir beneath it | COMMENT |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 439 | # A scaffolding directory that needs no test tree around it settles the | COMMENT |
| MEDIUM | packages/core/src/repowise/core/test_paths.py | 458 | # scaffolding directory demotes it to support. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/upgrade/version.py | 85 | #: state.json key holding the embedding model id the vectors were built with. | COMMENT |
| MEDIUM | packages/core/src/repowise/core/upgrade/manager.py | 105 | # be format-current yet hold vectors from a different embedding model (#426), | COMMENT |
| MEDIUM | packages/core/src/repowise/core/ingestion/traverser.py | 237 | # binary fixtures and scaffolding instead: | COMMENT |
| MEDIUM | packages/core/src/repowise/core/analysis/kg_curation.py | 589 | # Recognised scaffolding earns a real role; only opaque support files fall | COMMENT |
| MEDIUM | …core/analysis/health/biomarkers/mock_saturated_test.py | 43 | _HIGH_RATIO = 8.0 # setup:assertion at which the test is nearly all scaffolding | CODE |
| MEDIUM⚡ | …core/src/repowise/core/analysis/decisions/extractor.py | 681 | # Anti-hallucination substring gate | COMMENT |
| MEDIUM | …core/src/repowise/core/analysis/decisions/extractor.py | 780 | # Raw per-source pool, then the anti-hallucination gate. | COMMENT |
| MEDIUM⚡ | …ore/src/repowise/core/analysis/decisions/provenance.py | 191 | # Anti-hallucination substring gate | COMMENT |
| MEDIUM⚡ | packages/core/src/repowise/core/workspace/update.py | 795 | # Workspace update orchestration | COMMENT |
| MEDIUM | packages/core/src/repowise/core/persistence/models.py | 1159 | # Verification (anti-hallucination gate, Phase 1D). Aggregate over the | COMMENT |
| MEDIUM | …ages/core/src/repowise/core/generation/interlinking.py | 30 | # qualified names. The same expression used by the hallucination | COMMENT |
| MEDIUM⚡ | …ages/core/src/repowise/core/generation/interlinking.py | 195 | # Top-level orchestration | COMMENT |
| MEDIUM | packages/core/src/repowise/core/generation/models.py | 279 | # RAG search is bypassed entirely until the vector store has at least | COMMENT |
| MEDIUM | packages/core/src/repowise/core/generation/models.py | 525 | # cross-run reuse can key on it even when the rendered prompt (RAG | COMMENT |
| MEDIUM | …/core/src/repowise/core/generation/well_known_files.py | 21 | # scaffolding that shows up in almost every repo, where the filename alone is | COMMENT |
| MEDIUM⚡ | …re/src/repowise/core/generation/page_generator/core.py | 232 | # generate_all — orchestration (delegates to orchestrate.py) | COMMENT |
| MEDIUM⚡ | …repowise/core/generation/page_generator/orchestrate.py | 747 | # next level's RAG search depends on these landing in the store. | COMMENT |
| MEDIUM⚡ | …repowise/core/generation/page_generator/orchestrate.py | 748 | # Embedding is a RAG enhancement, not load-bearing, so a failure must | COMMENT |
| MEDIUM | …repowise/core/generation/page_generator/orchestrate.py | 646 | # embedder round-trip and the level drains before the next level's RAG | COMMENT |
| MEDIUM | …/repowise/core/generation/page_generator/validation.py | 463 | # Whole-name hallucinations — the high-signal case — are | COMMENT |
| MEDIUM | …se/core/generation/onboarding/subkinds/key_concepts.py | 605 | # identical from outside, and a scaffolding list that stops matching | COMMENT |
| MEDIUM | …se/core/generation/onboarding/subkinds/key_concepts.py | 606 | # anything reads the same as a repository with no scaffolding in it. | COMMENT |
| MEDIUM | packages/server/src/repowise/server/app.py | 107 | # Honour the indexed embedding model so serve doesn't silently rebuild | COMMENT |
| MEDIUM | …rver/src/repowise/server/mcp_server/_answer_context.py | 247 | return "## Context scaffolding\n\n" + "\n".join(f"- {s}" for s in sections) + "\n" | CODE |
| MEDIUM | …ckages/server/src/repowise/server/mcp_server/_state.py | 54 | # initialise we still fall back to MockEmbedder (so non-RAG tools stay up) but | COMMENT |
| MEDIUM | …s/server/src/repowise/server/mcp_server/tool_symbol.py | 97 | # 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/answer.py | 661 | # dropped when empty, so the prompt never carries hollow scaffolding. | COMMENT |
| MEDIUM | packages/api-client/src/chat.test.ts | 35 | // running the agentic loop against a body nobody reads. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/claude-code/commands/init.md | 10 | ## Step 1: Check if repowise is installed | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 26 | ## Step 2: Check if this repo is already indexed | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 37 | ## Step 3: Offer the mode, but do not block on it | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 175 | ## Step 4: Provider selection (model-written wiki only) | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 204 | ## Step 5: Exclusions | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 212 | ## Step 6: Run it | COMMENT |
| LOW | plugins/claude-code/commands/init.md | 226 | ## Step 7: Post-setup | COMMENT |
| LOW | plugins/shared/commands/init.md | 11 | ## Step 1: Check if repowise is installed | COMMENT |
| LOW | plugins/shared/commands/init.md | 27 | ## Step 2: Check if this repo is already indexed | COMMENT |
| LOW | plugins/shared/commands/init.md | 38 | ## Step 3: Offer the mode, but do not block on it | COMMENT |
| LOW | plugins/shared/commands/init.md | 176 | ## Step 4: Provider selection (model-written wiki only) | COMMENT |
| LOW | plugins/shared/commands/init.md | 205 | ## Step 5: Exclusions | COMMENT |
| LOW | plugins/shared/commands/init.md | 213 | ## Step 6: Run it | COMMENT |
| LOW | plugins/shared/commands/init.md | 227 | ## Step 7: Post-setup | COMMENT |
| LOW | website/getting-started.md | 99 | ### Step 1: Install the plugin | COMMENT |
| LOW | website/getting-started.md | 108 | ### Step 2: Index your repo | COMMENT |
| LOW⚡ | website/getting-started.md | 173 | ### Step 1: Install repowise | COMMENT |
| LOW⚡ | website/getting-started.md | 179 | ### Step 2: Set your API key | COMMENT |
| LOW⚡ | website/getting-started.md | 187 | ### Step 3: Index your repo | COMMENT |
| LOW⚡ | website/getting-started.md | 196 | ### Step 4: Connect Claude Code | COMMENT |
| LOW⚡ | website/getting-started.md | 212 | ### Step 1: Install repowise and Codex | COMMENT |
| LOW⚡ | website/getting-started.md | 221 | ### Step 2: Index your repo | COMMENT |
| LOW⚡ | website/getting-started.md | 230 | ### Step 3: Start Codex | COMMENT |
| LOW⚡ | website/getting-started.md | 244 | ### Step 1: Install and set up | COMMENT |
| LOW⚡ | website/getting-started.md | 251 | ### Step 2: Index your repo | COMMENT |
| LOW⚡ | website/getting-started.md | 258 | ### Step 3: Start the web dashboard | COMMENT |
| LOW⚡ | website/getting-started.md | 266 | ### Step 4: Start the MCP server (optional) | COMMENT |
| LOW⚡ | tests/unit/health/test_refactoring_naming.py | 122 | assert banner_words(["# Step 1: Parse git logs"]) == ["parse", "git", "logs"] | CODE |
| LOW⚡ | tests/integration/test_mcp.py | 351 | # Step 1: Get overview | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 358 | # Step 2: Drill into auth module via get_context. | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 367 | # Step 3: Get file context | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 374 | # Step 4: Look up a symbol | COMMENT |
| LOW | docs/architecture/agent-platform.md | 85 | ### Step 1: the provider module | COMMENT |
| LOW | docs/architecture/agent-platform.md | 151 | ### Step 2: the `ProviderSpec` | COMMENT |
| LOW | docs/architecture/agent-platform.md | 192 | ### Step 3: link the identity | COMMENT |
| LOW | docs/architecture/agent-platform.md | 204 | ### Step 4: the contract test | COMMENT |
| LOW | docs/architecture/agent-platform.md | 236 | ### Step 5: update the frozen lists | COMMENT |
| LOW | docs/architecture/agent-platform.md | 256 | ### Step 6: user docs (optional) | COMMENT |
| LOW | docs/architecture/agent-platform.md | 303 | ### Step 1: the identity | COMMENT |
| LOW | docs/architecture/agent-platform.md | 311 | ### Step 2: the target module | COMMENT |
| LOW | docs/architecture/agent-platform.md | 373 | ### Step 3: register it | COMMENT |
| LOW | docs/architecture/agent-platform.md | 387 | ### Step 4: the README badge and the matrix | COMMENT |
| LOW | docs/architecture/agent-platform.md | 397 | ### Step 5: verify | COMMENT |
| LOW | docs/architecture/language-support.md | 185 | #### Step 1: Add a `LanguageSpec` module | COMMENT |
| LOW | docs/architecture/language-support.md | 269 | #### Step 2: Add the `LanguageTag` | COMMENT |
| LOW | docs/architecture/language-support.md | 277 | #### Step 3: Write a tree-sitter query file | COMMENT |
| LOW | docs/architecture/language-support.md | 307 | #### Step 4: Add a `LanguageConfig` entry | COMMENT |
| LOW | docs/architecture/language-support.md | 328 | #### Step 5: Add the tree-sitter grammar dependency | COMMENT |
| LOW⚡ | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 149 | # Step 1: try path alias entries. | COMMENT |
| LOW⚡ | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 159 | # Step 2: baseUrl-only fallback. | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/update.py | 1146 | # Step 3: Save workspace config with updated timestamps | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/update.py | 1150 | # Step 4: Run cross-repo hooks (Phase 3/4 placeholder). ``run_hooks`` lets | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 848 | # Step 1: Determine which repos are stale | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 860 | # Step 0: Sync ``last_commit_at_index`` from each repo's state.json so | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 985 | # Step 2: Update stale repos (parallel with concurrency limit). | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 437 | # Step 1: Parse git logs for all repos | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 444 | # Step 2: Drop noise files, then commits left with nothing, then | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 460 | # Step 3: Group all commits by author identity, tagged with repo alias | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 466 | # Step 4: Walk each author's sessions, accumulating per-file activity | COMMENT |
| LOW | …s/core/src/repowise/core/generation/knowledge_graph.py | 414 | # Step 1: main entry point | COMMENT |
| 15 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 78 | assert owner_key("Jane Doe", None) == "name:Jane Doe" | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 98 | ("Jane Doe", "jane@company.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 99 | ("Jane Doe", "12345+jane@users.noreply.github.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 102 | assert resolve("Jane Doe", "jane@company.com") == "jane@company.com" | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 103 | assert resolve("Jane Doe", "12345+jane@users.noreply.github.com") == "jane@company.com" | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 130 | ("Jane Doe", "jane@company.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 273 | ("Jane Doe", f"11+janed{_NR}"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 274 | ("Jane Doe", f"22+jdoe99{_NR}"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 275 | ("Jane Doe", "jane@corp.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 297 | ("Jane Doe", f"41+shared{_NR}"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 299 | ("Jane Doe", "jane@corp.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_author_identity.py | 301 | ("Jane Doe", "build@ci-box.local"), | CODE |
| LOW | tests/unit/ingestion/test_author_identity.py | 312 | ("Jane Doe", "12-jdoe@users.noreply.gitlab.com"), | CODE |
| LOW | tests/unit/ingestion/test_author_identity.py | 313 | ("Jane Doe", "jane@corp.com"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_agent_provenance.py | 150 | prov = _classify(an="Jane Doe", ae="jane@anthropic.com") | CODE |
| LOW | tests/unit/core/test_forges_identity.py | 34 | ("1234-jdoe@users.noreply.gitlab.com", "Jane Doe", | CODE |
| LOW | tests/unit/core/test_forges_identity.py | 53 | ("commits-noreply@bitbucket.org", "Jane Doe", "commits-noreply@bitbucket.org", True), | CODE |
| LOW⚡ | tests/unit/analysis/test_security_gate.py | 103 | _commit(repo, "placeholder") | CODE |
| LOW⚡ | tests/unit/workspace/test_update.py | 110 | ["git", "config", "user.email", "test@test.com"], | CODE |
| LOW | tests/unit/workspace/test_incremental_update.py | 47 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW | tests/unit/workspace/test_cross_repo.py | 60 | author_name="Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/test_stats_contributors.py | 31 | _commit("a1", "Jane Doe", "jane@company.com", 1000), | CODE |
| LOW⚡ | tests/unit/server/test_stats_contributors.py | 32 | _commit("a2", "Jane Doe", "12345+jane@users.noreply.github.com", 1100), | CODE |
| LOW⚡ | tests/unit/server/test_stats_contributors.py | 33 | _commit("a3", "Jane Doe", "999+jane@users.noreply.github.com", 1200), | CODE |
| LOW⚡ | tests/unit/server/test_stats_contributors.py | 44 | _commit("a1", "Jane Doe", "jane@company.com", 1_600_000_000), | CODE |
| LOW⚡ | tests/unit/server/test_stats_contributors.py | 45 | _commit("a2", "Jane Doe", "jane@company.com", 1_600_086_400), | CODE |
| LOW⚡ | tests/unit/server/test_stats_bot_filter.py | 46 | ("Jane Doe", "jane@anthropic.com"), | CODE |
| LOW | tests/unit/server/test_stats_superlatives.py | 36 | "author_name": "Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/test_owners.py | 208 | primary_owner_name="Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/test_owners.py | 211 | [{"name": "Jane Doe", "email": "jane@company.com", "commit_count": 10}] | CODE |
| LOW⚡ | tests/unit/server/test_owners.py | 221 | primary_owner_name="Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/test_owners.py | 226 | "name": "Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/test_owners.py | 243 | assert jane.name == "Jane Doe" | CODE |
| LOW⚡ | tests/unit/server/test_stats_signals.py | 24 | "author_name": "Jane Doe", | CODE |
| LOW | tests/unit/server/mcp/test_exception_group_leaves.py | 54 | empty = _Empty("nothing", [ValueError("placeholder")]) | CODE |
| LOW | tests/unit/server/mcp/test_ff_mcp_payload_overview.py | 26 | "primary_owner_name": "Jane Doe", | CODE |
| LOW⚡ | tests/unit/server/mcp/test_ff_mcp_payload_overview.py | 53 | assert top["name"] == "Jane Doe" | CODE |
| LOW⚡ | tests/unit/server/mcp/test_ff_mcp_payload_overview.py | 63 | assert _owner_display_name("Jane Doe", "jane.doe@example.com") == "Jane Doe" | CODE |
| LOW | tests/unit/server/mcp/test_working_tree_freshness.py | 66 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW | tests/unit/cli/test_update_provider_prompt.py | 38 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW⚡ | tests/unit/cli/test_init_failure_reporting.py | 461 | assert "placeholder" not in output | CODE |
| LOW | tests/unit/cli/test_docs_pointer.py | 60 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW | tests/unit/cli/test_workspace_docs_pointer.py | 39 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW | tests/unit/cli/test_update_e2e.py | 74 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW | tests/unit/cli/test_update_e2e.py | 190 | _git(repo, "config", "user.email", "test@test.com") | CODE |
| LOW⚡ | tests/unit/test_providers/test_gemini_provider.py | 225 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW⚡ | tests/unit/test_providers/test_gemini_provider.py | 239 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW⚡ | tests/unit/test_providers/test_gemini_provider.py | 250 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW⚡ | tests/unit/test_providers/test_gemini_provider.py | 261 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | tests/unit/test_providers/test_gemini_provider.py | 145 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | tests/unit/test_providers/test_gemini_provider.py | 159 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | tests/unit/test_providers/test_gemini_provider.py | 171 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | tests/unit/test_providers/test_gemini_provider.py | 185 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | tests/unit/test_providers/test_gemini_provider.py | 204 | provider = GeminiProvider(api_key="fake-key") | CODE |
| LOW | packages/ui/__tests__/chat/chat-dock.test.tsx | 68 | "placeholder", | CODE |
| LOW | packages/ui/__tests__/chat/chat-dock.test.tsx | 86 | "placeholder", | CODE |
| LOW | packages/ui/__tests__/chat/chat-interface.test.tsx | 204 | "placeholder", | CODE |
| LOW | …kages/core/src/repowise/core/analysis/security_scan.py | 75 | "placeholder", | CODE |
| LOW | …re/src/repowise/core/analysis/actions/rules/hygiene.py | 35 | _PLACEHOLDER_MARKERS = ("...", "…", "<", "your", "xxx", "example", "placeholder", "dummy", "fake", "changeme") | CODE |
| LOW | …src/repowise/core/persistence/decision_id_migration.py | 324 | {"new_id": to_id, "placeholder": placeholder, "old_id": from_id}, | CODE |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/pipeline/test_authoritative_page_types.py | 35 | "def helper(n: int) -> int:\n return n + 1\n", | CODE |
| LOW | …ts/unit/pipeline/test_init_update_graph_convergence.py | 47 | "def helper(x):\n return x + 1\n", | CODE |
| LOW | tests/unit/pipeline/test_ingestion_parse_cache.py | 17 | (repo / "util.py").write_text("def helper(x):\n return x + 1\n", encoding="utf-8") | CODE |
| LOW | tests/unit/pipeline/test_ingestion_parse_cache.py | 52 | "def helper(x):\n return x * 3\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_resolver_merged_index.py | 62 | "lib.py": ("python", "def helper():\n return 1\n"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_resolver_merged_index.py | 84 | "a_lib.py": ("python", "def helper():\n return 'a'\n"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_resolver_merged_index.py | 85 | "z_lib.py": ("python", "def helper():\n return 'z'\n"), | CODE |
| LOW⚡ | tests/unit/ingestion/test_resolver_merged_index.py | 152 | "class Other:\n def helper(self):\n return 1\n" | CODE |
| LOW⚡ | tests/unit/ingestion/test_traverser.py | 156 | (tmp_path / "src" / "utils.py").write_text("def helper(): pass") | CODE |
| LOW⚡ | tests/unit/ingestion/test_star_import_barrel.py | 46 | "pkg/leaf.py": "def helper(x):\n return x\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_star_import_barrel.py | 49 | "other.py": "class Thing:\n def helper(self, x):\n return x\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_star_import_barrel.py | 163 | "pkg/leaf.py": "def helper(x):\n return x\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_star_import_barrel.py | 166 | "other.py": "class Thing:\n def helper(self, x):\n return x\n", | CODE |
| LOW | tests/unit/ingestion/test_enclosing_class_calls.py | 107 | def helper(self): | STRING |
| LOW | tests/unit/ingestion/test_enclosing_class_calls.py | 115 | def helper(self): | STRING |
| LOW | tests/unit/ingestion/test_single_query_pass.py | 32 | def helper(arg: str) -> str: | CODE |
| LOW | tests/unit/ingestion/test_working_tree_changes.py | 33 | (tmp_path / "util.py").write_text("def helper():\n return 2\n", encoding="utf-8") | CODE |
| LOW | tests/unit/ingestion/test_value_reference_edges.py | 327 | "def helper():\n return 1\n\n\ndef run():\n return helper()\n" | CODE |
| LOW | tests/unit/ingestion/test_python_qualified_names.py | 14 | _PY = b"class Widget:\n def run(self):\n pass\n\n\ndef helper():\n pass\n" | CODE |
| LOW | tests/unit/ingestion/test_self_call_resolution.py | 62 | def helper(self): | CODE |
| LOW⚡ | tests/unit/ingestion/test_shadowed_bare_calls.py | 179 | def helper(x): | CODE |
| LOW⚡ | tests/unit/ingestion/test_pytest_fixture_edges.py | 174 | "def helper(client):\n return client\n" | CODE |
| LOW⚡ | tests/unit/ingestion/test_subgraph_cache.py | 42 | gb.add_file(_parsed(tmp_path, "b.py", "def helper():\n return 1\n")) | CODE |
| LOW | tests/unit/ingestion/test_centrality_cache.py | 21 | _UTIL = "def helper(x):\n return x + 1\n" | CODE |
| LOW⚡ | tests/unit/ingestion/test_dispatch_edges.py | 204 | "base.py": "class Base:\n def helper(self):\n return 1\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_dispatch_edges.py | 225 | "l.py": "class Left:\n def helper(self):\n return 1\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_dispatch_edges.py | 226 | "r.py": "class Right:\n def helper(self):\n return 2\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_dispatch_edges.py | 247 | "base.py": "class Base:\n def helper(self):\n return 1\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_dispatch_edges.py | 251 | " def helper(self):\n" | CODE |
| LOW | tests/unit/ingestion/test_dispatch_edges.py | 327 | "base.py": "class Base:\n def helper(self):\n return 1\n", | CODE |
| LOW | tests/unit/ingestion/test_metrics_precompute.py | 36 | "b.py": "def helper():\n return 1\n", | CODE |
| LOW | tests/unit/ingestion/test_parse_cache.py | 28 | "def helper(x):\n return x + 1\n", | CODE |
| LOW⚡ | tests/unit/ingestion/test_parse_cache.py | 86 | "def helper(x):\n return x * 2\n\n\ndef extra(y):\n return y\n", | CODE |
| LOW | tests/unit/ingestion/parser/test_scala.py | 21 | private def helper(): Unit = {} | CODE |
| LOW⚡ | tests/unit/dead_code/test_entry_shape.py | 119 | body = '"""Old helpers."""\nimport os\n\nLIMIT = 3\n\ndef helper():\n return os.sep\n' | CODE |
| LOW⚡ | tests/unit/dead_code/test_entry_shape.py | 265 | files["handlers/d.py"] = _handler("d") + "\ndef helper():\n return 1\n" | CODE |
| LOW | tests/unit/dead_code/test_entry_shape.py | 198 | "pkg/old.py": b"def helper():\n return 1\n", | CODE |
| LOW⚡ | tests/unit/dead_code/test_cpp_name_uses.py | 160 | source = {"a.py": b"def helper():\n pass\n", "b.py": b"helper()\n"} | STRING |
| LOW | tests/unit/dead_code/test_module_strings.py | 120 | _BACKENDS_SRC = b"class EmailBackend:\n pass\n\n\ndef helper():\n pass\n" | STRING |
| LOW | tests/unit/health/test_dataflow_langs.py | 1702 | def helper(value): | STRING |
| LOW⚡ | tests/unit/health/test_perf_crossfn.py | 113 | b"def helper(session, r):\n" | CODE |
| LOW⚡ | tests/unit/health/test_assertion_free_test.py | 65 | "def helper():\n" | CODE |
| LOW | tests/unit/health/test_mock_saturated_test.py | 185 | def helper(): | STRING |
| LOW | tests/unit/health/test_refactoring_extract_method.py | 374 | def helper(v): | CODE |
| LOW | tests/unit/distill/test_skeleton_plus.py | 49 | def helper(): # BODY | CODE |
| LOW | tests/unit/server/mcp/test_context_references.py | 19 | _CATALOG = """def helper(): | CODE |
| LOW | tests/unit/cli/test_risk_cmd_contract.py | 48 | {"src/app.py": "value = 1\n", "src/util.py": "def helper():\n return 2\n"}, | CODE |
| LOW | tests/unit/cli/test_update_forgets_deleted_files.py | 63 | "def helper():\n return 1\n\n\ndef unused():\n return 2\n", encoding="utf-8" | CODE |
| LOW⚡ | tests/unit/cli/test_impacted_tests_cmd.py | 301 | "src/test_util.py": "def helper():\n pass\n", | CODE |
| LOW⚡ | tests/unit/change_health/test_comparison.py | 150 | repo.commit("append", {"app.py": original + "\n\ndef helper():\n return 1\n"}) | CODE |
| LOW | tests/unit/generation/test_package_public_api.py | 222 | "lib/_util.py": "__all__ = []\n\ndef helper():\n pass\n", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/health/test_coverage_biomarkers.py | 25 | CODE | |
| LOW | tests/unit/distill/test_saved_cmd.py | 69 | CODE | |
| LOW | tests/unit/server/test_savings_endpoint.py | 32 | CODE | |
| LOW | tests/unit/server/mcp/test_why_search_payload.py | 26 | CODE | |
| LOW | tests/unit/generation/conftest.py | 49 | CODE | |
| LOW | tests/unit/generation/test_onboarding.py | 106 | CODE | |
| LOW | tests/unit/generation/test_workspace_claude_md.py | 36 | CODE | |
| LOW | …ckages/core/src/repowise/core/pipeline/orchestrator.py | 189 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/full_index.py | 16 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/incremental.py | 256 | CODE | |
| LOW | packages/core/src/repowise/core/pipeline/incremental.py | 1898 | CODE | |
| LOW | …s/core/src/repowise/core/pipeline/phases/generation.py | 30 | CODE | |
| LOW | …rc/repowise/core/ingestion/git_indexer/file_history.py | 308 | CODE | |
| LOW | packages/core/src/repowise/core/analysis/test_impact.py | 174 | CODE | |
| LOW | …kages/core/src/repowise/core/analysis/health/engine.py | 782 | CODE | |
| LOW | …kages/core/src/repowise/core/analysis/health/engine.py | 1583 | CODE | |
| LOW | …e/src/repowise/core/analysis/health/fix_first/build.py | 1556 | CODE | |
| LOW | …c/repowise/core/analysis/health/refactoring/serving.py | 197 | CODE | |
| LOW | …core/src/repowise/core/analysis/health/perf/serving.py | 315 | CODE | |
| LOW | …repowise/core/analysis/health/duplication/isolation.py | 75 | CODE | |
| LOW | …/core/src/repowise/core/analysis/doc_drift/analyzer.py | 76 | CODE | |
| LOW | …kages/core/src/repowise/core/analysis/actions/build.py | 452 | CODE | |
| LOW | packages/core/src/repowise/core/workspace/update.py | 801 | CODE | |
| LOW | …ckages/core/src/repowise/core/workspace/test_impact.py | 437 | CODE | |
| LOW | packages/core/src/repowise/core/workspace/reads.py | 109 | CODE | |
| LOW | …s/core/src/repowise/core/persistence/crud/decisions.py | 104 | CODE | |
| LOW | …s/core/src/repowise/core/persistence/crud/decisions.py | 279 | CODE | |
| LOW | …kages/core/src/repowise/core/persistence/crud/pages.py | 231 | CODE | |
| LOW | …s/core/src/repowise/core/persistence/crud/authority.py | 523 | CODE | |
| LOW | …s/core/src/repowise/core/persistence/crud/authority.py | 663 | CODE | |
| LOW | …/core/src/repowise/core/persistence/crud/repository.py | 183 | CODE | |
| LOW | …/src/repowise/core/persistence/crud/analysis/health.py | 464 | CODE | |
| LOW | …persistence/crud/analysis/refactoring_opportunities.py | 629 | CODE | |
| LOW | …repowise/core/persistence/crud/analysis/performance.py | 507 | CODE | |
| LOW | …s/core/src/repowise/core/registry/mcp_tool_registry.py | 92 | CODE | |
| LOW | …/core/src/repowise/core/generation/architecture_map.py | 129 | CODE | |
| LOW | …core/src/repowise/core/generation/context/assembler.py | 495 | CODE | |
| LOW | …src/repowise/core/generation/page_generator/pertype.py | 215 | CODE | |
| LOW | …src/repowise/core/generation/page_generator/pertype.py | 435 | CODE | |
| LOW | …re/src/repowise/core/generation/page_generator/core.py | 235 | CODE | |
| LOW | …repowise/core/generation/page_generator/orchestrate.py | 89 | CODE | |
| LOW | …ages/server/src/repowise/server/routers/refactoring.py | 127 | CODE | |
| LOW | …ckages/server/src/repowise/server/routers/decisions.py | 146 | CODE | |
| LOW | packages/server/src/repowise/server/routers/symbols.py | 197 | CODE | |
| LOW | packages/server/src/repowise/server/routers/pages.py | 124 | CODE | |
| LOW | …ckages/server/src/repowise/server/routers/workspace.py | 262 | CODE | |
| LOW | …rc/repowise/server/routers/code_health/files_routes.py | 43 | CODE | |
| LOW | …repowise/server/routers/code_health/findings_routes.py | 36 | CODE | |
| LOW | …owise/server/routers/code_health/performance_routes.py | 55 | CODE | |
| LOW | …owise/server/routers/code_health/refactoring_routes.py | 54 | CODE | |
| LOW | …s/server/src/repowise/server/mcp_server/tool_search.py | 1207 | CODE | |
| LOW | …ver/src/repowise/server/mcp_server/tool_change_risk.py | 157 | CODE | |
| LOW | …erver/src/repowise/server/mcp_server/tool_dead_code.py | 152 | CODE | |
| LOW | …ver/src/repowise/server/mcp_server/tool_health/tool.py | 124 | CODE | |
| LOW | packages/cli/src/repowise/cli/ui/result_panels.py | 32 | CODE | |
| LOW | …li/src/repowise/cli/commands/update_cmd/persistence.py | 414 | CODE | |
| LOW | …li/src/repowise/cli/commands/update_cmd/persistence.py | 701 | CODE | |
| LOW | …li/src/repowise/cli/commands/update_cmd/persistence.py | 773 | CODE | |
| LOW | …es/cli/src/repowise/cli/commands/update_cmd/command.py | 433 | CODE | |
| LOW | …es/cli/src/repowise/cli/commands/update_cmd/command.py | 643 | CODE | |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/health/test_refactoring_naming.py | 122 | assert banner_words(["# Step 1: Parse git logs"]) == ["parse", "git", "logs"] | CODE |
| LOW⚡ | tests/integration/test_mcp.py | 351 | # Step 1: Get overview | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 358 | # Step 2: Drill into auth module via get_context. | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 367 | # Step 3: Get file context | COMMENT |
| LOW⚡ | tests/integration/test_mcp.py | 374 | # Step 4: Look up a symbol | COMMENT |
| LOW⚡ | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 149 | # Step 1: try path alias entries. | COMMENT |
| LOW⚡ | …/core/src/repowise/core/ingestion/tsconfig_resolver.py | 159 | # Step 2: baseUrl-only fallback. | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/update.py | 1146 | # Step 3: Save workspace config with updated timestamps | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/update.py | 1150 | # Step 4: Run cross-repo hooks (Phase 3/4 placeholder). ``run_hooks`` lets | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 848 | # Step 1: Determine which repos are stale | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 860 | # Step 0: Sync ``last_commit_at_index`` from each repo's state.json so | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/update.py | 985 | # Step 2: Update stale repos (parallel with concurrency limit). | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 437 | # Step 1: Parse git logs for all repos | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 444 | # Step 2: Drop noise files, then commits left with nothing, then | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 460 | # Step 3: Group all commits by author identity, tagged with repo alias | COMMENT |
| LOW⚡ | packages/core/src/repowise/core/workspace/cross_repo.py | 466 | # Step 4: Walk each author's sessions, accumulating per-file activity | COMMENT |
| LOW | …s/core/src/repowise/core/generation/knowledge_graph.py | 414 | # Step 1: main entry point | COMMENT |
| LOW⚡ | …kages/server/src/repowise/server/mcp_server/_server.py | 448 | # Step 2: pre-connect so first search() is instant. | COMMENT |
| LOW⚡ | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 869 | # Step 3: Create workspace config | COMMENT |
| LOW⚡ | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 969 | # Step 5: Cross-repo analysis (co-changes, package deps, contracts) | COMMENT |
| LOW⚡ | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 972 | # Step 6: Register primary repo with configured editor clients | COMMENT |
| LOW⚡ | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 978 | # Step 7: Completion summary | COMMENT |
| LOW | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 742 | # Step 1: Select repos to index | COMMENT |
| LOW | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 758 | # Step 2: Select primary repo | COMMENT |
| LOW | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 896 | # Step 4: Index each selected repo (always generate_docs=False; generation is separate) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/workspace/test_registry.py | 32 | # Create an empty wiki.db — init_db will create tables on first access | COMMENT |
| MEDIUM⚡ | tests/unit/server/test_decisions_lanes.py | 382 | # Creating a record by hand | COMMENT |
| MEDIUM⚡ | tests/unit/cli/test_workspace_cmd.py | 312 | # Create a git repo inside the workspace root | COMMENT |
| MEDIUM | tests/unit/cli/test_workspace_cmd.py | 192 | # Create a subdirectory that has no workspace config anywhere in its tree | COMMENT |
| MEDIUM⚡ | tests/integration/test_dead_code_integration.py | 68 | # Create a mock provider | COMMENT |
| MEDIUM⚡ | tests/integration/test_git_intelligence_integration.py | 32 | # Create a temp dir with a file so GitIndexer has something to look at, | COMMENT |
| MEDIUM⚡ | …kages/server/src/repowise/server/mcp_server/_server.py | 723 | # Create the MCP server | COMMENT |
| MEDIUM | …kages/server/src/repowise/server/mcp_server/_server.py | 652 | # Creating the store directory here made whatever directory an | COMMENT |
| MEDIUM | …ages/cli/src/repowise/cli/commands/init_cmd/command.py | 1519 | # Create the engine, session factory, and repository row *before* | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/analysis/test_security_scan.py | 285 | 'api_key = "your-api-key-here"\n', | CODE |
| HIGH⚡ | tests/unit/analysis/test_security_scan.py | 286 | 'api_key = "<YOUR_API_KEY>"\n', | CODE |
| HIGH⚡ | tests/unit/analysis/test_security_scan.py | 286 | 'api_key = "<YOUR_API_KEY>"\n', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …kages/core/src/repowise/core/providers/llm/registry.py | 231 | Instantiate a provider by name. Providers are imported lazily — only the requested provider's dependencies need | STRING |
| HIGH | packages/core/src/repowise/core/providers/llm/base.py | 277 | Generate a response from the LLM. Args: system_prompt: System-level instructions (role, output form | STRING |
| HIGH | …core/src/repowise/core/providers/embedding/registry.py | 64 | Instantiate an embedder by name. Args: name: Embedder identifier ('openai', 'gemini', 'mock'). | STRING |
| HIGH | …es/core/src/repowise/core/generation/page_redirects.py | 161 | The live page id a retired one now points at, or ``None``. Follows retirement chains to their end, so the returned | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/CHANGELOG.md | 283 | - **`get_why` stops claiming a ruling the store does not hold** (#2280, #2282, #2322). A record is a candidate until a ` | CODE |
| HIGH | …ages/core/src/repowise/core/upgrade/_data/CHANGELOG.md | 283 | - **`get_why` stops claiming a ruling the store does not hold** (#2280, #2282, #2322). A record is a candidate until a ` | CODE |
| HIGH | …es/cli/src/repowise/cli/commands/init_cmd/workspace.py | 201 | # A previously-persisted embedder on THIS repo counts as requested (re-init | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …rc/repowise/core/ingestion/resolvers/rust_workspace.py | 276 | # Check if this is a proc-macro crate | COMMENT |
| LOW | …ges/core/src/repowise/core/ingestion/resolvers/rust.py | 114 | # Check if it might be a local module at the crate root first | COMMENT |
| LOW | …ges/core/src/repowise/core/analysis/execution_flows.py | 248 | # Check if the containing file is marked as an entry point | COMMENT |
| LOW | …repowise/core/analysis/health/complexity/cyclomatic.py | 380 | # Check if this is a case/arm inside a flat match — skip it. | COMMENT |
| LOW | packages/core/src/repowise/core/workspace/scanner.py | 98 | # Check if root itself is a git repo | COMMENT |
| LOW | packages/server/src/repowise/server/routers/jobs.py | 210 | # Check if client disconnected | COMMENT |
| LOW | …rver/src/repowise/server/mcp_server/tool_dependency.py | 273 | # Check if they're in completely disconnected components | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/server/test_chat_router.py | 448 | CODE | |
| MEDIUM | tests/unit/server/test_chat_stream_terminal_event.py | 58 | CODE | |
| MEDIUM | …ver/src/repowise/server/mcp_server/_budget/budgeter.py | 776 | CODE | |
| MEDIUM | …ver/src/repowise/server/mcp_server/_budget/budgeter.py | 787 | CODE | |
| MEDIUM | …ver/src/repowise/server/mcp_server/_budget/budgeter.py | 804 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/unit/workspace/test_go_clients.py | 127 | // Example usage: | COMMENT |