AI Slop Code RIsk Monitor

Graphify-Labs/graphify

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

37.4 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Graphify-Labs/graphify, a Python project with 125,373 GitHub stars. SynthScan examined 293,107 lines of code across 867 source files, recording 8922 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 37.4 (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.

37.4
Adjusted Signal
37.4
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
125.4K
Stars
Python
Language
293.1K
Lines of Code
867
Files
8.9K
Pattern Hits
2026-10-12
Scan Date
0.35
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 66.0/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 6998 finding(s).

Hallucinated Dependency & Supply Chain Risk 20.9/100 · LOW

Are imports declared and package/API names verified? 876 finding(s).

Agent Over-Engineering Ratio 76.1/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 6937 finding(s).

PR Review Velocity Impact 86.4/100 · CRITICAL

Which changes need focused human review? 8922 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 305MEDIUM 627LOW 7990

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 8922 distinct pattern matches across 18 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.

Hyper-Verbose Identifiers5883 hits · 5125 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py893def _is_frontmatter_description_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py947def _is_content_scope_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py962def _is_cache_unlink_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py976def _is_zero_node_guard_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1002def _is_manifest_root_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1017def _is_manifest_stamp_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1045def _is_sensitive_reporting_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1066def _is_shebang_allowlist_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1079def _is_obsidian_usage_comment_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1090def _is_uv_from_interpreter_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1104def _is_semantic_cache_scope_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1120def _is_community_label_export_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1165def _is_watch_injection_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1183def _is_graph_diff_direction_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1200def _is_persisted_scan_options_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1212def _is_worktree_visibility_note_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py1252def _is_sanctioned_monolith_diff(line: str) -> bool:CODE
LOWworked/mixed-corpus/raw/analyze.py239def _cross_community_surprises(CODE
LOWworked/httpx/raw/utils.py55def obfuscate_sensitive_headers(headers: dict) -> dict:CODE
LOWtests/test_forwarding_review_findings.py11def test_star_cycle_with_real_definition_does_not_mask_unique_origin(tmp_path):CODE
LOWtests/test_forwarding_review_findings.py29def test_sourceless_owned_node_is_not_an_export_definition(tmp_path):CODE
LOWtests/test_forwarding_review_findings.py58def test_legacy_aggregate_pattern_facts_and_nodes_are_preserved(tmp_path):CODE
LOWtests/test_forwarding_review_findings.py84def test_identifier_alias_fact_and_binding_are_preserved(tmp_path):CODE
LOWtests/test_forwarding_review_findings.py110def test_longer_export_cycle_with_definition_remains_resolvable(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py51def test_member_chain_on_parameter_field_resolves(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py61def test_member_chain_on_field_receiver_resolves(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py70def test_member_chain_with_unknown_field_gives_no_edge(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py79def test_member_chain_with_untyped_root_gives_no_edge(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py96def test_element_access_on_array_field_resolves_to_element_type(tmp_path):CODE
LOW⚡tests/test_csharp_member_chain_calls.py113def test_element_access_on_list_local_resolves(tmp_path):CODE
LOWtests/test_csharp_member_chain_calls.py129def test_element_access_without_element_type_gives_no_edge(tmp_path):CODE
LOWtests/test_csharp_member_chain_calls.py147def test_constructor_calls_are_attributed_to_the_type(tmp_path):CODE
LOWtests/test_csharp_member_chain_calls.py165def test_constructor_typed_parameter_and_this_calls_resolve(tmp_path):CODE
LOWtests/test_csharp_member_chain_calls.py213def test_element_of_type_parameter_list_stays_unresolved(tmp_path):CODE
LOWtests/test_csharp_member_chain_calls.py229def test_element_of_nested_list_stays_unresolved(tmp_path):CODE
LOW⚡tests/test_no_cluster_run_only_keys.py39def test_run_only_keys_are_the_ones_extract_returns(tmp_path: Path):CODE
LOW⚡tests/test_no_cluster_run_only_keys.py47def test_update_no_cluster_first_build_matches_a_rebuild(tmp_path: Path):CODE
LOW⚡tests/test_no_cluster_run_only_keys.py55def test_extract_no_cluster_omits_run_only_keys(tmp_path: Path):CODE
LOWtests/test_extract_cli.py22def test_extract_exits_nonzero_when_ast_extraction_raises(CODE
LOWtests/test_extract_cli.py59def test_extract_allow_partial_continues_past_ast_failure(CODE
LOWtests/test_extract_cli.py112def test_extract_exits_nonzero_when_all_semantic_chunks_fail(CODE
LOWtests/test_extract_cli.py173def test_extract_succeeds_when_at_least_one_chunk_completes(CODE
LOWtests/test_extract_cli.py230def test_incremental_partial_run_preserves_untouched_semantic_hash(CODE
LOWtests/test_extract_cli.py305def test_truncated_doc_semantic_hash_is_cleared_for_requeue(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py356def test_manifest_stamps_freshly_extracted_semantic_docs(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py416def test_stamped_manifest_files_normalizes_both_sides(tmp_path):CODE
LOWtests/test_extract_cli.py450def test_stamped_manifest_files_counts_hyperedge_only_docs(tmp_path):CODE
LOWtests/test_extract_cli.py478def test_manifest_stamps_hyperedge_only_docs(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py546def test_extract_mode_deep_dispatches_over_warm_cache(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py593def test_extract_force_flag_redispatches_and_stamps_manifest(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py633def test_extract_graphify_force_env_redispatches(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py656def test_cache_check_mode_deep_reads_deep_namespace(monkeypatch, tmp_path, capsys):CODE
LOWtests/test_extract_cli.py700def test_extract_codeonly_succeeds_without_api_key(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py727def test_missing_manifest_code_only_preserves_semantic_layer(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py794def test_extract_out_keeps_project_root_clean(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py831def test_extract_without_key_still_errors_when_docs_present(CODE
LOWtests/test_extract_cli.py859def test_extract_timing_flag_emits_stage_timings(monkeypatch, tmp_path, capsys):CODE
LOWtests/test_extract_cli.py894def test_pathless_postgres_extract_initializes_empty_detection(CODE
LOWtests/test_extract_cli.py1034def test_incremental_extract_prunes_newly_excluded_file_not_in_manifest(CODE
LOWtests/test_extract_cli.py1083def test_incremental_extract_prunes_excluded_file_listed_in_manifest(CODE
5823 more matches not shown…
Decorative Section Separators603 hits · 2207 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_extract_cli.py999# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_extract_cli.py1004# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_extract_cli.py1166# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_extract_cli.py1172# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_extract_cli.py1555# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_extract_cli.py1562# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_pdf_slicing.py134# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_pdf_slicing.py136# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_csharp_partial_classes.py261# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_csharp_partial_classes.py268# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_csharp_enum_members.py166# ── #4245: a call must never bind to a same-named enum member ──────────────COMMENT
MEDIUM⚡tests/test_semantic_similarity.py9# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py11# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py64# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py66# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py81# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py83# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py92# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py95# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py125# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_semantic_similarity.py127# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_tree_html.py51# ── build_tree unit tests ─────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_tree_html.py83# ── CLI integration ───────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_codebuddy.py43# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py45# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py69# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py71# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py180# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py182# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py233# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py235# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py273# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_codebuddy.py275# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py10# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py12# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_pascal.py225# ── Lazarus Form (.lfm) ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_pascal.py279# ── Lazarus Package (.lpk) ───────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_pascal.py325# ── Delphi Form (.dfm) ───────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py48# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py50# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py128# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py130# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py142# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py145# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py178# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_inherited_field_receivers.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_build_merge_hyperedges_and_prune.py36# ── #1574: hyperedge preservation ─────────────────────────────────────────────COMMENT
MEDIUMtests/test_build_merge_hyperedges_and_prune.py143# ── #1571: root-less prune (absolute deleted paths vs relative node keys) ──────COMMENT
MEDIUM⚡tests/test_dedup.py14# ── entropy gate ─────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_dedup.py26# ── shingles ─────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_dedup.py39# ── full pipeline ─────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_dedup.py172# ── build integration ─────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_dedup.py1089# ── #2576: same-file labels differing by a content-word swap ──────────────────COMMENT
MEDIUMtests/test_dedup.py346# ── #1284: numbered siblings + cross-file file-anchored boilerplate ──────────COMMENT
MEDIUMtests/test_dedup.py414# ── #1243: JaroWinkler prefix-bonus over-merge (cross-file) ──────────────────COMMENT
MEDIUMtests/test_dedup.py442# ── #1504: cross-chunk node ID collision warning ──────────────────────────────COMMENT
MEDIUMtests/test_dedup.py482# ── #1857: dedup summary log breakdown ────────────────────────────────────────COMMENT
MEDIUMtests/test_dedup.py518# ── ID collisions: definition vs cross-reference ──────────────────────────────COMMENT
MEDIUMtests/test_dedup.py570# ── #3352: non-Latin source paths must still define their own id ─────────────COMMENT
MEDIUMtests/test_dedup.py736# ── #2532: lifecycle-aware, environment-stable collision ranking ──────────────COMMENT
543 more matches not shown…
Empty Error Handlers175 hits · 830 pts
SeverityFileLineSnippetContext
HIGHworked/httpx/raw/auth.py112except Exception:CODE
HIGHworked/httpx/raw/client.py88except StopIteration:CODE
HIGHtests/test_charmap_encoding.py279except UnicodeEncodeError:CODE
HIGHtests/test_skill_auto_refresh.py525except (_Stop, SystemExit):CODE
HIGHtests/test_falkordb_integration.py58except Exception:CODE
HIGHtests/test_falkordb_integration.py63except Exception:CODE
HIGHtests/test_llm_backends.py341except ImportError:CODE
HIGHtests/test_llm_backends.py347except ImportError:CODE
HIGHtests/test_llm_backends.py354except ImportError:CODE
HIGHtests/test_llm_backends.py898except Exception:CODE
HIGHtests/test_opencode_plugin_refresh.py408except (_Stop, SystemExit):CODE
HIGHgraphify/build.py628except OSError:CODE
HIGHgraphify/build.py638except Exception:CODE
HIGHgraphify/build.py504except (ValueError, OSError):CODE
HIGHgraphify/hooks.py733except (OSError, FileNotFoundError):CODE
HIGHgraphify/hooks.py921except OSError:CODE
HIGHgraphify/paths.py185except (OSError, UnicodeDecodeError):CODE
HIGHgraphify/paths.py138except OSError:CODE
HIGHgraphify/paths.py92except OSError:CODE
HIGHgraphify/paths.py97except OSError:CODE
HIGHgraphify/paths.py86except OSError:CODE
HIGHgraphify/paths.py158except OSError:CODE
HIGHgraphify/querylog.py79except Exception:CODE
HIGHgraphify/cache.py495except OSError:CODE
HIGHgraphify/cache.py589except OSError:CODE
HIGHgraphify/cache.py640except OSError:CODE
HIGHgraphify/cache.py109except OSError:CODE
HIGHgraphify/cache.py191except OSError:CODE
HIGHgraphify/cache.py1259except OSError:CODE
HIGHgraphify/cache.py1263except OSError:CODE
HIGHgraphify/cache.py1353except OSError:CODE
HIGHgraphify/cache.py489except OSError:CODE
HIGHgraphify/cache.py493except OSError:CODE
HIGHgraphify/cache.py1495except ValueError:CODE
HIGHgraphify/serve.py70except Exception:CODE
HIGHgraphify/serve.py1931except Exception:CODE
HIGHgraphify/serve.py2458except Exception:CODE
HIGHgraphify/llm.py97except (ValueError, TypeError):CODE
HIGHgraphify/llm.py1165except json.JSONDecodeError:CODE
HIGHgraphify/llm.py2242except ImportError:CODE
HIGHgraphify/llm.py2247except ImportError:CODE
HIGHgraphify/llm.py2252except ImportError:CODE
HIGHgraphify/llm.py320except ValueError:CODE
HIGHgraphify/llm.py419except ValueError:CODE
HIGHgraphify/llm.py438except ValueError:CODE
HIGHgraphify/llm.py462except ValueError:CODE
HIGHgraphify/llm.py1855except ValueError:CODE
HIGHgraphify/llm.py304except Exception:CODE
HIGHgraphify/export.py1073except OSError:CODE
HIGHgraphify/export.py67except Exception:CODE
HIGHgraphify/export.py1060except OSError:CODE
HIGHgraphify/export.py1340except OSError:CODE
HIGHgraphify/export.py96except Exception:CODE
HIGHgraphify/cli.py137except Exception:CODE
HIGHgraphify/cli.py337except (OSError, RuntimeError):CODE
HIGHgraphify/cli.py502except (OSError, RuntimeError):CODE
HIGHgraphify/cli.py579except (OSError, RuntimeError):CODE
HIGHgraphify/cli.py752except Exception:CODE
HIGHgraphify/cli.py1049except Exception:CODE
HIGHgraphify/cli.py344except ValueError:CODE
115 more matches not shown…
Cross-Language Confusion127 hits · 802 pts
SeverityFileLineSnippetContext
HIGH⚡tests/test_csharp_member_chain_calls.py104 " if (_configs[i] != null) _configs[i].WriteIds(); }\n"CODE
HIGH⚡tests/test_inherited_field_receivers.py123 " Object fetch() { return null; }\n}\n"),CODE
HIGH⚡tests/test_ts_parse_warning.py50 "declare const Comp: (props: { to: string }) => null;\n"CODE
HIGH⚡tests/test_indirect_call_function_expression_shadow.py139 "function wrap(a, b){ return a || b; }\n"CODE
HIGH⚡tests/test_indirect_call_for_of_binding_shadow.py58 " if (lookup(entry.name)) resolved.push({ entry });\n"CODE
HIGH⚡tests/test_indirect_call_for_of_binding_shadow.py76 " out.push({ entry });\n"CODE
HIGH⚡tests/test_indirect_call_for_of_binding_shadow.py92 " for (const entry of rows) { out.push({ entry }); }\n"CODE
HIGHtests/test_ts_receiver_member_calls.py174 " private maybe?: Svc | undefined;\n"CODE
HIGHtests/test_js_exported_scalar_bindings.py73export const A_MAX = Number(process.env.A_MAX || 10);STRING
HIGH⚡tests/test_indirect_call_catch_binding_shadow.py70 " try { boom(); } catch ({ cause }) { sink.push(cause); }\n"CODE
HIGHtests/test_java_type_resolution.py91 " public boolean validateCurrency(String c) { return c.length() == 3; }\n"CODE
HIGHtests/test_java_type_resolution.py217 " public Map<String, Object> lookup(Long id) { return null; }\n"CODE
HIGHtests/test_java_type_resolution.py218 " public java.util.Optional<Boolean> flag() { return null; }\n"CODE
HIGH⚡tests/test_java_type_resolution.py246 " public OrderDto first() { return null; }\n"CODE
HIGHtests/test_languages.py540 " return null;\n"STRING
HIGHtests/test_dart.py483 context.router.push(ProfileRoute());CODE
HIGHtests/test_hook_guard_token_match.py36 "make build && grep -q ok build.log",CODE
HIGH⚡tests/test_hook_guard.py83 "cd findings && ls", # 'find' without a trailing space is not a matchCODE
HIGHtests/test_indirect_call_external_import_shadow.py58 "Palette.tsx": "export function Palette() { return null; }\n",CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py72 "Chart.tsx": "export function Chart() { return null; }\n",CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py87 "export function run(sink) { sink.push(Utils); }\n"CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py102 "export function app(sink) { sink.push(Find); }\n"CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py120 "Palette.tsx": "export function Palette() { return null; }\n",CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py135 "widgets.ts": "export function Widget() { return null; }\n",CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py138 "export function host(sink) { sink.push(Widget); }\n"CODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py163 "table.ts": "export function Filter() { return null; }\n", # unrelated corpus callableCODE
HIGH⚡tests/test_indirect_call_external_import_shadow.py168 " sink.push(Filter);\n" # external -> must NOT bind to table.ts FilterCODE
HIGHtests/test_skillgen_input_path_injection.py139 ("and_chain", lambda s: f"nonexistent && touch {s}"),CODE
HIGHtests/test_build.py1309 the source_location shape (AST emits 'L<line>', semantic emits null)."""STRING
HIGH⚡tests/test_injection_sentinel_coverage.py41 "a | b and x || y",CODE
HIGH⚡tests/test_hooks.py1042 assert 'cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd' in scriptCODE
HIGH⚡tests/test_hooks.py1042 assert 'cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd' in scriptCODE
HIGH⚡tests/test_js_callback_calls.py106 "function wrapper(a: unknown, b: unknown) { return a || b; }\n"CODE
HIGH⚡tests/test_js_callback_calls.py122 "function wrapper(a: unknown, b: unknown) { return a || b; }\n"CODE
HIGH⚡tests/test_js_callback_calls.py138 "function wrapper(a: unknown, b: unknown) { return a || b; }\n"CODE
HIGH⚡tests/test_js_callback_calls.py141 " (alpha) => { q.push(alpha); },\n"CODE
HIGH⚡tests/test_js_callback_calls.py156 "function wrapper(a: unknown, b: unknown) { return a || b; }\n"CODE
HIGH⚡tests/test_js_callback_calls.py172 "function wrapper(a: unknown, b: unknown) { return a || b; }\n"CODE
HIGH⚡tests/test_java_member_calls.py146 " { AuditLog service = null; service.charge(); }\n"CODE
HIGH⚡tests/test_java_member_calls.py149 " new Object() { void nested() { AuditLog service = null; } };\n"CODE
HIGH⚡tests/test_java_member_calls.py213 " void run(int value) { PaymentGateway service = null; service.charge(); }\n"CODE
HIGH⚡tests/test_java_member_calls.py214 " void run(String value) { AuditLog service = null; service.charge(); }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py83 "function div() { return null; }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py95 "function div() { return null; }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py106 "function _Row() { return null; }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py119 "function Provider() { return null; }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py130 "icons.tsx": "export function X() { return null; }\n",CODE
HIGH⚡tests/test_jsx_component_usage_calls.py133 "function Close() { return null; }\n"CODE
HIGH⚡tests/test_jsx_component_usage_calls.py134 "function Comp() { return null; }\n"CODE
HIGHtests/test_incremental.py116 "export function ScanScreen() {\n return null;\n}\n", encoding="utf-8"CODE
HIGH⚡tests/test_js_import_resolution.py1976 "export function BottomNav() { return null }\n",CODE
HIGH⚡tests/test_js_import_resolution.py1980 "export function BottomNav() { return null }\n",CODE
HIGHtests/test_js_import_resolution.py289 " return rules.map((rule) => rule.evaluate(ctx)).filter((f) => f !== null)\n"CODE
HIGHtests/test_js_import_resolution.py1914 "export function Icon() { return null }\n",CODE
HIGHtests/test_js_import_resolution.py1918 "export function Icon() { return null }\n",CODE
HIGHtests/test_js_import_resolution.py1946 "export function Icon() { return null }\n",CODE
HIGHtests/test_js_import_resolution.py1950 "export function Icon() { return null }\n",CODE
HIGHtests/test_cross_language_call_resolution.py48 " return null;\n"CODE
HIGH⚡tests/test_out_dir_evidence.py62 "export default function Home() { return null; }\n", encoding="utf-8")CODE
HIGH⚡tests/test_extract.py1197 " render() { return null; }\n"CODE
67 more matches not shown…
Structural Annotation Overuse411 hits · 623 pts
SeverityFileLineSnippetContext
LOW⚡tools/skillgen/gen.py241 "### Step 4 - Build the graph and generate outputs",CODE
LOW⚡tools/skillgen/gen.py242 "### Step 5 - Save manifest, clean up, and report",CODE
LOW⚡tools/skillgen/gen.py252 "### Step 4 - Build graph and cluster",CODE
LOW⚡tools/skillgen/gen.py253 "### Step 5 - Generate report and visualization",CODE
LOWtools/skillgen/fragments/core/devin.md70### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/fragments/core/devin.md120### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/devin.md197### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/devin.md463### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/devin.md523### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/devin.md570### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/devin.md684### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/core/devin.md784### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/fragments/core/devin.md804### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW⚡tools/skillgen/fragments/core/core.md58### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOW⚡tools/skillgen/fragments/core/core.md62### Step 1 - Ensure graphify is installedCOMMENT
LOW⚡tools/skillgen/fragments/core/core.md66### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/core.md112### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/core.md334### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/core.md423### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/core.md472### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/core.md498### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOWtools/skillgen/fragments/core/aider.md59### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/fragments/core/aider.md107### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/aider.md184### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/aider.md398### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/aider.md458### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/aider.md505### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/aider.md565### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/core/aider.md666### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/fragments/core/aider.md686### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…illgen/fragments/references/shared/github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOWtools/skillgen/fragments/references/shared/exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/references/shared/exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…pected/graphify__skills__codex__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…pected/graphify__skills__codex__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…raphify__skills__kilo__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md61### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md65### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md113### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md159### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md403### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md492### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md541### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md567### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…ify__skills__opencode__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…hify__skills__windows__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…cted/graphify__skills__windows__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…cted/graphify__skills__windows__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…cted/graphify__skills__copilot__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…cted/graphify__skills__copilot__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md61### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md65### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md141### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md187### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md433### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md522### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md571### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md597### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…hify__skills__copilot__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…ted/graphify__skills__opencode__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
351 more matches not shown…
Unused Imports715 hits · 548 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py24CODE
LOWtools/skillgen/gen.py35CODE
LOWtools/skillgen/__main__.py2CODE
LOWworked/mixed-corpus/raw/build.py2CODE
LOWworked/mixed-corpus/raw/cluster.py2CODE
LOWworked/mixed-corpus/raw/analyze.py2CODE
LOWworked/example/raw/api.py5CODE
LOWworked/example/raw/api.py7CODE
LOWworked/httpx/raw/client.py7CODE
LOWworked/httpx/raw/client.py7CODE
LOWworked/httpx/raw/client.py9CODE
LOWworked/httpx/raw/client.py9CODE
LOWworked/httpx/raw/client.py10CODE
LOWworked/httpx/raw/utils.py5CODE
LOWtests/test_forwarding_review_findings.py1CODE
LOWtests/test_csharp_member_chain_calls.py8CODE
LOWtests/test_no_cluster_run_only_keys.py10CODE
LOWtests/test_extract_cli.py2CODE
LOWtests/test_extract_cli.py1388CODE
LOWtests/test_suggest_questions_ambiguous.py5CODE
LOWtests/test_csharp_partial_classes.py13CODE
LOWtests/test_solidity_extractor.py4CODE
LOWtests/test_csharp_enum_members.py10CODE
LOWtests/test_semantic_similarity.py5CODE
LOWtests/test_word_count_cache.py5CODE
LOWtests/test_rust_builtin_type_hubs.py15CODE
LOWtests/test_multigraph_diagnostics.py1CODE
LOWtests/test_tree_html.py9CODE
LOWtests/test_hook_strict.py15CODE
LOWtests/test_elixir_unqualified_call_scope.py9CODE
LOWtests/test_community_labels_skill.py15CODE
LOWtests/test_codebuddy.py7CODE
LOWtests/test_pascal.py2CODE
LOWtests/test_inherited_field_receivers.py12CODE
LOWtests/test_inherited_field_receivers.py148CODE
LOWtests/test_graph_invariance.py17CODE
LOWtests/test_build_merge_hyperedges_and_prune.py13CODE
LOWtests/test_unmapped_at_alias_resolution.py7CODE
LOWtests/test_unmapped_at_alias_resolution.py13CODE
LOWtests/test_unmapped_at_alias_resolution.py13CODE
LOWtests/test_dedup.py2CODE
LOWtests/test_dedup.py259CODE
LOWtests/test_symbol_resolution.py3CODE
LOWtests/test_csharp_call_site_generic_args.py16CODE
LOWtests/test_swift_import_resolution.py1CODE
LOWtests/test_js_dynamic_import_affected.py17CODE
LOWtests/bench_query_scoring.py29CODE
LOWtests/test_security.py2CODE
LOWtests/test_security.py4CODE
LOWtests/test_security.py12CODE
LOWtests/test_security.py12CODE
LOWtests/test_vue_extraction.py7CODE
LOWtests/conftest.py1CODE
LOWtests/test_scala_self_type.py13CODE
LOWtests/test_cluster_exclude_hubs.py7CODE
LOWtests/test_query_cli.py2CODE
LOWtests/test_python_reexport_type_binding.py11CODE
LOWtests/test_semantic_id_remap_root.py10CODE
LOWtests/test_path_cli.py3CODE
LOWtests/test_path_cli.py8CODE
655 more matches not shown…
Deep Nesting353 hits · 242 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py431CODE
LOWtools/skillgen/gen.py469CODE
LOWtools/skillgen/gen.py711CODE
LOWworked/example/raw/parser.py29CODE
LOWtests/test_inferred_confidence_rubric.py80CODE
LOWtests/test_inferred_confidence_rubric.py99CODE
LOWtests/test_pg_introspect.py16CODE
LOWtests/test_pg_introspect.py40CODE
LOWtests/test_multilang.py167CODE
LOWtests/test_multilang.py1276CODE
LOWtests/test_multilang.py215CODE
LOWtests/test_multilang.py1298CODE
LOWtests/test_multilang.py224CODE
LOWtests/test_csharp_type_resolution.py1223CODE
LOWtests/test_install.py1716CODE
LOWtests/test_skillgen.py424CODE
LOWgraphify/cross_repo_calls.py151CODE
LOWgraphify/build.py912CODE
LOWgraphify/build.py999CODE
LOWgraphify/build.py1704CODE
LOWgraphify/build.py1802CODE
LOWgraphify/build.py1903CODE
LOWgraphify/build.py1969CODE
LOWgraphify/build.py2113CODE
LOWgraphify/build.py2567CODE
LOWgraphify/ingest.py14CODE
LOWgraphify/hooks.py555CODE
LOWgraphify/hooks.py680CODE
LOWgraphify/hooks.py740CODE
LOWgraphify/manifest_ingest.py145CODE
LOWgraphify/manifest_ingest.py175CODE
LOWgraphify/cargo_introspect.py80CODE
LOWgraphify/benchmark.py37CODE
LOWgraphify/paths.py31CODE
LOWgraphify/interface_dispatch.py66CODE
LOWgraphify/security.py103CODE
LOWgraphify/cache.py85CODE
LOWgraphify/cache.py378CODE
LOWgraphify/cache.py511CODE
LOWgraphify/cache.py655CODE
LOWgraphify/cache.py985CODE
LOWgraphify/cache.py1504CODE
LOWgraphify/cache.py1808CODE
LOWgraphify/serve.py298CODE
LOWgraphify/serve.py363CODE
LOWgraphify/serve.py559CODE
LOWgraphify/serve.py1034CODE
LOWgraphify/serve.py1092CODE
LOWgraphify/serve.py1513CODE
LOWgraphify/serve.py1829CODE
LOWgraphify/serve.py1913CODE
LOWgraphify/serve.py1955CODE
LOWgraphify/serve.py1924CODE
LOWgraphify/serve.py2474CODE
LOWgraphify/llm.py272CODE
LOWgraphify/llm.py1049CODE
LOWgraphify/llm.py1365CODE
LOWgraphify/llm.py1947CODE
LOWgraphify/llm.py2293CODE
LOWgraphify/llm.py2568CODE
293 more matches not shown…
Over-Commented Block277 hits · 206 pts
SeverityFileLineSnippetContext
LOWpyproject.toml101# tree-sitter-dm (BYOND DreamMaker) ships only a Windows wheel, so on Linux/Mac itCOMMENT
LOWtools/skillgen/platforms.toml1# skillgen platform manifestCOMMENT
LOWtools/skillgen/platforms.toml21# dispatch Part-B dispatch fragment basename under fragments/dispatch/.COMMENT
LOWtools/skillgen/gen.py41FRAGMENTS_DIR = SKILLGEN_DIR / "fragments"COMMENT
LOWtools/skillgen/gen.py61 """The git ref for a split host's own pre-split skill body."""COMMENT
LOWtools/skillgen/gen.py141_QUERY_REFERENCE = "references/query/default.md"COMMENT
LOWtools/skillgen/gen.py201#COMMENT
LOWtools/skillgen/gen.py221# lives in the core or a reference under the new heading; the audit confirmsCOMMENT
LOWtools/skillgen/gen.py361#COMMENT
LOWtools/skillgen/fragments/core/core.md501$(cat graphify-out/.graphify_python) -c "COMMENT
LOWtools/skillgen/fragments/references/shared/update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOWtools/skillgen/fragments/references/shared/update.md141COMMENT
LOW…n/expected/graphify__skills__pi__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…n/expected/graphify__skills__pi__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md581# root= relativizes the manifest keys to the scan root (same base as the build),COMMENT
LOW…pected/graphify__skills__vscode__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…pected/graphify__skills__vscode__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md601import jsonCOMMENT
LOWtools/skillgen/expected/graphify__skill.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOW…pected/graphify__skills__agents__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…pected/graphify__skills__agents__references__update.md141COMMENT
LOW…expected/graphify__skills__trae__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…expected/graphify__skills__trae__references__update.md141COMMENT
LOW…xpected/graphify__skills__codex__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…xpected/graphify__skills__codex__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-kilo.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOW…cted/graphify__skills__opencode__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…cted/graphify__skills__opencode__references__update.md141COMMENT
LOW…pected/graphify__skills__claude__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…pected/graphify__skills__claude__references__update.md141COMMENT
LOW…expected/graphify__skills__kilo__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…expected/graphify__skills__kilo__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-droid.md581# so the on-disk manifest is portable across clones/machines and a later --updateCOMMENT
LOW…expected/graphify__skills__kiro__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…expected/graphify__skills__kiro__references__update.md141COMMENT
LOW…xpected/graphify__skills__droid__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…xpected/graphify__skills__droid__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-kiro.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOWtools/skillgen/expected/graphify__skill-opencode.md581# next --update re-queues it, otherwise it is marked done and its content is lostCOMMENT
LOWtools/skillgen/expected/graphify__skill-pi.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOW…ected/graphify__skills__copilot__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…ected/graphify__skills__copilot__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-copilot.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOWtools/skillgen/expected/graphify__skill-vscode.md581# matches cached files instead of missing every one (#1417).COMMENT
LOWtools/skillgen/expected/graphify__skill-agents.md581# so the on-disk manifest is portable across clones/machines and a later --updateCOMMENT
LOWtools/skillgen/expected/graphify__skill-claw.md581# In --update mode, 'all_files' carries the full corpus; 'files' is the changedCOMMENT
LOWtools/skillgen/expected/graphify__skill-codex.md581# so the on-disk manifest is portable across clones/machines and a later --updateCOMMENT
LOW…ected/graphify__skills__windows__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…ected/graphify__skills__windows__references__update.md141COMMENT
LOW…/expected/graphify__skills__amp__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…/expected/graphify__skills__amp__references__update.md141COMMENT
LOWtools/skillgen/expected/graphify__skill-amp.md581# so the on-disk manifest is portable across clones/machines and a later --updateCOMMENT
LOW…expected/graphify__skills__claw__references__update.md101# Do NOT add `changed` here: with root= passed, prune_set relativizes to the same baseCOMMENT
LOW…expected/graphify__skills__claw__references__update.md141COMMENT
LOWtests/test_dedup.py1301 assert not _same_word_variant("jest", "react")COMMENT
LOWtests/test_cross_extension_reexport_self_cycle.py161 assert not self_loops, f"unexpected self-loop among siblings; got {self_loops}"COMMENT
LOWtests/test_detect.py2021 # Verify the whole function still returns True (via name pattern, not dir check).COMMENT
LOWtests/test_multilang.py1361 continueCOMMENT
LOWtests/test_build.py1621 assert set(hes) == {"he_partial"}, "an all-dangling hyperedge must be dropped"COMMENT
LOW.github/workflows/publish.yml1name: Publish to PyPICOMMENT
217 more matches not shown…
Excessive Try-Catch Wrapping260 hits · 206 pts
SeverityFileLineSnippetContext
LOWworked/mixed-corpus/raw/cluster.py88 except Exception:CODE
LOWworked/example/raw/parser.py77 except Exception as e:CODE
LOWworked/httpx/raw/auth.py112 except Exception:CODE
LOWworked/httpx/raw/transport.py78 except Exception as exc:CODE
LOWworked/httpx/raw/transport.py131 except Exception as exc:CODE
LOWtests/test_source_key_memoization.py35 except Exception:CODE
LOWtests/test_falkordb_integration.py43 except Exception as e: # pragma: no cover - depends on local environmentCODE
LOWtests/test_falkordb_integration.py47 except Exception as e: # pragma: no cover - depends on local environmentCODE
LOW⚡tests/test_falkordb_integration.py58 except Exception:CODE
LOW⚡tests/test_falkordb_integration.py63 except Exception:CODE
LOW⚡tests/test_llm_backends.py898 except Exception:CODE
MEDIUMtests/bench_extract.py119 print(f"Error: {target} does not exist", file=sys.stderr)CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md780 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md790 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md841 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md1044 except Exception as exc:CODE
LOWgraphify/build.py638 except Exception:CODE
LOWgraphify/file_slice.py239 except Exception:CODE
LOWgraphify/ingest.py126 except Exception:CODE
LOWgraphify/ingest.py193 except Exception:CODE
LOWgraphify/hooks.py253 except Exception:CODE
LOWgraphify/hooks.py258except Exception as exc:CODE
LOWgraphify/hooks.py328 except Exception:CODE
LOWgraphify/hooks.py333except Exception as exc:CODE
LOWgraphify/manifest_ingest.py92 except Exception as exc: # noqa: BLE001 — a malformed manifest must not abort extractionCODE
LOWgraphify/global_graph.py19 except Exception as exc:CODE
LOWgraphify/global_graph.py34 except Exception as rename_exc:CODE
LOWgraphify/diagnostics.py255 except Exception as exc:CODE
LOWgraphify/querylog.py79 except Exception:CODE
LOWgraphify/cache.py36except Exception:CODE
LOWgraphify/cache.py67 except Exception:CODE
LOWgraphify/cache.py71 except Exception:CODE
LOWgraphify/cache.py486 except Exception:CODE
LOWgraphify/cache.py1256 except Exception:CODE
MEDIUMgraphify/serve.py1924def _relay() -> None:CODE
LOWgraphify/serve.py70 except Exception:CODE
LOWgraphify/serve.py88 except Exception:CODE
LOWgraphify/serve.py1931 except Exception:CODE
LOWgraphify/serve.py2421 except Exception:CODE
LOWgraphify/serve.py2458 except Exception:CODE
LOWgraphify/serve.py2496 except Exception as exc:CODE
LOWgraphify/serve.py2521 except Exception as exc:CODE
LOWgraphify/serve.py2539 except Exception as exc:CODE
LOWgraphify/serve.py2580 except Exception:CODE
LOWgraphify/llm.py57 except Exception: # network failure on first-use download, etc.CODE
LOWgraphify/llm.py249 except Exception:CODE
LOWgraphify/llm.py304 except Exception:CODE
LOWgraphify/llm.py698 except Exception: # noqa: BLE001 — one unreadable file (e.g. a malformed PDF) must not disable binding for the CODE
LOWgraphify/llm.py2072 except Exception as _exc: # noqa: BLE001 — evidence-binding is advisoryCODE
LOWgraphify/llm.py2141 except Exception:CODE
LOWgraphify/llm.py2423 except Exception as exc: # noqa: BLE001 — re-raise unless it's a known context overflow or timeoutCODE
LOWgraphify/llm.py2666 except Exception as exc: # noqa: BLE001 — caller-facing surface, log + continueCODE
LOWgraphify/llm.py2720 except Exception as _exc: # noqa: BLE001 — checkpoint is best-effortCODE
LOWgraphify/llm.py3133 except Exception:CODE
LOWgraphify/llm.py3486 except Exception as exc: # noqa: BLE001 - reported per-batch; surfaced belowCODE
LOWgraphify/llm.py3549 except Exception:CODE
LOWgraphify/llm.py3583 except Exception as exc:CODE
LOWgraphify/multigraph_compat.py64 except Exception as exc:CODE
LOW⚡graphify/export.py265 except Exception:CODE
LOW⚡graphify/export.py270 except Exception:CODE
200 more matches not shown…
Modern AI Meta-Vocabulary14 hits · 41 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md799- Fix: the `claude-cli` backend now reads the CLI's structured-output channel instead of trusting free-form prose (#2076CODE
MEDIUM⚡tests/test_claude_cli_backend.py280# Newer Claude Code CLIs treat a bare file-dump prompt as an agentic task andCOMMENT
MEDIUM⚡tests/test_llm_backends.py736# `chat_template_kwargs.enable_thinking=false` or the model emits chain-of-thoughtCOMMENT
MEDIUMtests/test_llm_backends.py280 # produce when a chunk overflows the model's context window.COMMENT
MEDIUM⚡tests/test_llm_backends.py899 pass # mock scaffolding may not be complete; we only care about the callCODE
MEDIUM⚡tests/test_labeling.py265# 16k context window of self-hosted reasoning models (Qwen3, Llama-3.1 8B).COMMENT
MEDIUMgraphify/llm.py1042# Reasoning models (nemotron, deepseek-r1, qwq, …) emit their chain of thoughtCOMMENT
MEDIUMgraphify/llm.py1744 # object directly. The <untrusted_source> guardrails in _extraction_systemCOMMENT
MEDIUMgraphify/llm.py1784 # agentic task and REPORT the extraction in prose ("Knowledge graphCOMMENT
MEDIUMgraphify/llm.py2136 # looks like. The chunk then blows the context window and falls intoCOMMENT
MEDIUMgraphify/llm.py3239# When graphify runs inside an orchestrating agent (Claude Code / Gemini CLI),COMMENT
MEDIUMgraphify/cli.py2352 # standalone there is no orchestrating agent to do skill.md Step 5, soCOMMENT
MEDIUMgraphify/report.py161 # agree on (#3148) -- file nodes are structural scaffolding, conceptCOMMENT
MEDIUMgraphify/extractors/bash.py126 # Cross-file resolution scaffolding consumed by resolve_bash_source_edges inCOMMENT
Verbosity Indicators17 hits · 34 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_detect.py4076 # Step 1: Workspace root or sibling subfolder is graphedCOMMENT
LOW⚡tests/test_detect.py4080 # Step 2: Incremental update on subfolder A onlyCOMMENT
LOWtests/test_unverified_semantic_shrink.py189 # Step 1: Initial build (README: 3 nodes, GUIDE: 2 nodes)COMMENT
LOWtests/test_unverified_semantic_shrink.py222 # Step 2: Edit README.md and re-extract returning only 1 nodeCOMMENT
LOW⚡tests/test_pipeline.py25 # Step 1: detectCOMMENT
LOW⚡tests/test_pipeline.py31 # Step 2: extract (AST only - no LLM)COMMENT
LOW⚡tests/test_pipeline.py38 # Step 3: buildCOMMENT
LOW⚡tests/test_pipeline.py43 # Step 4: clusterCOMMENT
LOW⚡tests/test_pipeline.py51 # Step 5: analyzeCOMMENT
LOW⚡tests/test_pipeline.py63 # Step 6: reportCOMMENT
LOW⚡tests/test_pipeline.py70 # Step 7: export - JSONCOMMENT
LOW⚡tests/test_pipeline.py78 # Step 8: export - HTMLCOMMENT
LOW⚡tests/test_pipeline.py86 # Step 9: export - Obsidian vaultCOMMENT
LOWgraphify/paths.py389 # Step 2: path proximity over the survivors.COMMENT
LOWgraphify/analyze.py749 # Step 1: Build a directed file-level graph from import/re-export edges.COMMENT
LOWgraphify/analyze.py795 # Step 2: Find simple cycles, bounded by length.COMMENT
LOWgraphify/analyze.py807 # Step 3: Sort by length (shortest = tightest coupling), then deduplicate.COMMENT
Overly Generic Function Names29 hits · 26 pts
SeverityFileLineSnippetContext
LOWworked/httpx/raw/transport.py13 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py70 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py112 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py126 def handle_request(self, request: Request) -> Response:CODE
LOWtests/test_scala_given_instances.py21 " def helper(a: Int): String = a.toString\n"CODE
LOWtests/test_markdown_code_spans.py25def helper():CODE
LOWtests/test_markdown_code_spans.py35def helper():CODE
LOWtests/test_watch.py2305 (corpus / "b.py").write_text("def helper():\n return 2\n", encoding="utf-8")CODE
LOWtests/test_watch.py2360 (corpus / "b.py").write_text("def helper():\n return 2\n", encoding="utf-8")CODE
LOWtests/test_watch.py2386 (corpus / "b.py").write_text("def helper():\n return 2\n", encoding="utf-8")CODE
LOWtests/test_watch.py3782 " class << self\n def helper(value); value; end\n end\n"CODE
LOWtests/test_watch.py3784 else " def helper(value); value; end\n"CODE
LOWtests/test_watch.py4994 (corpus / "b.py").write_text("def helper(): pass\n", encoding="utf-8")CODE
LOWtests/test_loose_sibling_import_resolution.py198 (scripts / "utils.py").write_text("def helper():\n return 'util'\n", encoding="utf-8")CODE
LOW⚡tests/test_issue_3405_python_resolution.py127 def helper():STRING
LOW⚡tests/test_issue_3405_python_resolution.py136 " def helper():\n"CODE
LOWtests/test_rationale.py286 def helper() -> int:CODE
LOW⚡tests/test_type_only_import_cycles.py272 "pkg/b.py": "from pkg.c import C\n\nclass B: ...\n\ndef helper(x):\n return C\n",CODE
LOWtests/test_type_only_import_cycles.py261 "b.py": "from a import f\n\nclass B: ...\n\ndef helper(x):\n return f\n",CODE
LOWtests/test_src_layout_import_resolution.py21 "mypkg/helpers.py": "def helper():\n return 1\n",CODE
LOWtests/test_external_stub_endpoints.py114 "import re\n\ndef helper(x):\n return re.match(r'.', str(x))\n", encoding="utf-8"CODE
LOWtests/test_source_file_encoding.py200 "pkg/helpers.py": "def helper():\n return 1\n".encode("utf-8"),STRING
LOWtests/test_incremental.py374 (pkg / "b.py").write_text("def helper():\n return 1\n")CODE
LOWtests/test_incremental.py403 (proj / "b.py").write_text("def helper():\n return 1\n", encoding="utf-8")CODE
LOWtests/test_incremental.py474 (proj / "b.py").write_text("def helper():\n return 1\n", encoding="utf-8")CODE
LOW⚡tests/test_case_sensitive_resolution.py70 "h.py": "def helper():\n return 1\n",CODE
LOWtests/test_python_import_resolution.py176 target = _write(tmp_path / "pkg" / "sibling.py", "def helper():\n return 1\n")CODE
LOWtests/test_python_import_resolution.py461 sub = _write(tmp_path / "ns/sub.py", "def helper():\n pass\n")CODE
LOWtests/test_python_underscore_resolution.py124 def helper():CODE
Fake / Example Data34 hits · 26 pts
SeverityFileLineSnippetContext
LOWtests/test_extract_cli.py67 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py127 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py180 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py246 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py315 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py368 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py485 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py553 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py600 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py636 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py1394 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py1522 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py1582 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOW⚡tests/test_dedup.py1078 {"id": "acme_corp_one", "label": "Acme Corp",CODE
LOW⚡tests/test_dedup.py1080 {"id": "acme_corp_two", "label": "Acme Corp",CODE
LOW⚡tests/test_dedup.py1075 survivor: {'Acme Corp' doc1, 'Acme Corp' doc2, 'Acme Corp.' doc3} allSTRING
LOWtests/test_incomplete_build_guard.py42 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_incomplete_build_guard.py129 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_hollow_chunks_arm_shrink_guard.py40 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_detect.py911 src.write_text("placeholder", encoding="utf-8")CODE
LOWtests/test_detect.py3328 doc_path.write_bytes(b"placeholder")CODE
LOWtests/test_dedup_shrink_refuses_force_write.py68 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOW⚡tests/test_llm_backends.py206 big.write_text(("# Section\n\n" + "lorem ipsum dolor sit amet " * 60 + "\n\n") * 30)CODE
LOW⚡tests/test_llm_backends.py206 big.write_text(("# Section\n\n" + "lorem ipsum dolor sit amet " * 60 + "\n\n") * 30)CODE
LOW⚡tests/test_llm_backends.py1552 assert source == "placeholder"CODE
LOWtests/test_llm_backends.py1290 "https://api.moonshot.ai/v1", "fake-key", "kimi-k2",CODE
LOWtests/test_llm_backends.py1318 monkeypatch.setattr(llm, "_get_backend_api_key", lambda _b: "fake-key")CODE
LOWtests/test_llm_backends.py1346 monkeypatch.setattr(llm, "_get_backend_api_key", lambda _b: "fake-key")CODE
LOW⚡tests/test_labeling.py199 assert source == "placeholder"CODE
LOW⚡tests/test_labeling.py210 assert source == "placeholder"CODE
LOW⚡tests/test_file_slice.py28 text = ("# Heading\n\n" + "lorem ipsum " * 40 + "\n\n") * 20CODE
LOWgraphify/llm.py3567 return _placeholder_community_labels(communities), "placeholder"CODE
LOWgraphify/llm.py3590 return _placeholder_community_labels(communities), "placeholder"CODE
LOWgraphify/llm.py3545 ``"placeholder"``. Never raises."""STRING
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/test_skill_auto_refresh.py0gemini and hermes install to different directories on windows; these tests assert the posix layout, so pin it.STRING
HIGHtests/test_install_references.py0gemini and hermes install to different directories on windows; these tests assert the posix layout, so pin it.STRING
HIGHtests/test_uninstall_scope.py0gemini and hermes install to different directories on windows; these tests assert the posix layout, so pin it.STRING
AI Slop Vocabulary4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_languages.py3251 # More robust: no target should contain a brace characterCOMMENT
MEDIUMtests/test_hook_guard.py21# Direct-call harness: hermetic w.r.t. the ambient GRAPHIFY_OUT env.COMMENT
MEDIUMgraphify/extract.py8990 # path.name)``). Resolving file membership by that shared string is robustCOMMENT
LOWgraphify/extract.py2484 # Edge target already a real node - just add the edge, don't add a node.COMMENT
Modern Structural Boilerplate7 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/test_word_count_cache.py13def _settle(path: Path) -> None:CODE
LOWtests/test_stat_index_portability.py61def _settle(path: Path) -> None:CODE
LOWtests/test_hooks.py559def _set_hookspath(repo: Path, value: str) -> None:CODE
LOWgraphify/manifest_ingest.py25__all__ = ["is_package_manifest_path", "extract_package_manifest", "PACKAGE_MANIFEST_NAMES"]CODE
LOWgraphify/manifest.py4__all__ = ["save_manifest", "load_manifest", "detect_incremental"]CODE
LOWgraphify/watch.py22logger = logging.getLogger(__name__)CODE
LOWgraphify/ids.py47__all__ = ["normalize_id", "make_id"]CODE
Redundant / Tautological Comments4 hits · 5 pts
SeverityFileLineSnippetContext
LOWgraphify/detect.py541 # Check if it's a converted paperCOMMENT
LOWgraphify/extract.py3099 # Check if preceded by `(` (e.g. range-based for loop `for(class MACRO var: items)`)COMMENT
LOWgraphify/extractors/bash.py399 # Check if the leading variable is trackedCOMMENT
LOWgraphify/extractors/dart.py45 # Check if this is a part-of file and redirect to parentCOMMENT
AI Structural Patterns6 hits · 3 pts
SeverityFileLineSnippetContext
LOWtests/test_prs.py29CODE
LOWgraphify/cache.py1504CODE
LOWgraphify/serve.py2752CODE
LOWgraphify/llm.py2568CODE
LOWgraphify/callflow_html.py1608CODE
LOWgraphify/callflow_html.py1543CODE