# Graph Report - graphify (2026-09-23) ## Corpus Check - cluster-only mode — file stats not available ## Summary - 14374 nodes · 30909 edges · 686 communities (613 shown, 73 thin omitted) - Extraction: 97% EXTRACTED · 3% INFERRED · 0% AMBIGUOUS · INFERRED: 1021 edges (avg confidence: 0.85) - Token cost: 0 input · 0 output ## Graph Freshness - Built from commit: `a5957aa6` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). ## Community Hubs (Navigation) - test_watch.py - build_from_json - _read_text - extract.py - test_languages.py - test_extract.py - pathlib - graphify/__main__.py - test_install.py - json - detect - extract_js - test_js_import_resolution.py - _extract_with_adaptive_retry - test_scip_ingest.py - test_llm_backends.py - test_dedup.py - detect.py - extract - test_ruby_resolution.py - test_chunking.py - build_merge - test_export.py - save_manifest - test_dotnet.py - classify_file - graphify/build.py - extract_bash - test_cli_export.py - test_claude_cli_backend.py - test_image_vision.py - cache.py - test_detect.py - extract_python - dispatch_command - test_cache.py - build - test_codebuddy.py - test_ts_import_type_arguments.py - test_semantic_cleanup.py - api.py - llm.py - extract_markdown - test_csharp_member_calls.py - test_multilang.py - to_obsidian - _labels - test_multigraph_diagnostics.py - test_serve.py - test_manifest_ingest.py - save_semantic_cache - test_serve_http.py - extract_cpp - to_wiki - extract_commonlisp - extract_objc - _parse_llm_json - pytest - _score_nodes - serve.py - test_mcp_ingest.py - test_security.py - test_skillgen.py - test_reflect.py - extract_dart - install - test_devin.py - test_global_graph.py - gen.py - exceptions.py - test_pascal.py - os - bench_query_scoring.py - dedup.py - test_indirect_dispatch.py - test_benchmark.py - extract_terraform - extract_sql - scip_ingest.py - parametrize - _pick_seeds - _make_git_repo - test_install_references.py - introspect_cargo - test_atomic_writes.py - test_rust_self_member_calls.py - test_pdf_token_estimate.py - claude_install - test_query_induced_edges.py - test_explain_cli.py - test_extract_twice_failing_file_carries_error_marker - detect_backend - reflect.py - test_transcribe.py - test_hooks.py - sys - test_export_control_characters.py - normalize_id - test_cluster.py - Response - test_stat_index_portability.py - extract_robot - test_pg_introspect.py - test_install_roundtrip.py - test_unverified_semantic_shrink.py - Request - HttpClient - test_symbol_resolution.py - test_affected_cli.py - test_minhash.py - skipif - test_kotlin_grammar.py - test_analyze.py - test_objc_field_table_remap.py - CsharpNameResolver - extract_ocaml - test_querylog.py - resolve_bash_source_edges - test_extract_code_only_cli.py - test_hook_guard.py - DataProcessor - prs.py - _is_type_like_definition - extract_json - extract_powershell - google_workspace.py - reflect - audit_coverage - symbol_resolution.py - write_callflow_html - test_obsidian_vault_migration.py - extract_go - _detect_default_branch - _query_terms - test_go_qualified_resolution.py - test_indirect_call_function_expression_shadow.py - test_path_cli.py - test_read_hook.py - test_swift_cross_file_calls.py - sample.swift - _surprise_score - test_csharp_interface_dispatch.py - extract_dm - test_incremental.py - _make_symbol_doc - render_all - utils.py - sample_import.ps1 - callflow_html.py - test_callflow_html.py - e - extract_julia - test_cross_repo_member_calls.py - test_dedup_remaps_hyperedges.py - _rewire_unique_stub_nodes - _reset_stat_index - test_jsconfig_baseurl.py - _corpus - extract_fortran - _check_shrink - sample.rs - _fixture - generate_section_flowchart - multigraph_compat.py - resolver_registry.py - sanitize_label - test_js_dynamic_imports.py - test_prune_sweeps_orphans.py - test_search_hook.py - Platform - security.py - affected.py - test_hook_out_of_project_paths.py - test_tree_html.py - validate_extraction - subprocess - test_cpp_objc_cross_file_calls.py - test_incomplete_build_guard.py - test_js_dynamic_import_affected.py - _two_community_graph - extract_verilog - save_query_result - typescript_advanced.ts - test_python_decorators.py - test_python_underscore_resolution.py - load_platforms - test_terraform_modules.py - test_unmapped_at_alias_resolution.py - raw/analyze.py - _llm_tiebreak - extract_elixir - ingest.py - test_evidence_binding.py - test_csharp_partial_classes.py - manifest.json - test_settings_merge.py - sample.kt - _get_extractor - _extract_pascal_regex - label_communities - test_paths.py - test_prs.py - resolve_ruby_member_calls - test_query_names_its_graph.py - test_elixir_import_resolution.py - test_extract_cli.py - test_go_builtin_call_targets.py - test_indirect_call_block_scoped_shadow.py - test_install_upgrade.py - test_java_type_resolution.py - test_lua_import.py - _run - client.py - test_dedup_survivor_richness.py - test_inherited_field_receivers.py - test_install_version_warning.py - test_csharp_object_creation.py - test_imported_export_forwarding.py - test_issue_3405_python_resolution.py - test_semantic_cache_out_root.py - test_ts_inheritance.py - sample.php - scope_semantic_result - extract_pascal - extract_powershell_manifest - _git - test_indirect_call_external_import_shadow.py - _md_extract - test_ts_decorators.py - test_watch_manifest_location.py - HTTPTransport - Window - TDataProcessor - sample.go - test_file_label_disambiguation.py - test_community_hub_labels.py - test_non_regular_files.py - _resolve_js_import_target - _build_server - test_wiki_link_filename_parity.py - test_cross_extension_reexport_self_cycle.py - test_go_interface_methods.py - test_hollow_chunks_arm_shrink_guard.py - test_java_member_calls.py - test_package_json_subpath_imports.py - test_merge_graphs_cli.py - test_no_dedup_flag.py - test_typescript_enum_members.py - UserControl - find_import_cycles - extract_r - fetch_worktrees - DataProcessor - _emitted_hook_run - test_objc_property_ivar_receivers.py - test_hook_chain_survives_skip.py - test_indirect_call_nested_closure_shadow.py - test_inferred_confidence_rubric.py - test_objc_category_interfaces.py - test_type_only_import_cycles.py - AccountService - bench_extract.py - select_diagram_nodes - extract_astro - _parse_python_tree - extract_rust - _mask_sql_comments - test_a_java_build_parks_the_call_and_the_merge_finishes_it - sample.json - test_cross_repo_shared_types.py - test_csharp_call_site_generic_args.py - test_csharp_enum_members.py - test_extract_cache_location.py - test_file_node_id_spec.py - test_global_add_tag_inference.py - _vault_extract - test_out_dir_evidence.py - test_php_type_resolution.py - pick_text - _run_hook_guard - cross_repo_calls.py - test_obsidian_unicode_tags.py - test_src_layout_import_resolution.py - test_backend_extras.py - wiki.py - main - test_csharp_field_generic_args.py - test_csharp_generic_callsites.py - test_csharp_member_nodes.py - as_posix_list - _clear_backend_keys - _run_extract - test_indirect_call_arrow_single_param_shadow.py - test_indirect_call_catch_binding_shadow.py - test_node_id_canonical.py - test_ts_namespace.py - test_ts_receiver_member_calls.py - _plant_skill_tree - Geometry - Demo.ViewModels - sample.razor - geometry - test_external_stub_endpoints.py - sample.sv - Animal - Window - sample.dmf - ScopedCallsUnit - _make_corpus - test_extraction_spec_ids.py - test_objc_member_calls.py - test_query_cli.py - _claude_artifacts - test_ast_ownership_does_not_evict_fail_closed_preserved_node - prompt_fingerprint - raw/cluster.py - test_falkordb_integration.py - test_walk_python_tree_iterative.py - test_labeling.py - test_injection_sentinel_coverage.py - barrel_reexport.ts - TestSubprocessEncoding - _two_node_graph - _node_sources - _inferred_uses - test_indirect_dispatch_getattr.py - test_install_strings.py - test_js_callback_calls.py - test_js_exported_fn_call_resolution.py - test_js_this_member_expressions.py - test_scala_self_type.py - test_ts_generators.py - test_typescript_module_extensions.py - test_wheel_packaging.py - graph_diff - _bash_invokes_search - _norm - _match_anchored_ignore_pattern - attach_graph_impact - compute_pr_impact - parse_memory_doc - validate_url - validate_graph_path - parse_python_import_aliases - TMainForm - test_cjs_module_extension.py - test_duplicate_annotation_edges.py - test_extract_allow_partial_continues_past_ast_failure - test_hooks_dir_duplicate_config_keys_honor_custom_hookspath - test_indirect_dispatch_assign_return.py - test_kotlin_object_literal.py - _many_communities - test_pascal_call_scoping.py - test_php_object_creation.py - _extract_python_rationale - gen_demo_path.py - dynamic_import.ts - sample.scala - cjs_require.js - _make_cross_lang_graph - test_go_import_repoint.py - test_java_enum_members.py - test_pascal_resolution.py - test_phantom_cross_package_call.py - test_python_import_resolution.py - test_report_gap_thresholds.py - render_always_on - test_ts_parse_warning.py - saxpy - sample.ex - sample.csproj - walk_manifest - _parse_ci - _shortest_path_text - sample.c - compilerOptions - sample.zig - Widget - TBaseGadget - sample_calls.py - test_cross_language_call_resolution.py - parametrize - corpus - test_god_nodes_cli.py - test_import_self_loops.py - test_js_destructured_export.py - test_label_communities_batches_when_over_batch_size - test_sourceless_call_targets.py - test_ts_new_expression_calls.py - AsyncHTTPTransport - first_present - format_node_refs - _content_token_swap - _resolve_php_type_references - extract_vbnet - extract_zig - lessons_fresh - load_memory_docs - sample.rb - test_antigravity_install.py - test_case_sensitive_resolution.py - test_cross_repo_external_call_guards.py - test_detect_google_workspace_sidecar_survives_a_gitignored_output_dir - _deny_writes_to - test_js_module_level_anonymous_calls.py - _md_link_fixture - schema_singleton - test_swift_builtin_noise.py - test_swift_import_resolution.py - _path_match - _GraphContextCache - SampleSpec - Foo - sample_php_listen.php - test_atomic_version_stamp.py - _mkG - test_home_sandbox.py - test_label_cli_drops_sentinel_and_bare_key_echoes - test_go_method_declaration_emits_refs_only_when_name_present - _star_graph - sample_doctest.cpp - generate_overview_cards - mermaid_section_id - _kotlin_package_index - resolve_pascal_inherited_calls - _compute_idf - sample.sh - TSampleForm - sample_php_container.php - test_cargo_missing_manifest.py - test_build_calls_dedup - test_edge_only_semantic_extraction_not_stamped_and_retried - test_extract_parallel_returns_false_on_broken_pool - test_extract_parallel_still_spawns_pool_for_multiple_workers - test_gemini_install_writes_gemini_md_without_newline_translation - test_owned_type_sources.py - _make_noisy_graph - test_zero_node_no_cache.py - SamplePackage - _resolve_python_member_calls - _bash_make_id - sample.ts - raw/build.py - TOtherGadget - sample.luau - RateLimiter - ColorResolver - sample.sln - MainViewModel - UserControl - test_js_exported_scalar_bindings.py - test_incremental_rebuild_preserves_call_to_unchanged_typescript_target - _resolve_cross_file_java_imports - _resolve_java_type_references - _community_label_lines - a/Logger.cpp - b/Logger.cpp - Server - SAMPLE - App - Transformer - test_scan_ignore_cost_is_per_directory_not_per_file - test_extract_warns_sql_grammar_failed_to_load - test_pascal_no_duplicate_method_edges_tree_sitter - sample.xaml.cs - App.csproj - _php_mask_to_script_blocks - graphify/__init__.py - Dup - Dup - AccountTrigger - sample.dmi - shapes - Foo - Foo - test_is_ignored_cache_evaluates_each_dir_once - test_is_ignored_no_per_pattern_path_construction - test_convert_office_file_sidecar_name_stable_across_checkouts - test_missing_manifest_code_only_preserves_semantic_layer - test_python_aliased_call_survives_warm_cache - test_python_unresolved_member_calls_do_not_bind_to_bare_function - test_extract_parallel_returns_false_when_pool_cannot_start - test_extract_generic_surfaces_tree_sitter_version_mismatch_hint - test_cluster_only_marks_html_stale_before_report_generation - test_ruby_suffixed_methods_survive_extraction - test_ingest_non_dict_input_returns_empty - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\env.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0002_add_preview_columns.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0003_make_siege_date_nullable.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0004_add_post_priority_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0005_add_description_to_post_priority_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0006_power_level_and_drop_sort_value.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0007_fix_group_number_max.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0008_add_matched_condition_id_to_position.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0009_add_discord_id_to_member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0010_add_last_seen_changelog_at_to_member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0011_add_post_suggest_preview.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\attack_day.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\auth.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\autofill.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\board.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\buildings.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\changelog.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\comparison.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\discord_sync.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\health.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\images.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\lifecycle.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\members.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\notifications.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_priority_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_suggestions.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\posts.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\reference.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\siege_members.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\sieges.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\validation.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\version.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\base.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\seeds.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\session.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\auth.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\main.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\middleware.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_group.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_type_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\enums.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member_post_preference.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch_result.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\position.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_active_condition.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_condition.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_priority_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege_member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\rate_limit.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\attack_day.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\autofill.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\board.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\building.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\changelog.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\common.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\comparison.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_condition.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_suggestions.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege_member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\validation.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\version.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\attack_day.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\autofill.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\board.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\bot_client.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\building_capacity.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\buildings.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\comparison.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\discord_sync.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\image_gen.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\lifecycle.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\members.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\notification_message.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\post_suggestions.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\posts.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\reference.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\siege_members.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\sieges.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\validation.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\telemetry.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed_demo.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\conftest.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_attack_day.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth_rate_limit.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_autofill.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_board.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_bot_client.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_buildings.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_changelog.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_comparison.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config_endpoint.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_cors.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_discord_sync.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_enums.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_health.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_image_gen.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle_integration.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_member_changelog_column.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_members.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notification_message.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notifications.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions_integration.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_posts.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_reference.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_schema.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_canonical.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_demo.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_sieges.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_telemetry.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_validation.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_version.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\config.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\discord_client.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\http_api.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\telemetry.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\conftest.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\__init__.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_discord_client.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_get_guild_member.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_http_api.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_telemetry.py - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\board.spec.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\siege-lifecycle.spec.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\smoke.spec.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\eslint.config.js - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\playwright.config.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\postcss.config.js - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\board.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\changelog.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\client.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\config.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\members.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\notifications.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\App.tsx - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\main.tsx - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\vite-env.d.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\tailwind.config.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vite.config.ts - I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vitest.config.ts - cache_root - _can_symlink - requires_symlinks - _sandbox_home - no_tokenizer - test_barrel_reexport_context_tagged - test_extract_js_destructured_require_imports_from - fake_progressive_bundle - _fresh_index - crate_a - crate_b - graphifyy - TButton - x - y - z - Int ## God Nodes (most connected - your core abstractions) 1. `extract()` - 733 edges 2. `build_from_json()` - 242 edges 3. `_make_id()` - 222 edges 4. `_rebuild_code()` - 201 edges 5. `_read_text()` - 201 edges 6. `detect()` - 133 edges 7. `dispatch_command()` - 128 edges 8. `_file_stem()` - 126 edges 9. `deduplicate_entities()` - 102 edges 10. `_labels()` - 99 edges ## Surprising Connections (you probably didn't know these) - `test_semantic_reference_edges_carry_context_and_source()` --calls--> `_semantic_reference_edge()` [INFERRED] tests/test_extract.py → graphify/extractors/engine.py - `test_skill_registration_uses_host_generic_instruction()` --calls--> `_skill_registration()` [INFERRED] tests/test_install_strings.py → graphify/install.py - `test_matcher_and_command_shape()` --calls--> `_gemini_hook()` [INFERRED] tests/test_gemini_hook.py → graphify/install.py - `test_checkpoint_caches_sliced_document_chunks()` --uses--> `FileSlice` [INFERRED] tests/test_chunking.py → graphify/file_slice.py - `test_cargo_classifies_as_code_manifest()` --uses--> `FileType` [INFERRED] tests/test_manifest_ingest.py → graphify/detect.py ## Import Cycles - 1-file cycle: `tests/fixtures/sample.sv -> tests/fixtures/sample.sv` ## Communities (686 total, 73 thin omitted) ### Community 0 - "test_watch.py" Cohesion: 0.01 Nodes (382): dedupe_nodes(), disambiguate_file_labels_in_nodes(), Relabel colliding-basename file nodes on a raw node-dict list, in place…, Collapse nodes sharing an ``id``, last-writer-wins on attributes. Mirrors what…, _prune_graph_json_sources(), graphify command dispatch — every non-install subcommand. Extracted verbatim…, Drop nodes/edges/hyperedges owned by ``stale_sources`` from graph.json in…, Remap community IDs to maximize overlap with a previous assignment. Uses greedy… (+374 more) ### Community 1 - "build_from_json" Cohesion: 0.01 Nodes (236): contextlib, build_from_json(), dedupe_edges(), edge_data(), edge_datas(), Return one edge attribute dict for (u, v), tolerating MultiGraph. For…, Return every edge attribute dict for (u, v); always a list., Collapse exact parallel edges by ``(source, target, relation)``, keeping the… (+228 more) ### Community 2 - "_read_text" Cohesion: 0.02 Nodes (233): _get_c_func_name(), _import_java(), _walk_scoped(), Recursively unwrap declarator to find the innermost identifier (C)., _read_text(), _c_collect_type_refs(), _cpp_collect_type_refs(), _cpp_declarator_name() (+225 more) ### Community 3 - "extract.py" Cohesion: 0.02 Nodes (194): bisect, _augment_js_reexport_edges(), _emit_rescued_import(), extract_lua(), _extract_parallel(), _extract_sequential(), _extract_single_file(), extract_svelte() (+186 more) ### Community 4 - "test_languages.py" Cohesion: 0.02 Nodes (180): extract_c(), extract_csharp(), extract_groovy(), extract_java(), extract_kotlin(), extract_php(), extract_scala(), Extract classes, interfaces, methods, constructors, and imports from a .java… (+172 more) ### Community 5 - "test_extract.py" Cohesion: 0.01 Nodes (172): collect_files(), _ignored(), #2339 as reported: collect_files returned [] for a real coverage package, both…, test_collect_files_keeps_coverage_code_namespace(), by_label_by_id(), _legacy_collect_files(), Two different files' same-named, otherwise-undefined base class must not…, #2653: function declarations nested inside another function emit nodes, source… (+164 more) ### Community 6 - "pathlib" Cohesion: 0.03 Nodes (116): _augment_cpp_string_tests(), _extract_js_rationale(), _add_doc_ref(), _extract_spock_fallback(), _import_js(), _import_swift(), Emit module-level ``imports`` edges and report the imported modules. A Swift…, Post-pass: extract rationale comments and doc references from JS/TS source.… (+108 more) ### Community 7 - "graphify/__main__.py" Cohesion: 0.04 Nodes (152): errno, functools, _agents_install(), _agents_platform_install(), _agents_platform_uninstall(), _agents_uninstall(), _always_on(), _amp_install() (+144 more) ### Community 8 - "test_install.py" Cohesion: 0.02 Nodes (150): main(), _pin_hash_seed_if_needed(), Handle a downstream reader that closed the pipe early. Redirect stdout to…, Re-exec with PYTHONHASHSEED=0 for commands whose output must be deterministic…, Console entry point. Wraps the CLI so that when a downstream consumer closes…, _silence_broken_pipe(), _agents_install(), _agents_uninstall() (+142 more) ### Community 9 - "json" Cohesion: 0.03 Nodes (128): collections, datetime, _cross_community_surprises(), _cross_file_surprises(), god_nodes(), _is_concept_node(), _is_file_node(), _node_community_map() (+120 more) ### Community 10 - "detect" Cohesion: 0.02 Nodes (142): detect(), _ignored_for_scan(), skipif, Obsidian metadata and plugin caches are not part of the source corpus (#2493)., visual-tests/ bundles and snapshots are noise — must be excluded (#869)., __snapshots__/ and real jest/vitest snapshots/ dirs are artefacts — excluded., #1666: a bare snapshots/ dir with no .snap files is a legit code namespace…, storybook-static/ is a build artefact — must be excluded. (+134 more) ### Community 11 - "extract_js" Cohesion: 0.02 Nodes (138): extract_js(), Extract classes, functions, arrow functions, and imports from a…, Resolve a JS/TS module path or specifier to a local source file. With a Path…, _resolve_js_module_path(), #3035: Calls inside HOF-wrapped export callbacks (with options) are attributed…, #3035 / #1077: Arbitrary `obj.x = wrap(...)` must NOT produce a node., `Foo.prototype.bar = fn` must be captured as a method owned by Foo., `const f = function(){}` (function expression, not arrow) must be captured. (+130 more) ### Community 12 - "test_js_import_resolution.py" Cohesion: 0.06 Nodes (121): _portable_out_of_root_sf(), _sf_entry(), _file_node_id(), File-level node ID matching the skill.md spec: ``{parent_dir}_{stem}`` — one…, _assert_no_root_slug(), _astro_paths(), _astro_project(), Path (+113 more) ### Community 13 - "_extract_with_adaptive_retry" Cohesion: 0.03 Nodes (114): dataclasses, extract_pdf_text(), Extract plain text from a PDF file using pypdf., _best_cut(), bisect_slice(), expand_oversized_files(), FileSlice, is_splittable_text() (+106 more) ### Community 14 - "test_scip_ingest.py" Cohesion: 0.02 Nodes (123): ingest_scip_json(), Convert a SCIP-style JSON document into Graphify nodes and edges. Parameter…, Comprehensive tests for graphify.scip_ingest., Cross-symbol relationship within ONE document resolves via the symbol index., Symbol ending with '#' and no display_name must produce a non-empty label.…, Cross-document relationship resolves to the target document's node id., A relationship targeting a symbol NOT in any document creates a stub external…, `relative_path` as a non-string falls back to the function's source_file… (+115 more) ### Community 15 - "test_llm_backends.py" Cohesion: 0.03 Nodes (108): _call_azure(), _call_openai_compat(), extract_files_direct(), _get_backend_api_key(), _mark_hollow(), _model_requires_default_temperature(), Detect a successful HTTP response that yielded no usable extraction. A local…, Label a hollow response so adaptive retry retries it, without bisecting. Hollow… (+100 more) ### Community 16 - "test_dedup.py" Cohesion: 0.03 Nodes (118): deduplicate_entities(), _get_prot(), _union_with_prot(), Deduplicate near-identical entities in a knowledge graph. Args: nodes: list of…, _make_edges(), _make_nodes(), Tests for graphify/dedup.py entity deduplication pipeline., Exact cross-file matches and a punctuation variant collapse to one survivor:… (+110 more) ### Community 17 - "detect.py" Cohesion: 0.03 Nodes (110): fnmatch, _auto_follow_symlinks(), convert_office_file(), count_words(), docx_to_markdown(), _env_command_args(), _file_within_size_cap(), _find_vcs_root() (+102 more) ### Community 18 - "extract" Cohesion: 0.05 Nodes (97): _canonicalize_csharp_namespace_nodes(), _check_tree_sitter_version(), extract(), _decompose(), _learn(), Collapse duplicate C# namespace node entries to one canonical node per label., Raise a clear error if tree-sitter is too old for the new Language API., Extract AST nodes and edges from a list of code files. Two-pass process: 1.… (+89 more) ### Community 19 - "test_ruby_resolution.py" Cohesion: 0.06 Nodes (108): extract_ruby(), Extract classes, methods, singleton methods, and calls from a .rb file., _call_edges_matching(), _find_raw_call(), _has_call_edge(), _labels(), _method_edges(), _mixes_in() (+100 more) ### Community 20 - "test_chunking.py" Cohesion: 0.03 Nodes (100): extract_corpus_parallel(), _out_of_scope(), _resolve_against_root(), _run_one(), _extraction_system(), _is_vision_image(), _merge_into(), _pack_chunks_by_tokens() (+92 more) ### Community 21 - "build_merge" Cohesion: 0.04 Nodes (100): build_merge(), _infer_merge_root(), Load existing graph.json and return it merged with ``new_chunks``. Does NOT…, Best-effort scan root for relativizing paths in build_merge when the caller…, Path, Regression tests for Graphify issue #3477: Scoped entity deduplication during…, #3477: When two untouched duplicate nodes exist and an incoming node shares the…, #3477: Multiple incoming duplicates still deduplicate normally during… (+92 more) ### Community 22 - "test_export.py" Cohesion: 0.04 Nodes (97): cluster(), _html_document_title(), _html_script(), _html_styles(), _hyperedge_script(), Return a portable label for the graph.html . Tracked artifacts must not…, Generate an interactive vis.js HTML visualization of the graph. Features: node…, to_html() (+89 more) ### Community 23 - "save_manifest" Cohesion: 0.03 Nodes (95): detect_incremental(), load_manifest(), _mtime_may_hide_a_rewrite(), _nfc(), Normalize text to NFC so ignore matching survives Unicode form drift. macOS…, NFC-normalize a path string used as a manifest key. On macOS, ``os.walk`` /…, Return ``key`` as a forward-slash relative path from ``root``. Keys outside…, Inverse of :func:`_to_relative_for_storage`. Re-anchor a stored key against… (+87 more) ### Community 24 - "test_dotnet.py" Cohesion: 0.03 Nodes (89): extract_csproj(), extract_slnx(), extract_xaml(), _project_xml_is_safe(), Reject XML that declares DTDs or entities. Stdlib ``xml.etree.ElementTree``…, Extract projects and inter-project dependencies from a .slnx file. .slnx is the…, Extract packages, project refs, and target framework from a…, Extract WPF/XAML structure, bindings, x:Class, and event handler references. (+81 more) ### Community 25 - "classify_file" Cohesion: 0.03 Nodes (92): Enum, classify_file(), FileType, Return the interpreter name from a shebang line. Handles forms that a naive…, Peek at the first line of an extensionless file for a shebang., _shebang_file_type(), _shebang_interpreter(), str (+84 more) ### Community 26 - "graphify/build.py" Cohesion: 0.04 Nodes (88): Token-reduction benchmark - measures how much context graphify saves vs naive…, _abs_identity(), _explained(), _in_new_graph(), _kept(), _prune_match(), _build_prune_sets(), _coerce_hyperedge_member_refs() (+80 more) ### Community 27 - "extract_bash" Cohesion: 0.03 Nodes (90): _bash_assignment_base(), _bash_source_suffix(), extract_bash(), add_edge(), add_node(), _bash_call_in_command_allowed(), _bash_func_name(), is_inside_expansion() (+82 more) ### Community 28 - "test_cli_export.py" Cohesion: 0.05 Nodes (84): _calls(), _init_git_repo(), _make_graph(), CompletedProcess, Path, Integration tests for graphify export subcommands and CLI commands. Each test…, #1423: `graphify extract` honours GRAPHIFY_OUT for where it WRITES, not only…, Write a minimal hand-rolled directed graph.json for path-direction tests. (+76 more) ### Community 29 - "test_claude_cli_backend.py" Cohesion: 0.04 Nodes (77): _azure_client(), _call_claude_cli(), _call_llm(), _claude_cli_envelope(), _claude_cli_error(), _claude_cli_supports_json_schema(), _no_window_kwargs(), Parse the JSON returned by `claude -p --output-format json`. Older Claude Code… (+69 more) ### Community 30 - "test_image_vision.py" Cohesion: 0.04 Nodes (72): _anthropic_content(), _anthropic_response_text(), _bedrock_content(), _bedrock_response_text(), _build_image_refs(), _call_bedrock(), _call_claude(), _image_notes() (+64 more) ### Community 31 - "cache.py" Cohesion: 0.04 Nodes (78): atexit, _absolutize_source_files_in(), cache_dir(), cached_files(), cached_word_count(), _cleanup_stale_ast_entries(), _ensure_stat_index(), file_hash() (+70 more) ### Community 32 - "test_detect.py" Cohesion: 0.04 Nodes (78): _generic_keyword_hit(), _is_env_template(), _is_sensitive(), True for `.env.example` / `.envrc.sample` style committed templates (#2184)., True if a generic secret keyword appears load-bearing in the filename. Secret-…, Return True if this file likely contains secrets and should be skipped., parametrize, The gate itself: name alone is not enough, and an unverifiable call (no parent)… (+70 more) ### Community 33 - "extract_python" Cohesion: 0.04 Nodes (78): extract_python(), Extract classes, functions, and imports from a .py file via tree-sitter AST., All edge sources must reference a known node (targets may be external imports)., contains / method / inherits / imports edges must always be EXTRACTED., Call-graph pass must produce INFERRED calls edges., AST-resolved call edges are deterministic and should be EXTRACTED/1.0., run_analysis() calls compute_score() - must appear as a calls edge., Analyzer.process() calls run_analysis() - cross class→function calls edge. (+70 more) ### Community 34 - "dispatch_command" Cohesion: 0.04 Nodes (56): distinct_repo_tags(), Return a unique, human-meaningful repo tag per input graph for merge-graphs.…, _clone_repo(), _default_graph_path(), dispatch_command(), _enforce_graph_size_cap_or_exit(), _handle_unverified_semantic_shrink(), Path (+48 more) ### Community 35 - "test_cache.py" Cohesion: 0.03 Nodes (77): _body_content(), check_semantic_cache(), Check semantic extraction cache for a list of absolute file paths. Returns…, Strip YAML frontmatter from Markdown content, returning only the body., Tests for graphify/cache.py., A .md file with no frontmatter is hashed by its full content., Non-.md files are still hashed by their full content., mode='deep' saves under cache/semantic-deep/ and reads back from it. (+69 more) ### Community 36 - "build" Cohesion: 0.04 Nodes (72): build(), _coerce_non_string_ids(), _fold_node_aliases(), Merge multiple extraction results into one graph. directed=True produces a…, Fold legacy node field aliases onto canonical keys, in place (#2194). ``name``…, Coerce numeric node ids and edge/hyperedge references to str, in place (#2326).…, #1007: manifest stores absolute paths, graph nodes store relative paths.…, #1007: prune_sources with Windows-style backslash absolute paths must still… (+64 more) ### Community 37 - "test_codebuddy.py" Cohesion: 0.04 Nodes (71): codebuddy_install(), Install the graphify skill and CODEBUDDY.md section for CodeBuddy., Idempotently update or append a graphify-owned section in shared files. If no…, _replace_or_append_section(), _codebuddy_install_user(), _codebuddy_md_path(), Tests for graphify codebuddy install / uninstall commands., The installed hook must include Read|Glob matcher for file-read interception. (+63 more) ### Community 38 - "test_ts_import_type_arguments.py" Cohesion: 0.06 Nodes (66): extract_vue(), _normalize_ts_import_types(), Any, Return whether an import-call match starts in executable source. Regex matching…, Collect byte ranges tree-sitter already parsed as type arguments., Return the ranges in ``ranges`` that contain ``offset``. Scanning the full…, Index :func:`_ts_type_argument_ranges` for :func:`_ts_ranges_containing`.…, Return parser error nodes without depending on a grammar's error name. (+58 more) ### Community 39 - "test_semantic_cleanup.py" Cohesion: 0.05 Nodes (69): _append_rationale_attr(), _is_sentence_like_rationale_label(), load_validated_semantic_fragment(), Path, Load and validate a semantic chunk, rejecting oversize files before parsing.…, Clean up a semantic extraction fragment in-place. Operations: 1. Removes nodes…, Return True if *label* looks like prose / rationale text rather than an entity…, Append one or more rationale strings to *node*'s ``rationale`` attribute. If… (+61 more) ### Community 40 - "api.py" Cohesion: 0.05 Nodes (67): uuid, handle_delete(), handle_enrich(), handle_get(), handle_list(), handle_search(), handle_upload(), API module - exposes the document pipeline over HTTP. Thin layer over parser,… (+59 more) ### Community 41 - "llm.py" Cohesion: 0.04 Nodes (67): base64, BaseException, _backend_supports_vision(), _balanced_object(), _bedrock_inference_config(), _custom_providers_path(), _envelope_after_preamble(), estimate_cost() (+59 more) ### Community 42 - "extract_markdown" Cohesion: 0.05 Nodes (63): _import_csharp(), _import_kotlin(), _active_scan_root(), _build_link_index(), _code_span_mention(), extract_markdown(), add_edge(), add_link() (+55 more) ### Community 43 - "test_csharp_member_calls.py" Cohesion: 0.06 Nodes (66): _calls(), _find(), C# receiver-typed member-call resolution (#1609). `recv.Method()` where `recv`…, `Svc` exists in namespaces A and B; a caller file `using A;` must bind an…, No using directive and `Svc` in two foreign namespaces: genuinely ambiguous —…, A caller in namespace A resolves `Svc` to A.Svc even though B.Svc also exists —…, A local `Other x` shadowing a field `Server x` makes the name's type…, `var x = Compute();` (untypable) redeclaring a typed field poisons the name:… (+58 more) ### Community 44 - "test_multilang.py" Cohesion: 0.05 Nodes (66): _call_pairs(), _edge_labels(), _edges_with_relation(), _extract_sql_or_skip(), _normalize_symbol_label(), Tests for multi-language AST extraction: JS/TS, Go, Rust, SQL., #2577: a name bound by WITH ... AS (...) is scoped to its statement, not a…, #2812: `class FooApiException extends \\Exception` names PHP's global built-in.… (+58 more) ### Community 45 - "to_obsidian" Cohesion: 0.06 Nodes (57): _dedup_node_filenames(), Export graph as an Obsidian Canvas file - communities as groups, nodes as…, Escape a value for safe embedding in a YAML double-quoted scalar (F-009). See…, Map each node_id to a unique note filename, appending a numeric suffix on…, Export graph as an Obsidian vault - one .md file per node with [[wikilinks]],…, to_canvas(), to_obsidian(), _yaml_str() (+49 more) ### Community 46 - "_labels" Cohesion: 0.04 Nodes (63): extract_swift(), Extract classes, structs, protocols, functions, imports, and calls from a…, extract_apex(), Path, Extract classes, interfaces, enums, methods, and Salesforce constructs from…, _labels(), Local const/let/var inside an arrow callback must NOT emit a node (#1077).…, Module-level arrow functions must still emit a node and capture their calls… (+55 more) ### Community 47 - "test_multigraph_diagnostics.py" Cohesion: 0.08 Nodes (60): copy, load_graph(), _canonical_edge(), _count_extra(), diagnose_extraction(), diagnose_file(), _edge_list(), _exact_signature() (+52 more) ### Community 48 - "test_serve.py" Cohesion: 0.05 Nodes (62): _communities_from_graph(), _community_header(), _find_node(), _infer_context_filters(), Return node IDs whose label or ID matches the search term (diacritic-…, Character trigrams of `text`; for <3-char text the whole string is the key., Node IDs whose text could contain any `needle` as a substring, via the trigram…, Reconstruct community dict from community property stored on nodes. (+54 more) ### Community 49 - "test_manifest_ingest.py" Cohesion: 0.06 Nodes (55): builtins, _coerce_deps(), extract_package_manifest(), is_package_manifest_path(), _load_toml_module(), _parse_apm(), _parse_apm_fallback(), _parse_cargo() (+47 more) ### Community 50 - "save_semantic_cache" Cohesion: 0.06 Nodes (55): _group_has_partial_marker(), load_cached(), True if any node/edge/hyperedge in a per-file group carries the internal…, Save semantic extraction results to cache, keyed by source_file. Groups nodes…, Return cached extraction for this file if hash matches, else None. Cache key:…, save_semantic_cache(), group_skipped(), _recover_group_path() (+47 more) ### Community 51 - "test_serve_http.py" Cohesion: 0.08 Nodes (54): _build_http_app(), _main(), _max_server_contexts(), _MCPASGIApp, Return the project-context LRU capacity (default 8, minimum 1).…, Raw-ASGI wrapper around the Streamable HTTP session manager. Passed to a…, Build the Starlette ASGI app for the Streamable HTTP transport. Split out from…, starlette_testclient (+46 more) ### Community 52 - "extract_cpp" Cohesion: 0.05 Nodes (57): _blank_keeping_newlines(), extract_cpp(), _normalize_cpp_cli(), Replace a match with spaces, but keep its line breaks. Byte length alone is not…, Rewrite C++/CLI spellings to standard C++ ones, or None if not C++/CLI. The…, Extract functions, classes, and includes from a .cpp/.cc/.cxx/.hpp file.…, _labels(), parametrize (+49 more) ### Community 53 - "to_wiki" Cohesion: 0.07 Nodes (57): Path, Generate a Wikipedia-style wiki from the graph. Writes: - index.md — agent…, to_wiki(), _inline_links(), _make_graph(), Tests for graphify.wiki — Wikipedia-style article generation., Each incident edge is counted exactly ONCE (#2633). The Parsing Layer (n1, n2)…, Yield (display, target) for each inline markdown link, skipping external URLs.… (+49 more) ### Community 54 - "extract_commonlisp" Cohesion: 0.07 Nodes (58): extract_commonlisp(), add_edge(), add_import_stub(), add_node(), _cl_id(), _collect_def_body(), ensure_class_ref(), _extract_def_name() (+50 more) ### Community 55 - "extract_objc" Cohesion: 0.04 Nodes (58): extract_objc(), add_edge(), add_node(), _collect_instance_variables(), ensure_named_node(), _field_decl_entry(), _get_name(), _read() (+50 more) ### Community 56 - "_parse_llm_json" Cohesion: 0.05 Nodes (55): _parse_llm_json(), Strip optional markdown fences and parse JSON. Returns empty fragment on…, Force ``nodes``/``edges``/``hyperedges`` to lists of dicts, in place. A model…, _sanitize_fragment(), patch, test_sanitize_fragment_coerces_dict_members_to_strings(), _make_envelope(), Tests for `_parse_llm_json` robustness and the `_call_claude_cli` subprocess… (+47 more) ### Community 57 - "pytest" Cohesion: 0.05 Nodes (38): graphify, io, pytest, Tests for ANTHROPIC_BASE_URL / ANTHROPIC_MODEL overrides on the claude backend.…, Regression tests for UnicodeEncodeError on Windows cp1252 console. On Windows…, extract_corpus_parallel must surface chunk failures loudly — either via non-…, When chunks fail, extract_corpus_parallel must record failed_chunks > 0 in its…, A summary line must appear on stderr when ≥1 chunk fails. (+30 more) ### Community 58 - "_score_nodes" Cohesion: 0.05 Nodes (53): Render subgraph as text, cutting at token_budget (approx 3 chars/token). seeds:…, Combined query scorer returning the existing ranked `(score, node_id)` list.…, _score_nodes(), _subgraph_to_text(), _make_graph(), A multi-word query equal to a whole label must resolve uniquely. Regression for…, Searching for '路由' should match a node with label containing '路由'., A lone generic-word exact match must not bury a multi-term match. Reproduces… (+45 more) ### Community 59 - "serve.py" Cohesion: 0.05 Nodes (48): array, _ApiKeyMiddleware, _filter_blank_stdin(), _load_graph(), _normalize_context_filters(), _query_graph_text(), Undirected copy of `G` for BFS/DFS, with true direction kept per edge.…, Filter blank lines from stdin before MCP reads it. Some MCP clients (Claude… (+40 more) ### Community 60 - "test_mcp_ingest.py" Cohesion: 0.08 Nodes (49): _add_edge(), _add_node(), _detect_package_from_args(), _emit_server(), extract_mcp_config(), is_mcp_config_path(), Any, Path (+41 more) ### Community 61 - "test_security.py" Cohesion: 0.06 Nodes (48): _build_opener(), _max_graph_file_bytes(), Fetch *url* and return raw bytes. Protections applied: - URL scheme validated…, Fetch *url* and return decoded text (UTF-8, replacing bad bytes). Wraps…, Return the graph.json size cap in bytes. Honors the…, Return a control-character-free, HTML-escaped, bounded string., Sanitize a metadata value while preserving simple JSON-compatible types., safe_fetch() (+40 more) ### Community 62 - "test_skillgen.py" Cohesion: 0.05 Nodes (51): _platform_artifacts(), Tests for the tools/skillgen generator and the claude lean-core split. skillgen…, `agents` re-homes amp's agents-md body but with its OWN install wording. It…, The Windows bootstrap must not write the sidecar markers with a BOM (#3028).…, windows: name must be `graphify` (folder-name rule, #1635), powershell install,…, codex: spawn/wait/close_agent dispatch needing multi_agent = true., codex (was 4-value) and windows (was 5-value) now carry the superset., The extraction variant differs: codex compact, windows verbose. (+43 more) ### Community 63 - "test_reflect.py" Cohesion: 0.09 Nodes (49): aggregate_lessons(), Aggregate parsed memory docs into a deterministic lessons structure. ``now``…, Render the aggregate into the deterministic LESSONS.md markdown body., render_lessons_md(), _days_before(), _doc(), Tests for `graphify reflect` and the work-memory reflection layer. `graphify…, Corroboration (k>=2) + sign decide the bucket, not raw frequency: A is useful… (+41 more) ### Community 64 - "extract_dart" Cohesion: 0.06 Nodes (22): extract_dart(), Path, Extract classes, mixins, functions, imports, generic calls, and annotations…, Test that the universal parser successfully extracts generic relationships,…, Test complex Dart 3+ syntax and precise Riverpod/Bloc mappings., Test that the parser successfully handles namespaces in extends/implements, and…, Test typedefs, mixin on, factories, constructor DI types, and universal…, Test all 5 roadmap bug fixes (Bug A, B, C, D, E). (+14 more) ### Community 65 - "install" Cohesion: 0.08 Nodes (47): _git_root(), _has_merge_attr(), _hooks_dir(), install(), _install_hook(), _is_rotating_prefix(), _load_graphifyrc(), _merge_attr_line() (+39 more) ### Community 66 - "test_devin.py" Cohesion: 0.06 Nodes (48): _devin_install_user(), Tests for graphify devin install / uninstall commands., The rules file installed by devin must use query-first policy., Installing rules twice does not change content and prints 'no change'., Project-scope install prints a git add hint covering .devin/ and .windsurf/., User-scope uninstall removes the skill file., User-scope uninstall prints an appropriate message when nothing is installed., Project-scope uninstall removes .devin/skills/graphify/SKILL.md. (+40 more) ### Community 67 - "test_global_graph.py" Cohesion: 0.10 Nodes (46): prefix_graph_for_global(), prune_repo_from_graph(), Return a copy of G with all node IDs prefixed with repo_tag::. Labels are…, Remove all nodes tagged with repo_tag from G in-place. Returns count removed., _file_hash(), global_add(), global_list(), global_remove() (+38 more) ### Community 68 - "gen.py" Cohesion: 0.05 Nodes (47): The translator is strict: a bash line it does not recognize fails the render…, test_powershell_translator_rejects_unknown_bash(), _core_to_powershell(), _enum_lines(), _is_cache_unlink_fix_line(), _is_chunk_cleanup_line(), _is_community_label_export_fix_line(), _is_content_scope_fix_line() (+39 more) ### Community 69 - "exceptions.py" Cohesion: 0.06 Nodes (41): CloseError, ConnectTimeout, CookieConflict, DecodingError, HTTPError, HTTPStatusError, InvalidURL, NetworkError (+33 more) ### Community 70 - "test_pascal.py" Cohesion: 0.07 Nodes (36): extract_lazarus_package(), Extract package metadata from Lazarus .lpk package files (XML format). .lpk is…, extract_delphi_form(), extract_lazarus_form(), Path, Extract component hierarchy from Delphi .dfm form files. .dfm files come in two…, Extract component hierarchy from Lazarus .lfm form files. .lfm is a text-based…, _edges_with_relation() (+28 more) ### Community 71 - "os" Cohesion: 0.06 Nodes (41): _cached_source_key(), Resolve-and-relativize one source path, memoized (#perf).…, _source_key(), importlib, inspect, os, _documented_symbols(), parametrize (+33 more) ### Community 72 - "bench_query_scoring.py" Cohesion: 0.08 Nodes (45): argparse, _find_node_tiers(), _flatten_attr_text(), _get_trigram_index(), _label_has_literal_exact_match(), _node_attributes_text(), _node_rationale_text(), _node_search_text() (+37 more) ### Community 73 - "dedup.py" Cohesion: 0.05 Nodes (44): _collision_rank(), _defines_id(), _id_prefixes(), _is_code(), _lifecycle_penalty(), _make_minhash(), _merge_missing_attributes(), Path (+36 more) ### Community 74 - "test_indirect_dispatch.py" Cohesion: 0.10 Nodes (44): _build(), _extract(), _extract_dir(), _extract_js_dir(), Indirect dispatch edges. A function passed BY NAME as a call argument…, No recall regression: a real module fn passed by name still emits an edge., Regression: when the scan root relativizes node ids (cache_root == project…, The cross-file resolver guard in extract.py must suppress indirect_call edges… (+36 more) ### Community 75 - "test_benchmark.py" Cohesion: 0.10 Nodes (42): _estimate_tokens(), _hr(), print_benchmark(), _query_subgraph_tokens(), Print a human-readable benchmark report., Return unicode_char if stdout can encode it, else ascii_fallback. Windows…, Horizontal rule that survives non-UTF-8 stdout (e.g. Windows cp1252 console)., Run BFS from best-matching nodes and return estimated tokens in the subgraph… (+34 more) ### Community 76 - "extract_terraform" Cohesion: 0.10 Nodes (38): graphify_extractors, extract_terraform(), _add_edge(), _add_node(), _block_parts(), _clean_val_str(), _collect_direct_attributes(), _collect_refs() (+30 more) ### Community 77 - "extract_sql" Cohesion: 0.06 Nodes (43): extract_sql(), _add_edge(), _add_node(), _collect_defined_names(), _obj_name(), _read(), _ref_stub(), walk() (+35 more) ### Community 78 - "scip_ingest.py" Cohesion: 0.06 Nodes (42): _build_scip_metadata(), _coerce_str(), _emit_relationships(), _emit_symbol_node(), _first_occurrence_line(), _is_true(), _make_scip_node_id(), Any (+34 more) ### Community 79 - "parametrize" Cohesion: 0.05 Nodes (41): _extract_root_resolution(), _launcher_payload(), parametrize, #2166: a space must not empty the pin. The install-time allowlist had no space,…, Widening the allowlist for spaces (#2166) must not admit anything that can…, The rebuild must survive a marker written by Windows PowerShell 5.1 (#3028).…, A pin is only worth writing if it still resolves tomorrow. graphify installed…, Git for Windows' bundled shell ships no `nohup`/`setsid`, so the old `nohup ...… (+33 more) ### Community 80 - "_pick_seeds" Cohesion: 0.05 Nodes (40): _pick_seeds(), Select BFS seed nodes, stopping when score drops too far below the top.…, _make_random_scoring_graph(), parametrize, Test-only oracle for the legacy per-term `_pick_seeds(terms=...)` loop. Re-…, `_score_query(..., collect_per_term_seeds=False).ranked` is the byte-for- byte…, Per-token winner the single-pass scorer records matches the legacy…, The seeds produced by `_pick_seeds(qs.ranked, G=G, best_seed_by_term=… (+32 more) ### Community 81 - "_make_git_repo" Cohesion: 0.05 Nodes (40): _make_git_repo(), install() must set merge.graphify.* via git config and add the .gitattributes…, Running install twice must not duplicate the .gitattributes line., A pre-existing .gitattributes entry must survive install (no clobber)., #2166: git runs the merge driver through a shell, so a pinned path with a space…, #2166 end to end: the emitted hooks must carry the real interpreter, not ''., Test 2: Without .graphifyrc, generated hooks omit GRAPHIFY_VIZ_NODE_LIMIT…, Test 3: viz_node_limit from .graphifyrc is baked into both hooks. (+32 more) ### Community 82 - "test_install_references.py" Cohesion: 0.06 Nodes (40): _build_wheel_names(), fake_bundle(), _first_unbuilt_progressive_host(), _install(), Tests for the progressive-disclosure references/ sidecar install path. The real…, Reinstall swaps references/ in place, dropping a stale fragment., Uninstall rmtrees references/ before the dir walk so the tree is cleared., If SKILL.md links references/ but the dir is gone, warn to repair. (+32 more) ### Community 83 - "introspect_cargo" Cohesion: 0.10 Nodes (39): _discover_root_manifest(), introspect_cargo(), _load_toml(), _member_manifest_paths(), Any, Path, Cargo manifest introspection for workspace-internal crate dependencies., Find a Cargo.toml under *root* when none sits directly at the root. A bounded-… (+31 more) ### Community 84 - "test_atomic_writes.py" Cohesion: 0.07 Nodes (33): _owned_write(), _atomic_replace(), Atomically replace ``path`` with content written by ``write_fn(f)``. Writes a…, Atomically write ``text`` (UTF-8) to ``path``. See :func:`_atomic_replace`., write_text_atomic(), skipif, Tests for atomic JSON writes (graph.json / manifest.json). A crash, kill, or…, On Windows os.replace raises PermissionError when the destination is briefly… (+25 more) ### Community 85 - "test_rust_self_member_calls.py" Cohesion: 0.10 Nodes (39): Resolve cross-file Rust `self.method()` calls (#2234). The shared cross-file…, _resolve_rust_self_member_calls(), _calls(), _find(), parametrize, Path, Rust cross-file `self.method()` resolution (#2234). The shared cross-file call…, The marker is not proof when two declarations share owner and arity. (+31 more) ### Community 86 - "test_pdf_token_estimate.py" Cohesion: 0.08 Nodes (40): _dispatched_source_text(), _estimate_file_tokens(), _file_to_text(), _get_tokenizer(), _pdf_text_for_estimate(), Path, Extracted text of a PDF, memoised for the packing pass., Estimate the prompt-token cost of a file or slice under `_read_files` rules.… (+32 more) ### Community 87 - "claude_install" Cohesion: 0.07 Nodes (39): claude_install(), Write the graphify section to the local CLAUDE.md., Tests for graphify claude install / uninstall commands., claude_install also writes .claude/settings.json with PreToolUse hook., Running claude_install twice does not duplicate the PreToolUse hook., Creates CLAUDE.md when none exists., claude_uninstall removes the PreToolUse hook from settings.json., A hook relocated to .claude/settings.local.json is removed on uninstall. (+31 more) ### Community 88 - "test_query_induced_edges.py" Cohesion: 0.10 Nodes (38): _bfs(), _complete_induced_edges(), _dfs(), _filter_graph_by_context(), Append edges between visited nodes that the traversal never recorded (#2323).…, _add(), _induced(), _link() (+30 more) ### Community 89 - "test_explain_cli.py" Cohesion: 0.09 Nodes (39): Regression tests for `graphify explain` arrow direction (#853)., No sidecar => no Lesson line; output identical to pre-feature., BUG1: an explain connection shows the edge's call-SITE line (in the caller's…, A node with n_callers callers, spread across `files` (default: 3 files, so…, Baseline: the cut count is still announced (pre-existing behavior)., #2009: past the top-20 cutoff, the remaining callers must still be accounted…, Regression guard: nodes at or below the 20-connection cutoff keep the pre-#2009…, Pin the exact `> 20` cutoff itself. The other #2009 tests use 30 and 5… (+31 more) ### Community 90 - "test_extract_twice_failing_file_carries_error_marker" Cohesion: 0.05 Nodes (13): extract() must run sequential when _extract_parallel signals failure (returns…, #2444: a BrokenProcessPool raised from future.result() (pool died while results…, #2444: when the pool breaks mid-run, the sequential fallback must re-extract…, #2445: a non-BPP per-future failure must be surfaced and retried in-process,…, #2445: a file that fails in the pool AND on the sequential retry must end up…, Guard for the #2445 error-marked None-fill: a file whose extractor genuinely…, test_extract_bpp_fallback_skips_already_completed_files(), test_extract_falls_back_to_sequential_when_parallel_returns_false() (+5 more) ### Community 91 - "detect_backend" Cohesion: 0.06 Nodes (36): backend_detection_env_vars(), _backend_env_keys(), detect_backend(), _ollama_host_is_link_local_or_metadata(), Return accepted API-key environment variables for a backend., True if *host* is, or resolves to, a link-local / cloud-metadata address.…, Warn if OLLAMA_BASE_URL looks unsafe; hard-block link-local/metadata (F3).…, Every environment variable ``detect_backend()`` consults, in probe order.… (+28 more) ### Community 92 - "reflect.py" Cohesion: 0.09 Nodes (38): _build_id_label_maps(), build_learning_overlay(), _add(), _code_fingerprint(), _content_hash(), _decay(), _dedupe_by_question(), _doc_community() (+30 more) ### Community 93 - "test_transcribe.py" Cohesion: 0.08 Nodes (35): build_whisper_prompt(), download_audio(), _get_whisper(), _get_yt_dlp(), is_url(), _model_name(), Path, Transcribe a video/audio file or URL to a .txt transcript. If video_path is a… (+27 more) ### Community 94 - "test_hooks.py" Cohesion: 0.06 Nodes (35): _detached_launch(), Return a POSIX-sh line that runs ``rebuild_body`` as a detached background…, Tests for hooks.py - git hook install/uninstall., Test 1: .graphifyrc parsing for valid and invalid values., The rotating-prefix rule must not swallow ordinary installs. Control for the…, The uv-tools probe must look inside snap-confined HOMEs. An install made from a…, Hook script must skip shebang extraction for .exe binaries (Windows)., The detection fallback must emit a message to stderr rather than bare exit 0. A… (+27 more) ### Community 95 - "sys" Cohesion: 0.07 Nodes (34): sys, parametrize, Tests for the generic `agents` platform and its `skills` alias (#1432).…, `graphify uninstall --platform agents|skills` (global) clears ~/.agents/skills.…, `graphify uninstall --project` (no platform) removes the agents project skill…, `graphify install --project --platform agents` writes ./.agents/skills and…, `graphify agents install` is the amp-twin: skill at ~/.agents/skills PLUS a `##…, Running `graphify agents install` twice leaves a single AGENTS.md section. (+26 more) ### Community 96 - "test_export_control_characters.py" Cohesion: 0.08 Nodes (36): _cap_filename(), _cypher_escape(), _cypher_label(), _obsidian_safe_stem(), Export graph as GraphML - opens in Gephi, yEd, and any GraphML-compatible tool.…, Escape a string for safe embedding in a Cypher single-quoted literal. Handles…, Sanitise a value used in identifier position (node label / rel type). Cypher…, Drop characters XML 1.0 cannot represent, leaving tab/LF/CR intact.… (+28 more) ### Community 97 - "normalize_id" Cohesion: 0.09 Nodes (35): given, normalize_id(), r"""Normalize a single ID string to its canonical form. Guarantees, all…, _make_id(), Build a stable node ID via the single shared recipe (#1378)., hypothesis, parametrize, Drift guard for the node-ID normalization contract. Three independent producers… (+27 more) ### Community 98 - "test_cluster.py" Cohesion: 0.08 Nodes (34): cohesion_score(), _native_leiden(), _partition(), Run community detection. Returns {node_id: community_id}. Tries Leiden…, Context manager to suppress stdout/stderr during library calls. graspologic's…, Call graspologic_native.leiden() directly, bypassing graspologic's own package…, _suppress_output(), _grouping() (+26 more) ### Community 99 - "Response" Cohesion: 0.10 Nodes (6): AsyncClient, BaseClient, Client, Shared implementation for Client and AsyncClient. Handles auth, redirects,…, Synchronous HTTP client., Response ### Community 100 - "test_stat_index_portability.py" Cohesion: 0.11 Nodes (32): _flush_stat_index(), _dirty(), Path, The atexit stat-index flush must not resurrect a deleted directory (#2974). A…, A first run writes the index before graphify-out/ exists at all; that stays as…, test_a_corpus_deleted_mid_run_stays_deleted(), test_a_redirected_cache_root_that_vanished_is_not_recreated(), test_the_index_is_still_written_for_a_live_run() (+24 more) ### Community 101 - "extract_robot" Cohesion: 0.11 Nodes (34): extract_robot(), add_call_edges(), add_edge(), add_node(), kw_targets(), visit_Keyword(), visit_KeywordCall(), visit_LibraryImport() (+26 more) ### Community 102 - "test_pg_introspect.py" Cohesion: 0.10 Nodes (26): introspect_postgres(), _quote_ident(), Connect to PostgreSQL, reconstruct DDL, and extract via extract_sql()., Double-quote a PostgreSQL identifier, escaping embedded double-quotes., _make_mock_psycopg(), _q(), Baseline: tables, views, routines, and a single-column FK all survive., Reserved-word and special-character table names must survive DDL round-trip.… (+18 more) ### Community 103 - "test_install_roundtrip.py" Cohesion: 0.07 Nodes (33): shutil, _copy_in_tmp(), _has_real_bundle(), _install_via_entrypoint(), parametrize, Full per-platform install + uninstall round-trip suite. Every platform graphify…, amp's project-scope skill lands under .agents/skills, an Amp search root., VS Code Copilot Chat round trip at ~/.copilot/skills/graphify + instructions… (+25 more) ### Community 104 - "test_unverified_semantic_shrink.py" Cohesion: 0.09 Nodes (32): _ast_node(), Path, Tests for unverified semantic document node shrink protection (#3203). When an…, 10 -> 10 semantic nodes with completely different IDs is not flagged as a…, Semantic growth (3 -> 4) is unaffected., Multiple chunks for the same source are summed before comparison (2 + 2 = 4 >=…, Growth in B (3 -> 20) cannot mask unverified shrink in A (6 -> 2)., merge_raw_extraction also flags unverified semantic shrink. (+24 more) ### Community 105 - "Request" Cohesion: 0.09 Nodes (17): Auth, BasicAuth, BearerAuth, DigestAuth, NetRCAuth, Authentication handlers. Auth objects are callables that modify a request…, Load credentials from ~/.netrc based on the request host., Base class for all authentication handlers. (+9 more) ### Community 106 - "HttpClient" Cohesion: 0.09 Nodes (27): cstdio, __global__, iostream, AuthedHttpClient, token_, Connection, resource, string (+19 more) ### Community 107 - "test_symbol_resolution.py" Cohesion: 0.08 Nodes (33): find_unique_python_symbol(), iter_raw_calls(), Resolve one imported symbol to exactly one Graphify node id., Resolve unqualified raw calls conservatively after all files are known. This…, Return raw calls from all per-file extraction fragments. Parameter is…, resolve_cross_file_raw_calls(), Tests for graphify.symbol_resolution., Two genuine NON-test defs of the same name: the god-node guard must still hold… (+25 more) ### Community 108 - "test_affected_cli.py" Cohesion: 0.08 Nodes (32): resolve_seed(), A trailing path separator must not change the match (parity with explain's…, Several nodes share a source_file but none is the L1 file node and none's…, A caller whose call site (L158) differs from its own def line (L90)., An edge with no stored location honestly falls back to the node's def line., `./x.py`, an absolute path and `x.py` name one file and must resolve alike. The…, An absolute-path seed resolves off the graph's location, not the cwd (#2706).…, An absolute seed that is NOT under the derived repo root must report a clean… (+24 more) ### Community 109 - "test_minhash.py" Cohesion: 0.11 Nodes (25): _lsh_integrate(), _mh_coeffs(), MinHash, MinHashLSH, _optimal_lsh_params(), MinHash + band-LSH — datasketch-compatible drop-in (no scipy). datasketch.lsh…, MinHash sketch — same API as datasketch.MinHash for the subset used here., Numerical integration — replaces scipy.integrate.quad for LSH param search. (+17 more) ### Community 110 - "skipif" Cohesion: 0.09 Nodes (33): _assert_harness_can_reject(), _broken_uv_machine(), _detect_run(), _extract_case_pattern(), skipif, A committed `.graphify_root` naming a path that resolves through a symlink loop…, Run the emitted _PYTHON_DETECT under a real sh in a controlled environment —…, #2852's machine: the only graphify-importable python lives in the uv tool venv;… (+25 more) ### Community 111 - "test_kotlin_grammar.py" Cohesion: 0.17 Nodes (30): _edges(), _extract(), _find(), Kotlin grammar-node-type mismatches (#2526, #2550, #2551). PyPI tree-sitter-…, Golden guard: ordinary multi-line Kotlin produces the same nodes/edges as…, A `companion object` member is attributed to its enclosing class (#2565), so…, The cross-file resolution must hold on the real `graphify update` / watch path,…, test_kotlin_aliased_import_resolves_to_original_symbol() (+22 more) ### Community 112 - "test_analyze.py" Cohesion: 0.09 Nodes (31): _file_category(), _is_json_key_node(), make_graph(), parametrize, Tests for analyze.py., Multi-file graph: should find cross-file edges between real entities., _file_category falls back to 'doc' for unknown extensions, so INFERRED…, npm package.json dep-block keys must be filtered from god_nodes output.… (+23 more) ### Community 113 - "test_objc_field_table_remap.py" Cohesion: 0.09 Nodes (29): _absolutize_ids_in(), _id_anchor(), _portability_anchors(), Return the id-slug prefix ``path_str`` contributes above ``rel_str``.…, Root forms to strip from / restore into one cache entry (#2257). Returns…, Apply ``fn`` to objc_field_types["tables"] KEYS (#3150). That table is the one…, Apply ``fn`` to every string VALUE reachable in ``obj``, in place. Values only,…, Replace the absolute root inside every stored id / path with the marker. Walks… (+21 more) ### Community 114 - "CsharpNameResolver" Cohesion: 0.11 Nodes (19): _build_csharp_type_def_index(), CsharpNameResolver, _is_cs_file(), _is_dotnet_source_file(), _metadata(), Path, C# cross-file resolution. The config-driven C# *extractor* (``extract_csharp``…, Namespace/using/alias-aware C# simple-name resolution. Factored out of… (+11 more) ### Community 115 - "extract_ocaml" Cohesion: 0.15 Nodes (30): extract_ocaml(), add_edge(), add_node(), emit_type(), last_name(), line_of(), named_child_text(), path_root_module() (+22 more) ### Community 116 - "test_querylog.py" Cohesion: 0.12 Nodes (30): _log_path(), log_query(), _log_responses(), nodes_from_result(), Any, Path, Append one JSONL record to the query log. Never raises., _clear_log_env() (+22 more) ### Community 117 - "resolve_bash_source_edges" Cohesion: 0.08 Nodes (30): _file_node_id_for_path(), Path, Resolve Bash source/import edges and source-backed function calls. Defensive…, resolve_bash_source_edges(), Path, Strong regression for #cycle-2.7-Codex-v2: monkeypatch the alias parser so the…, When a callee function is defined in multiple sourced files, skip it., Non-bash raw_calls inside sourced-file per_file entries are ignored. (+22 more) ### Community 118 - "test_extract_code_only_cli.py" Cohesion: 0.10 Nodes (26): _mixed_repo(), Path, `graphify extract --code-only` indexes code without an LLM key (#1734). A mixed…, #1971 persistence: once --no-gitignore is set, a later flag-less `graphify…, #2106 traceability: a file dropped by the sensitive-file filter is reported by…, #2923 regression: --code-only --force must not drop the existing semantic…, #2923 follow-up: --code-only --force preserves surviving semantic nodes but…, #3125 regression: `extract --code-only --force` over an existing graph must… (+18 more) ### Community 119 - "test_hook_guard.py" Cohesion: 0.13 Nodes (28): _cli(), _env(), _invoke(), parametrize, Rigorous edge-case coverage for the `graphify hook-guard` subcommand (#522).…, test_dispatch_always_exits_zero(), test_dispatch_missing_mode_exits_zero_silent(), test_dispatch_unknown_mode_exits_zero_silent() (+20 more) ### Community 120 - "DataProcessor" Cohesion: 0.08 Nodes (15): arraylist, helper, java.util.List, Override, ErrorCode, GAME_DONE, OK, ExtendedService (+7 more) ### Community 121 - "prs.py" Cohesion: 0.20 Nodes (26): concurrent_futures, _default_model_for_backend(), Return configured model override or backend default model., bold(), _c(), _ci_icon(), cmd_prs(), cyan() (+18 more) ### Community 122 - "_is_type_like_definition" Cohesion: 0.08 Nodes (20): _merge_swift_extensions(), _park_unresolved_member_call(), Collapse cross-file Swift `extension Foo` nodes into the canonical `Foo`. tree-…, Keep a member call whose receiver type is declared nowhere in this corpus. A…, Resolve cross-file Swift member calls (``recv.method()``) to the real…, Resolve cross-file TS/JS member calls via constructor-injection type tables…, Resolve cross-file C++ member calls (``f.bar()``, ``f->bar()``, ``Foo::bar()``,…, Resolve C# member calls (``recv.Method()``) to the receiver's declared type… (+12 more) ### Community 123 - "extract_json" Cohesion: 0.08 Nodes (30): extract_json(), add_edge(), add_node(), _key_text(), _val_node(), walk_object(), _is_config_json(), Path (+22 more) ### Community 124 - "extract_powershell" Cohesion: 0.08 Nodes (30): extract_powershell(), add_edge(), add_node(), ensure_named_node(), _find_script_block_body(), _ps_type_name(), walk(), walk_calls() (+22 more) ### Community 125 - "google_workspace.py" Cohesion: 0.11 Nodes (26): convert_google_workspace_file(), _extract_file_id_from_url(), _extract_resource_key(), google_workspace_enabled(), Any, Path, Optional Google Workspace shortcut export support. Google Drive for desktop…, Export a Google Workspace shortcut to a Markdown sidecar. Returns the converted… (+18 more) ### Community 126 - "reflect" Cohesion: 0.10 Nodes (30): _load_known_nodes(), _load_node_community(), Build a lookup from node id AND node label -> community label, or None if the…, The set of node ids AND labels in the current graph, or None if unavailable.…, Scan ``memory_dir``, write the lessons doc to ``out_path``, return (path, agg).…, reflect(), _overlay_corpus(), _overlay_graph() (+22 more) ### Community 127 - "audit_coverage" Cohesion: 0.08 Nodes (30): The per-host audit (the guard amp is the exact case for) passes for amp. amp…, `agents` is a post-v8 platform, so its audit baseline is amp's v8 body., The query section heading is the lean-core stub; query.md re-homes the rest., The fence-aware heading scanner must skip '#' lines inside code fences., Every v8 heading single-homes for the cli-inline split hosts too., Every v8 heading lands in the lean core or exactly one reference., Every split host's render single-homes its own v8 body's headings., The audit baseline is the host's OWN v8 skill body, not claude's monolith. This… (+22 more) ### Community 128 - "symbol_resolution.py" Cohesion: 0.10 Nodes (28): ast, build_label_index(), build_python_symbol_index(), existing_edge_pairs(), node_is_resolvable_symbol(), _node_source_stem(), normalise_callable_label(), Any (+20 more) ### Community 129 - "write_callflow_html" Cohesion: 0.08 Nodes (28): build_section_node_map(), CallflowOptions, classify_edges(), detect_lang(), html_comment_text(), infer_project_name(), load_labels(), load_report() (+20 more) ### Community 130 - "test_obsidian_vault_migration.py" Cohesion: 0.12 Nodes (28): _adopt_pre_manifest_notes(), _is_graphify_note(), Path, Whether a vault note carries graphify's own frontmatter signature. Every note…, Names of notes in *out* that graphify itself wrote before manifests existed.…, _export(), _graph(), _notes() (+20 more) ### Community 131 - "extract_go" Cohesion: 0.09 Nodes (29): extract_go(), add_edge(), add_node(), emit_go_method_refs(), ensure_named_node(), symbol_nid(), walk(), walk_calls() (+21 more) ### Community 132 - "_detect_default_branch" Cohesion: 0.10 Nodes (17): _detect_default_branch(), fetch_pr_files(), fetch_prs(), _gh(), Auto-detect the repo's default branch via gh, then git, then fall back to…, _tool_get_pr_impact(), _tool_list_prs(), _tool_triage_prs() (+9 more) ### Community 133 - "_query_terms" Cohesion: 0.07 Nodes (27): _has_chinese(), _is_searchable(), _query_terms(), Segment Chinese text and keep the original term for exact matching., True if term is Chinese, non-English, or an English word longer than 2 chars., Split a query into searchable terms, segmenting Chinese text, then drop…, _segment_chinese(), _make_callers_graph() (+19 more) ### Community 134 - "test_go_qualified_resolution.py" Cohesion: 0.16 Nodes (28): _case_only_sibling_corpus(), _extract(), _ids(), Path, Regression coverage for package-qualified Go calls and type references., An aliased internal qualified type points to its package definition., Changed callers still resolve calls and types defined in unchanged files., Exported wrapper + unexported worker of the same name, plus a decoy. (+20 more) ### Community 135 - "test_indirect_call_function_expression_shadow.py" Cohesion: 0.13 Nodes (28): _extract_js_dir(), _indirect(), An untracked `function (…) {…}` expression's bindings must shadow indirect_call…, Locals, not just parameters, are scoped to the expression's body., Control: the arrow path was already correct and must stay correct., The bindings are scoped to the expression: a same-named module callable…, Two function expressions in one initializer are SEPARATE scopes: the first…, Widening the shadow set must not blanket-suppress inside the body: an… (+20 more) ### Community 136 - "test_path_cli.py" Cohesion: 0.10 Nodes (28): _arrow_line(), _diamond_graph(), _flipped_marker_graph(), Regression tests for `graphify path` arrow direction (#849) and determinism +…, No full-token candidate -> behavior identical to the old scored[0] pick., Two equal-length routes A->P->B and A->Q->B — a tie the traversal must resolve…, #2074: the same graph must yield the same route regardless of PYTHONHASHSEED.…, #2074: the printed relation must be the edge's ACTUAL stored relation, never a… (+20 more) ### Community 137 - "test_read_hook.py" Cohesion: 0.11 Nodes (28): _env(), The Read|Glob PreToolUse guard nudges toward the graph instead of raw reads.…, Config files must stay silent: '.json' must not match the '.js' extension., A real trailing extension must win on multi-dot names (the segment split):…, Backslash-separated paths split on the real final segment, then its ext., An extension that sits on a directory component, not the final segment, must…, A nudge is additionalContext only - the guard must exit 0, never deny., Reading the graph's own report must not start a go-read-the-graph loop. (+20 more) ### Community 138 - "test_swift_cross_file_calls.py" Cohesion: 0.21 Nodes (27): _edge_labels(), _extension_fixture(), _issue_fixture(), _label(), Path, #1604: `let x = Type.shared` cached into a local var, then `x.method()` on a…, A singleton, a caller, and a cross-file `extension` of that singleton., Return {(source_label, relation, target_label)} for the given relations. (+19 more) ### Community 139 - "sample.swift" Cohesion: 0.08 Nodes (17): Bool, Foundation, CacheManager, createProcessor(), NetworkError, connectionFailed, failed, timeout (+9 more) ### Community 140 - "_surprise_score" Cohesion: 0.08 Nodes (28): _cross_language(), Return the first path component - used to detect cross-repo edges., Score how surprising a cross-file edge is. Returns (score, reasons)., Return True if two source files belong to different language families., _surprise_score(), _top_level_dir(), _make_code_doc_graph(), Code↔paper edge should score higher than code↔code edge. (+20 more) ### Community 141 - "test_csharp_interface_dispatch.py" Cohesion: 0.13 Nodes (26): _is_csharp(), _method_label(), Member-level interface dispatch for C# (#3003). A C# call through a…, True when the node is a declaration that lives in a C# file. Every end of a…, Return a method node's bare name, for matching. Case is kept: C# is case…, Link each single-implementer interface method to its implementation. Purely…, resolve_csharp_interface_dispatch(), _extract() (+18 more) ### Community 142 - "extract_dm" Cohesion: 0.13 Nodes (28): extract_dm(), add_edge(), add_node(), _emit_call(), _ensure_type(), _find_child(), _read_include_path(), _type_path_text() (+20 more) ### Community 143 - "test_incremental.py" Cohesion: 0.11 Nodes (26): _edges(), _make_docs_corpus(), CompletedProcess, Path, Integration tests for incremental graphify extract behavior., #2169: an incremental --no-cluster extract of ONE changed file must merge into…, The CLI incremental context carries Rust impl-family identity., #2169: an incremental --code-only --no-cluster run over a mixed corpus must… (+18 more) ### Community 144 - "_make_symbol_doc" Cohesion: 0.07 Nodes (28): _make_symbol_doc(), Helper to build a minimal SCIP document with one symbol., is_reference → relation 'scip_ref'., is_definition → relation 'scip_def'., is_implementation → relation 'scip_impl' (takes priority over is_definition)., is_type_definition → relation 'scip_typed'., Implementation > TypeDefinition > Definition > Reference., When none of is_* flags are set, relation defaults to 'scip_ref'. (+20 more) ### Community 145 - "render_all" Cohesion: 0.08 Nodes (28): #1939: a skill's cache read and write must both name the extraction prompt they…, Regression for #1461: every skill body that describes Step 3 extraction must…, The committed codex/windows artifacts match a fresh render and expected/., The committed artifacts and the expected/ snapshot match a fresh render. This…, Rendering twice yields byte-identical output (no timestamps/versions)., check + audit-coverage pass for every rendered progressive host., Generated artifacts use LF newlines and end in exactly one newline., No generated artifact carries the package version string. (+20 more) ### Community 146 - "utils.py" Cohesion: 0.08 Nodes (18): Cookies, build_url_with_params(), flatten_queryparams(), is_known_encoding(), normalize_header_key(), obfuscate_sensitive_headers(), parse_content_type(), primitive_value_to_str() (+10 more) ### Community 147 - "sample_import.ps1" Cohesion: 0.09 Nodes (19): bar, double, foo, helpers, innermod, innershared, logger, mymodule (+11 more) ### Community 148 - "callflow_html.py" Cohesion: 0.10 Nodes (26): build_community_index(), _community_text(), derive_sections_from_communities(), first_list(), generate_header(), generate_nav(), generate_section_intro(), is_zh() (+18 more) ### Community 149 - "test_callflow_html.py" Cohesion: 0.13 Nodes (26): generate_call_table_rows(), load_graph(), _node_link_payload(), Generate call table row scaffolding for a section's nodes. The Caller/Callee…, Read current graphify graph.json via NetworkX's node-link parser., Load graph.json. Returns normalized (nodes, edges, hyperedges, metadata)., _make_graphify_out(), Path (+18 more) ### Community 150 - "e" Cohesion: 0.08 Nodes (27): _dmm_type_path(), extract_dmf(), extract_dmi(), extract_dmm(), Path, Pull the BYOND metadata text out of a .dmi PNG, or empty string on failure., Extract icon state names from a .dmi (BYOND PNG icon sheet)., Extract type-path references from a .dmm map file's tile dictionary. (+19 more) ### Community 151 - "extract_julia" Cohesion: 0.10 Nodes (27): extract_julia(), add_edge(), add_node(), ensure_named_node(), _func_name_from_signature(), _type_head_names(), walk(), walk_calls() (+19 more) ### Community 152 - "test_cross_repo_member_calls.py" Cohesion: 0.30 Nodes (25): link_cross_repo_member_calls(), Emit `calls` edges for parked member calls another repo answers. Returns the…, _added_calls(), _caller(), _declaration(), _graph(), _method(), _needs() (+17 more) ### Community 153 - "test_dedup_remaps_hyperedges.py" Cohesion: 0.13 Nodes (25): Rewire hyperedge member ids onto dedup survivors, in place. Members come in…, _remap_hyperedge_members(), _extraction(), _members(), _node(), parametrize, Dedup must rewire hyperedge members onto survivors, not drop them. `build()`…, A dedup remap built from union-find is fully flattened (path-compressed), so a… (+17 more) ### Community 154 - "_rewire_unique_stub_nodes" Cohesion: 0.08 Nodes (26): _is_top_level_function_definition(), _lang_family(), _lang_is_case_insensitive(), _node_label_key(), True when the file's language resolves identifiers case-insensitively (#1581)., Interop family of the file's language, or None when unknown/not code., A free/top-level function def (label ``name()``), not a method or type. Methods…, Map unresolved no-source stubs to a unique real definition with the same label. (+18 more) ### Community 155 - "_reset_stat_index" Cohesion: 0.08 Nodes (24): _graph_ids(), _portability_corpus(), Path, A same-length edit must change the digest even when the filesystem reports an…, The guard must not disable the cache: once a file's mtime tick has closed, the…, The stat-index location/anchor are chosen once per process via module globals…, A corpus covering every id/path carrier a cache entry can hold. Deliberately…, Node ids + edge endpoint pairs — the granularity #2257 is about. Deliberately… (+16 more) ### Community 156 - "test_jsconfig_baseurl.py" Cohesion: 0.21 Nodes (25): _cid(), Path, _rails_tree(), Regression tests: jsconfig.json / baseUrl module resolution (#2153).…, Editing `paths` mid-session must retarget the alias, not keep the old map., Same contract for the separately cached `baseUrl` root (#2153)., A webpacker-shaped project: config at the root, modules under baseUrl., _targets() (+17 more) ### Community 157 - "_corpus" Cohesion: 0.10 Nodes (26): _assert_no_dangling(), _corpus(), _nodes_with_label(), Run the full extract() pipeline on fixture files (absolute, resolved paths so…, Foo.h (class) + Foo.cpp (Foo::bar def) + Main.cpp must yield exactly ONE Foo…, `void bar();` in Foo.h and `void Foo::bar() {}` in Foo.cpp must collapse to ONE…, The decl/def merge keeps the header node, so `source_file` names the…, A symbol that was never merged must not grow the new attributes — they mark a… (+18 more) ### Community 158 - "extract_fortran" Cohesion: 0.11 Nodes (25): _cpp_preprocess(), extract_fortran(), add_edge(), add_node(), emit_signature_refs(), ensure_named_node(), _fortran_name(), walk() (+17 more) ### Community 159 - "_check_shrink" Cohesion: 0.10 Nodes (25): _check_shrink(), _accounted(), Return True (ok to proceed) or False (shrink refused). When False, cleans up…, Build a minimal graph-data dict with *n* placeholder nodes., Default case: smaller new graph + no force + no declared deletions = refuse., force=True bypasses the guard regardless of node delta., Caller declared deletions → shrink is expected → guard skipped silently., First-run case: no existing graph → guard inert. (+17 more) ### Community 160 - "sample.rs" Cohesion: 0.13 Nodes (18): HashMap, Self, build_graph(), DEFAULT_MODE, Graph, .CAPACITY, GraphEvent, GraphPair (+10 more) ### Community 161 - "_fixture" Cohesion: 0.26 Nodes (24): tmp_file(), _fixture(), _invoke(), _is_deny(), Strict-mode hook-guard: opt-in block-then-nudge + #1840 gating. The strict…, A project with graphify-out/graph.json + manifest and one source file.…, _read(), test_env_forces_strict_on() (+16 more) ### Community 162 - "generate_section_flowchart" Cohesion: 0.11 Nodes (24): generate_overview_graph(), generate_section_cards(), generate_section_flowchart(), group_nodes_by_file(), mermaid_class_defs(), mermaid_init(), node_label(), preferred_edges() (+16 more) ### Community 163 - "multigraph_compat.py" Cohesion: 0.17 Nodes (18): _build_probe_graph(), CapabilityCheck, _check(), MultigraphCapabilityResult, _probe_duplicate_key_overwrite_semantics(), _probe_keyed_parallel_edges(), probe_multigraph_capabilities(), _probe_node_link_round_trip() (+10 more) ### Community 164 - "resolver_registry.py" Cohesion: 0.14 Nodes (19): LanguageResolver, Path, Registry for cross-file, language-specific resolution passes. Some…, One cross-file, language-specific resolution pass. ``resolve`` has the…, Append a resolver to the global registry and return it (for inline use)., Return a copy of the registered resolvers, in registration order., Run every resolver whose suffix appears in ``paths``. Behaviorally identical to…, register() (+11 more) ### Community 165 - "sanitize_label" Cohesion: 0.10 Nodes (24): Strip control characters and cap length. Safe for embedding in JSON data…, sanitize_label(), _tool_get_community(), _tool_get_neighbors(), _edge_at(), _tool_get_node(), _cut_lines_to_budget(), find_node_ambiguity() (+16 more) ### Community 166 - "test_js_dynamic_imports.py" Cohesion: 0.20 Nodes (23): _edges_to(), Path, `import('…')` in plain .ts/.js must produce exactly one edge per fact (#2575).…, At module scope `caller_nid` IS the file node, so the rescue is genuinely…, The rescue pass must not disturb the AST pass it runs beside., A backtick specifier with no `${` is as static as a quoted one — the AST path…, `fooimport('./x')` is a call to `fooimport`, not a dynamic import., ordinary calls inside a nested named function attribute to that inner function… (+15 more) ### Community 167 - "test_prune_sweeps_orphans.py" Cohesion: 0.17 Nodes (23): _corpus_graph(), _extraction(), _prune(), Pruning a source file must not leave its external-import nodes behind.…, Scoped to what this prune orphans. A source-less node that was already isolated…, Only source-less nodes are swept. A node with a real source_file is prunable…, The sweep lives inside the prune branch; a plain merge must not touch isolated…, The #479 shrink guard raises on unexplained node loss. Swept orphans are… (+15 more) ### Community 168 - "test_search_hook.py" Cohesion: 0.14 Nodes (23): _env(), The Bash PreToolUse guard nudges toward the graph before grep/find searches.…, The guard resolves the graph via GRAPHIFY_OUT, not a hardcoded path., A Bash tool_input carries `command`; the Grep-shape detection must not fire…, Feed a Grep-tool-shaped payload (pattern/path/glob, no command) to the guard., _run(), _run_grep_tool(), _search_matcher() (+15 more) ### Community 169 - "Platform" Cohesion: 0.10 Nodes (22): Each monolith is diff-clean vs v8 except the file_type enum unification., test_monolith_roundtrip_passes_for_aider_and_devin(), _is_sanctioned_monolith_diff(), _is_trigger_line(), monolith_roundtrip(), _normalise(), Platform, Whether a single added/removed monolith line is an allowed change. (+14 more) ### Community 170 - "security.py" Cohesion: 0.10 Nodes (18): collections_abc, _ip_is_blocked(), Resolve *host* once and return (family, validated_ip) for the first address…, HTTPConnection that resolves + validates DNS once, then connects to the exact…, HTTPSConnection variant of _SSRFGuardedHTTPConnection. Connects to the…, urllib handler that routes http:// through _SSRFGuardedHTTPConnection., urllib handler that routes https:// through _SSRFGuardedHTTPSConnection., Return True if *ip* falls in a private/reserved/internal range. Shared by… (+10 more) ### Community 171 - "affected.py" Cohesion: 0.14 Nodes (21): affected_nodes(), AffectedHit, _as_repo_relative(), _bare_name(), format_affected(), _format_location(), _node_label(), _normalize_label() (+13 more) ### Community 172 - "test_hook_out_of_project_paths.py" Cohesion: 0.17 Nodes (22): _is_cwd_relative(), r"""Whether *value* is anchored at the current working directory. The hook's…, _fake_os_name(), _invoke(), _project(), parametrize, skipif, r"""The read hook's out-of-project guard must not treat a rooted-but-driveless… (+14 more) ### Community 173 - "test_tree_html.py" Cohesion: 0.16 Nodes (20): build_tree(), _common_root(), _make_truncation_leaf(), Any, Build a ``{name, total_count, children}`` hierarchy. Each leaf is either a code…, _graph(), CompletedProcess, Path (+12 more) ### Community 174 - "validate_extraction" Cohesion: 0.16 Nodes (21): assert_valid(), Validate an extraction JSON dict against the graphify schema. Returns a list of…, Raise ValueError with all errors if extraction is invalid., validate_extraction(), Result passes Graphify's validate_extraction and build_from_json keeps the…, test_relationship_edges_survive_validate_extraction_and_build(), test_assert_valid_passes_silently(), test_assert_valid_raises_on_errors() (+13 more) ### Community 175 - "subprocess" Cohesion: 0.11 Nodes (19): subprocess, CLI must not crash when a downstream reader closes the pipe early (#1807).…, `graphify --help | head -n1` must leave graphify exiting 0, not 255., A short, fully-buffered output (piped stdout is block-buffered) only flushes at…, test_help_survives_reader_closing_pipe_early(), test_small_buffered_output_survives_reader_that_reads_nothing(), `graphify --help` must list user-facing commands that dispatch_command…, #3140: `graphify --help` must advertise prs, provider, and all export formats. (+11 more) ### Community 176 - "test_cpp_objc_cross_file_calls.py" Cohesion: 0.24 Nodes (22): _call_edges(), _label(), Path, Cross-file member-call and include resolution for C++ (#1547) and ObjC (#1556).…, #2348: a macro heavy class body (Unreal's UCLASS()/GENERATED_BODY()) can defeat…, The exactly-one-candidate guard still applies to the qualified-only fallback:…, The headline #1547 fix: a paired class no longer islands — Main.cpp's use of…, test_cpp_cross_file_member_call_connects_with_relative_paths() (+14 more) ### Community 177 - "test_incomplete_build_guard.py" Cohesion: 0.15 Nodes (20): _arm_extract(), _stub_corpus(), _arm_no_cluster(), _make_docs_corpus(), Tests for the incomplete-build shrink-guard on `graphify extract`. A full build…, #2169: an INCREMENTAL --no-cluster run merges the existing graph forward, so…, A present-but-unparseable existing graph.json (corrupt or mid-write) could be…, #2169: an incremental --no-cluster run must hard-fail on an unparseable… (+12 more) ### Community 178 - "test_js_dynamic_import_affected.py" Cohesion: 0.19 Nodes (22): _build(), _fid(), _file_edges(), DiGraph, Path, `affected` must traverse a dynamic `import('…')` written inside a function —…, `import * as ns` binds the module, not the function that defers the load., `other` is a sibling export; the edge into `load()` that used to rescue this is… (+14 more) ### Community 179 - "_two_community_graph" Cohesion: 0.09 Nodes (19): parametrize, Two disconnected components -> two stable communities, each hub-labelled by its…, #2853: relabeling a large graph must keep a current aggregated HTML., A skipped aggregate must not race with or falsely claim an HTML write., A failed render must not destroy the previous HTML file., A refused write must not erase retry state owned by an earlier run., A completed HTML replacement must remain a successful command., A failing renderer must not roll back a concurrent successful writer. (+11 more) ### Community 180 - "extract_verilog" Cohesion: 0.11 Nodes (22): extract_verilog(), add_edge(), add_node(), _scan_modules(), walk(), Path, First `simple_identifier` under node in pre-order, or None. tree-sitter-verilog…, Extract modules, functions, tasks, package imports, instantiations, and… (+14 more) ### Community 181 - "save_query_result" Cohesion: 0.15 Nodes (21): Save a Q&A result as markdown so it gets extracted into the graph on next…, save_query_result(), Tests for graphify.ingest.save_query_result, Regression for #3301: a second-granularity stamp plus a 50-char slug is not…, An outcome signal is written to both frontmatter (for `reflect`) and an ##…, Backward compatible: a result without an outcome looks exactly as before., test_answer_in_body(), test_concurrent_saves_of_the_same_question_do_not_overwrite() (+13 more) ### Community 182 - "typescript_advanced.ts" Cohesion: 0.10 Nodes (15): Injectable, Module, ref_nestjs_common, ref_user_entity, DEFAULT_ROLES, IUserRepository, USER_CONFIG, USER_REPOSITORY (+7 more) ### Community 183 - "test_python_decorators.py" Cohesion: 0.25 Nodes (21): _class_nid(), _deco_edges(), _func_nid(), _method_nid(), Path, Regression tests: Python decorator references (#2154). Applying a Python…, Decorator-reference edge targets emitted from owner_nid., _stem() (+13 more) ### Community 184 - "test_python_underscore_resolution.py" Cohesion: 0.21 Nodes (21): Path, Regression coverage for Python leading-underscore node-id collisions (#3302).…, Same bug, module-scoped (not inside a class)., `_x`/`__x` collide with no fully-public name in the group -- both must be…, `__x__`, `__x`, and `x` all strip to the same id -- the fully public `x` must…, A file with no underscore-only collisions must extract exactly as before -- no…, A `_foo`/`foo` collision inside class A must not touch an unrelated, non-…, #3302's exact repro: both methods survive as distinct nodes. (+13 more) ### Community 185 - "load_platforms" Cohesion: 0.13 Nodes (22): _powershell_platform_keys(), The agents skill body is amp's body verbatim (it re-homes amp's bundle). The…, Every platform now carries one unified frontmatter description, byte for byte.…, Every platform that renders for a strict-PowerShell host (windows today, plus…, #2528: the Windows variant had a PowerShell Step 1 but bash for Steps 2+…, aider and devin render one inline body, no split and no references dir., Every line that differs from pristine v8 is a sanctioned change-class. The…, The four #1392 data-loss/correctness fixes are present in both monoliths. The… (+14 more) ### Community 186 - "test_terraform_modules.py" Cohesion: 0.27 Nodes (20): _assert_integrity(), _extract(), _module_edges(), _node(), parametrize, Local Terraform module topology, including incremental graph reconciliation., test_cache_recomputes_topology_and_ids_are_portable(), test_environment_application_base_topology_and_source_provenance() (+12 more) ### Community 187 - "test_unmapped_at_alias_resolution.py" Cohesion: 0.17 Nodes (21): Path, Regression tests for #3357: unmapped `@/` path alias resolution. When no…, In a flat layout (no src/ dir) with a nested importer, @/ resolves to root., #3125 invariant: when tsconfig.json exists without paths, @/ must NOT resolve., When tsconfig defines @/* paths, configured mapping wins over convention., @/pointing to non-existent file falls back to stable ref target., @scope/pkg is not an @/ alias and remains an external reference., Minimal reproduction for #3357: - adapter.js exports fn - caller.js imports fn… (+13 more) ### Community 188 - "raw/analyze.py" Cohesion: 0.17 Nodes (20): Graph analysis: god nodes (most connected), surprising connections (cross-…, Return the top_n most-connected real entities - the core abstractions. File-…, Find connections that are genuinely surprising - not obvious from file…, Return True if this node is a manually-injected semantic concept node rather…, Cross-file edges between real code/doc entities, ranked by a composite surprise…, For single-source corpora: find edges that bridge different communities. These…, Generate questions the graph is uniquely positioned to answer. Based on:…, Invert communities dict: node_id -> community_id. (+12 more) ### Community 189 - "_llm_tiebreak" Cohesion: 0.11 Nodes (17): _crossfile_fileanchored_blocked(), _is_variant_pair(), _llm_tiebreak(), _numeric_tokens_differ(), Batch-resolve ambiguous pairs (score in [low, high)) via LLM., Block label-based merging of file-anchored non-code nodes across files (#1284).…, True if a and b are sibling model/SKU variants (same stem, different suffix).…, Block fuzzy merge for short labels unless it's a same-length single-char… (+9 more) ### Community 190 - "extract_elixir" Cohesion: 0.12 Nodes (20): extract_elixir(), add_edge(), add_node(), _get_alias_modules(), _get_alias_text(), walk(), walk_calls(), Path (+12 more) ### Community 191 - "ingest.py" Cohesion: 0.18 Nodes (20): _detect_url_type(), _download_binary(), _fetch_arxiv(), _fetch_html(), _fetch_tweet(), _fetch_webpage(), _html_to_markdown(), ingest() (+12 more) ### Community 192 - "test_evidence_binding.py" Cohesion: 0.17 Nodes (20): _bind_node_evidence(), _label_identifiers(), Identifier tokens from a node label, stripped of a trailing call/args…, Downgrade code-typed nodes whose symbol name has no evidence in the source the…, _by_label(), Tests for semantic evidence-binding in graphify.llm. A code node the model…, Drive extract_files_direct with a faked backend returning ``nodes``., _run() (+12 more) ### Community 193 - "test_csharp_partial_classes.py" Cohesion: 0.19 Nodes (20): _extract(), _find(), _nodes_labeled(), C# partial classes split across files (#2332). `partial class Foo` declared in…, Nested partial types are excluded: their ids omit the enclosing type name, so…, Map each Widget class node -> set of member-method labels hanging off it., #2411: same fully-qualified name under TWO .csproj projects is two genuinely…, Adding a .csproj must not break the #2332 merge within one project. (+12 more) ### Community 194 - "manifest.json" Cohesion: 0.10 Nodes (20): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0001_initial_schema.py, hash, mtime, I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\config.py, hash, mtime, I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\__init__.py, hash (+12 more) ### Community 195 - "test_settings_merge.py" Cohesion: 0.21 Nodes (19): ALL_INSTALLERS, Path, Regression tests for issue #2167: hook installers must merge into existing…, A UTF-8 BOM must not trigger the parse-error path that used to clobber., An unparseable existing file must abort the install, byte-identical on disk., Valid JSON that is not an object (e.g. a list) must also refuse, not crash., A malformed hooks value (not a dict) refuses instead of raising/clobbering., A legacy non-dict entry in the managed section must not crash the filter (the… (+11 more) ### Community 196 - "sample.kt" Cohesion: 0.13 Nodes (16): delay, max, MutableList, ChatType, GROUP, NORMAL, SYSTEM, createClient() (+8 more) ### Community 197 - "_get_extractor" Cohesion: 0.10 Nodes (20): _get_extractor(), Return the correct extractor function for a file, or None if unsupported., test_dispatch_table(), Extensionless CLIs resolve their extractor from the shebang, mirroring…, test_extensionless_shebang_via_dispatch(), test_extensionless_without_usable_shebang_stays_unsupported(), test_extract_bash_via_dispatch(), test_extract_json_via_dispatch() (+12 more) ### Community 198 - "_extract_pascal_regex" Cohesion: 0.10 Nodes (15): _extract_pascal_regex(), _pascal_find_body(), _pascal_split_bases(), _pascal_split_sections(), _pascal_split_uses(), _pascal_strip_comments(), Path, Split a uses list string, handling 'Foo in ''bar.pas''' syntax. (+7 more) ### Community 199 - "label_communities" Cohesion: 0.16 Nodes (15): label_communities(), Return a complete ``{cid: name}`` map using ``backend`` for naming. Communities…, _graph(), god_nodes() returns list[dict] with an 'id' key, not bare ids., test_empty_communities_returns_placeholders(), test_gods_as_dicts_do_not_crash(), test_label_communities_accumulates_token_usage(), test_label_communities_counts_tokens_for_failed_batch() (+7 more) ### Community 200 - "test_paths.py" Cohesion: 0.15 Nodes (19): disambiguate_ambiguous_candidates(), _is_test_path(), _path_proximity_winner(), _common_prefix_len(), Classify a source path as a test path (case-insensitive, segment-aware). Shared…, Pick the candidate whose source file is closest to the call site.…, Resolve an ambiguous bare-name call to one candidate, or ``None``. Shared god-…, parametrize (+11 more) ### Community 201 - "test_prs.py" Cohesion: 0.21 Nodes (9): _classify(), format_prs_text(), Plain-text PR summary for MCP output (no ANSI)., make_pr(), datetime, Tests for graphify/prs.py., Build a minimal PRInfo with sensible defaults., TestClassify (+1 more) ### Community 202 - "resolve_ruby_member_calls" Cohesion: 0.15 Nodes (17): _key(), _method_name(), Type-aware cross-file resolution for Ruby member calls. Ruby has no type…, Normalize a class/method label to a comparison key (drop punctuation)., Resolve Ruby ``Class.new`` and typed ``var.method`` calls by receiver type.…, resolve_ruby_member_calls(), _class_by_const_path(), _has_external_method_owner() (+9 more) ### Community 203 - "test_query_names_its_graph.py" Cohesion: 0.17 Nodes (19): _display_graph_path(), Render a graph path for the query header. Relative to the CWD when it sits…, _graph(), _header(), A query answer must say which graph it came from. `graphify-out/` resolves…, A display helper must not be the reason a query fails., The end-to-end point: the parent and the subproject must not look alike., The case the issue is about: the answer came from somewhere else. (+11 more) ### Community 204 - "test_elixir_import_resolution.py" Cohesion: 0.19 Nodes (17): _extract(), _find(), _find_file(), Path, Elixir cross-file alias/import/require/use resolution (#2556). `extract_elixir`…, Two DIFFERENT files each declare a module with the same bare name -- the…, A module with no matching definition anywhere in the corpus (stdlib, a hex…, A nested `defmodule` is labeled with its bare inner name, so an unrelated `use… (+9 more) ### Community 205 - "test_extract_cli.py" Cohesion: 0.12 Nodes (16): _code_only_corpus(), Tests for `graphify extract` CLI dispatch path in graphify.__main__., Run 1 builds a graph where OTHER.md contributes two nodes. Run 2 changes only…, Unit test for the #1897 helper: relative (fresh) and absolute (cache-hit)…, #1920: a doc whose only chunk output is a hyperedge (3+ nodes sharing a…, A corpus with only code — no docs/papers/images., A code-only corpus must run with no LLM API key. Regression: graphify extract…, `extract --out DIR` routes every artifact to DIR/graphify-out/ and the scanned… (+8 more) ### Community 206 - "test_go_builtin_call_targets.py" Cohesion: 0.19 Nodes (19): builtin_shadow_repo(), _edges_between(), _extract_go(), _label(), _nodes_by_file(), Go predeclared functions must not bind to same-named user symbols.…, The guard is a no-op for genuine user symbols. Uses a plain package-level call:…, Same-file binding needs the guard too, not just the cross-file pass.… (+11 more) ### Community 207 - "test_indirect_call_block_scoped_shadow.py" Cohesion: 0.17 Nodes (19): _extract_js_dir(), _indirect(), A block-scoped `let`/`const` binding must not shadow indirect_call references…, var is genuinely function-scoped (hoisted): unlike the let/const case above, a…, Same as above for a var-form for-of loop binding: hoisted, so it must still…, Widening the shadow scope must not blanket-suppress: a same-named callable…, Case 1 from the issue: a `const` declared inside an `if` block must not…, Case 2 from the issue: referenced after the loop ends, not inside it. (+11 more) ### Community 208 - "test_install_upgrade.py" Cohesion: 0.15 Nodes (19): _assert_no_report_first(), _assert_query_first(), Installer-level regression tests for upgrade-in-place behavior (issue #580).…, The Claude install must also rewrite a stale .claude/settings.json hook payload…, Same upgrade behavior for AGENTS.md (Codex / OpenCode / Aider / Trae)., Same upgrade behavior for GEMINI.md., Same upgrade behavior for .github/copilot-instructions.md (VS Code)., Same upgrade behavior for .cursor/rules/graphify.mdc. The Cursor rule file is… (+11 more) ### Community 209 - "test_java_type_resolution.py" Cohesion: 0.29 Nodes (19): _label_edges(), _node_by_id(), Path, test_java_ambiguous_implements_disambiguated_by_import(), test_java_ambiguous_reference_disambiguated_by_import(), test_java_builtin_library_types_not_emitted_as_references(), test_java_cross_file_constructor_call_resolves(), test_java_cross_file_implements_resolves_to_real_def() (+11 more) ### Community 210 - "test_lua_import.py" Cohesion: 0.17 Nodes (19): _import_edges(), Path, `require 'mod'` (no parens) is valid Lua and must be treated the same as the…, A plain (non-`require`) Lua call must still be walked into: a `local function`…, `foo.require("mod")` / `bar:require("mod")` call something named `require` on a…, `require "mod"` (no parens, double quotes) is valid Lua and must be treated the…, A bare `require("mod")` statement (no assignment) is the common Neovim-config…, Positive control: `local x = require("mod")` must keep working exactly as it… (+11 more) ### Community 211 - "_run" Cohesion: 0.10 Nodes (20): CompletedProcess, argparse `choices` rejects an unknown outcome before save_query_result runs., --answer-file lets callers pass a long/multiline answer via a file instead of a…, Neither --answer nor --answer-file -> clean argparse error, not a crash., First run with no graphify-out/memory/ still succeeds and writes a valid doc., With a real graph.json present, reflect auto-detects it and groups lessons…, Through reflect()/CLI with a real graph.json: a cited node that isn't in the…, `reflect --if-stale` skips the rebuild when LESSONS.md is already current, and… (+12 more) ### Community 212 - "client.py" Cohesion: 0.11 Nodes (6): Limits, The main Client and AsyncClient classes. BaseClient holds all shared logic.…, Timeout, Headers, Core data models: URL, Headers, Cookies, Request, Response. These are the…, URL ### Community 213 - "test_dedup_survivor_richness.py" Cohesion: 0.19 Nodes (18): _content_richness(), _pick_winner(), _score(), How much actual content a node carries, for survivor selection (#3372). Counts…, Pick the canonical survivor: no chunk suffix, then richer content, then shorter…, Dedup survivor selection prefers content over ID shape (#3372). `_pick_winner`…, The issue's exact shape: dedicated nested page vs shallow mention., Even the right winner must not lose what only a loser carried. (+10 more) ### Community 214 - "test_inherited_field_receivers.py" Cohesion: 0.16 Nodes (18): _bind_member_field_tables(), Bind the exported per-file field tables (#3151) to class node ids. Entries are…, _graph(), skipif, Fields declared on a superclass type receivers in a subclass (#3151). The…, A bare lowercase receiver with no known type must stay unresolved — only…, The issue's first repro: PBase declares the field, Pair extends it in the same…, The issue's second repro: `Direct.run` resolved, `Sub.run` did not — one call… (+10 more) ### Community 215 - "test_install_version_warning.py" Cohesion: 0.16 Nodes (16): _check_skill_version(), Path, Warn if the installed skill is from an older graphify version.…, Parse a version string into a comparable integer tuple (``0.9.2`` -> ``(0, 9,…, _version_tuple(), #3144: the stale-skill warning must be actionable, and local SKILL.md edits…, _stale(), test_a_current_skill_stays_silent() (+8 more) ### Community 216 - "test_csharp_object_creation.py" Cohesion: 0.26 Nodes (18): _extract(), _find(), C# `new Foo(...)` links the constructing method to Foo. The C# config only…, test_ambiguous_type_name_produces_no_edge(), test_argument_position_links_to_constructed_type(), test_cross_file_publisher_reaches_the_message_class(), test_explicitly_declared_local_links_to_constructed_type(), test_generic_construction_names_the_outer_type() (+10 more) ### Community 217 - "test_imported_export_forwarding.py" Cohesion: 0.25 Nodes (17): graph_for(), symbol_exports(), test_conflicting_named_exports_do_not_choose_last_definition(), test_conflicting_star_exports_do_not_choose_first_definition(), test_existing_local_declaration_remains_owned(), test_explicit_named_export_overrides_star_ambiguity(), test_export_cycle_does_not_invent_definition(), test_imported_but_not_exported_name_stays_unresolved() (+9 more) ### Community 218 - "test_issue_3405_python_resolution.py" Cohesion: 0.15 Nodes (17): Path, Tests for issue #3405: Python nested-function extraction + lexical-scope-aware…, Test 4 — Nested sibling call def outer(): def helper(): pass def worker():…, Test 5 — Nested recursion def outer(): def walk(n): if n: walk(n - 1) walk(10), Test 6 — Async nested function async def outer(): async def fetch(): pass await…, Test 7 — Deep nesting def outer(): def middle(): def inner(): pass inner()…, Test 8 — Local non-callable binding does not become cross-file raw_call def…, Test 3 — Nested function shadows module function def walk(): pass def trace():… (+9 more) ### Community 219 - "test_semantic_cache_out_root.py" Cohesion: 0.15 Nodes (18): _count_cache_files(), Path, Regression tests for #1990 and #1991. #1990 — `graphify extract --out` saves…, When root=corpus and cache_root=out, source_file resolution must use corpus as…, Passing root=out_root (the old broken behaviour) silently writes 0 entries; the…, When cache_root is omitted, cache files still land under root (unchanged)., Count .json files under a cache dir (recursively, excluding .tmp)., When cache_root differs from root, cache files must land under cache_root. (+10 more) ### Community 220 - "test_ts_inheritance.py" Cohesion: 0.22 Nodes (18): _has_inherits(), Path, Regression tests for issue #1095: TypeScript inheritance capture. Two gaps on…, Regression guard: the originally-working imported-class case must stay., `class Dog extends Animal {}` in a plain .js file must emit an inherits edge.…, The JavaScript grammar path must retain import-guided resolution., A runtime base expression has no statically resolvable parent symbol., test_class_extends_same_file() (+10 more) ### Community 221 - "sample.php" Cohesion: 0.15 Nodes (9): App\Auth\Authenticator, App\Cache\CacheManager, HasName, ApiClient, BaseProcessor, DataProcessor, Loggable, Result (+1 more) ### Community 222 - "scope_semantic_result" Cohesion: 0.13 Nodes (15): Shared path-identity machinery for the semantic-scope guards (#1757/#2926).…, Scope an extraction result in place to the files actually dispatched (#2926).…, scope_semantic_result(), _item_identity(), _semantic_source_matcher(), normalize_value(), source_identity(), Stray items attributed to a non-dispatched file are removed; allowed and… (+7 more) ### Community 223 - "extract_pascal" Cohesion: 0.18 Nodes (18): extract_pascal(), add_edge(), add_node(), _emit_or_report(), _proc_name(), _read(), walk(), walk_calls() (+10 more) ### Community 224 - "extract_powershell_manifest" Cohesion: 0.11 Nodes (17): extract_powershell_manifest(), Path, Extract module dependency edges from a PowerShell .psd1 manifest file. .psd1…, RootModule = 'MyModule.psm1' produces an imports_from edge to 'mymodule'., NestedModules = @('Helpers.psm1', 'Logger.psm1') produces edges for both., RequiredModules string form 'PSReadLine' produces an imports_from edge., RequiredModules hashtable form @{{ ModuleName='Pester' }} produces an…, ModuleVersion values ('5.0', '1.0.0') must NOT appear as import targets. (+9 more) ### Community 225 - "_git" Cohesion: 0.11 Nodes (16): _git(), Path, Gitignore rules do not apply to tracked files, matching Git itself (#2759)., A graph-specific exclusion remains authoritative for tracked paths., Tracked paths are repo-relative even when the requested scan root is nested., Watch reconciliation must agree with detect() for tracked paths (#2759)., CLI/persisted excludes are graph-level intent, not Git ignore rules., A missing/broken Git command must not fail open or abort discovery. (+8 more) ### Community 226 - "test_indirect_call_external_import_shadow.py" Cohesion: 0.22 Nodes (17): _extract_js_dir(), An import from outside the corpus must shadow indirect_call resolution.…, A `paths` entry pointing a package at its own installed copy resolves to a real…, The counter-test that bounds the fix: an import of a file INSIDE the corpus is…, Widening the shadow set must not blanket-suppress a file that also happens to…, The precise collision the fix must survive: a name that is BOTH imported…, Reported shape: an icon imported from a UI kit must not become a fabricated…, `import { Search as Find }` binds `Find` in this file, not `Search`. The shadow… (+9 more) ### Community 227 - "_md_extract" Cohesion: 0.11 Nodes (18): _md_extract(), Write *src* to a temp .md file and extract it., Headings must be filterable. file_type is 'document' for both, so a consumer…, A plain document must not grow an empty frontmatter dict., `#` inside frontmatter is a YAML comment, not an H1., A `---` that is not on line 1 is a horizontal rule., An opening `---` with no closing fence must not swallow the document., Nested blocks (a coherence_check: record) must not be flattened away. (+10 more) ### Community 228 - "test_ts_decorators.py" Cohesion: 0.29 Nodes (17): _class_nid(), _has_deco(), _method_nid(), Path, Regression tests: TypeScript/JavaScript decorator references. `@Component`,…, An external decorator (definition absent from the corpus — the common framework…, True if owner_nid references the (cross-file, bare-stub) decorator symbol., test_class_decorator_on_exported_class() (+9 more) ### Community 229 - "test_watch_manifest_location.py" Cohesion: 0.12 Nodes (16): _corpus(), parametrize, Path, #2316: `graphify update <target>` must write manifest.json into the TARGET's…, The severe half of #2316: it is data loss, not just a misplaced file.…, #777/#1964 portability, broken here by the CWD-derived ``root=``.…, Same CWD-anchoring class as #2316, but it writes wrong data, not a wrong path.…, A CWD project and a separate target project, with the CWD set to the former. (+8 more) ### Community 230 - "HTTPTransport" Cohesion: 0.14 Nodes (8): ConnectError, Failed to establish a connection., BaseTransport, HTTPTransport, MockTransport, A transport for testing that returns predefined responses. Pass a handler…, Sync transport interface., The main sync HTTP transport. Uses a ConnectionPool for connection reuse. ### Community 231 - "Window" Cohesion: 0.13 Nodes (16): MoneyConverter, TaxConverter, Invoice.Tax, Order.Total, User.Name, ModeText, RootPanel, SaveButton (+8 more) ### Community 232 - "TDataProcessor" Cohesion: 0.14 Nodes (9): classes, sysutils, IProcessor, TObject, SampleUnit, TBaseProcessor, TDataProcessor, Process() (+1 more) ### Community 233 - "sample.go" Cohesion: 0.18 Nodes (11): BaseProcessor, DataProcessor, Logger, Reader, ReaderLogger, Result, Server, go_pkg_fmt (+3 more) ### Community 234 - "test_file_label_disambiguation.py" Cohesion: 0.16 Nodes (16): _disambiguate_file_node_labels(), _file_label_reassignments(), Shortest trailing path suffix (basename + k parent dirs) of *sf* that is unique…, Given (key, label, source_file) triples, return {key: new_label} for file nodes…, Relabel colliding-basename file nodes on a graph (#2032). Ids/edges are never…, _shortest_unique_suffix(), _file_node(), File-node labels are disambiguated when basenames collide (#2032). In… (+8 more) ### Community 235 - "test_community_hub_labels.py" Cohesion: 0.21 Nodes (16): community_member_sigs(), label_communities_by_hub(), Deterministic, LLM-free community labels: name each community after its…, Per-community membership fingerprints: ``{cid: sha256(sorted member ids)}``.…, _g(), Deterministic, LLM-free community labels — `label_communities_by_hub`. Names…, test_absent_members_fall_back_to_placeholder(), test_community_member_sigs_are_deterministic_and_order_independent() (+8 more) ### Community 236 - "test_non_regular_files.py" Cohesion: 0.18 Nodes (16): _is_regular_file(), True only for regular files (symlinks followed). Named pipes, sockets and…, socket, A repository may contain files that are not regular files. ``clone <github-…, The shape that hangs the whole run., A link to a FIFO blocks exactly like the FIFO, so stat must follow it., test_broken_symlink_is_rejected_without_raising(), test_char_device_is_rejected() (+8 more) ### Community 237 - "_resolve_js_import_target" Cohesion: 0.18 Nodes (15): _js_import_binds_external(), True when a JS/TS import specifier names a module outside the scanned corpus.…, Resolve a JS/TS import path string to (target_nid, resolved_path). Handles…, _resolve_js_import_target(), Path, #1638 — an unresolved bare npm import must not alias onto an unrelated same-…, The reporter's exact repro for #3595: a package subpath import ("next/image")…, test_multiple_tsx_files_do_not_all_alias_onto_one_python_file() (+7 more) ### Community 238 - "_build_server" Cohesion: 0.20 Nodes (17): _build_server(), call_tool(), list_resources(), list_tools(), _load_community_labels(), _load_ctx(), _on_call_tool(), _on_list_resources() (+9 more) ### Community 239 - "test_wiki_link_filename_parity.py" Cohesion: 0.21 Nodes (16): Make a label safe for use as a filename across platforms AND as a markdown link…, _safe_filename(), test_wiki_safe_filename_honours_an_explicit_limit(), _assert_every_link_resolves(), parametrize, Regression tests for issue #2597: a wiki link's target must BE the on-disk…, _targets(), test_distinct_labels_collapsing_to_one_slug_stay_distinct() (+8 more) ### Community 240 - "test_cross_extension_reexport_self_cycle.py" Cohesion: 0.27 Nodes (16): _node_id_by_label(), Path, Same-basename cross-extension re-exports must not collapse to a self-cycle…, With three same-basename siblings that all collapse to the base id ``foo``…, The hint is emitted only on JS/TS-family edges, and those suffixes bypass the…, _reexport_like_edges(), test_build_drops_persisted_target_file_from_a_pre_fix_graph(), test_cross_ext_reexport_emits_no_self_loop() (+8 more) ### Community 241 - "test_go_interface_methods.py" Cohesion: 0.24 Nodes (16): _extract(), _methods_of(), parametrize, Path, Regression coverage for method requirements declared in a Go interface. The…, Labels of nodes reached by a ``method`` edge from the named type., Each method requirement becomes a method node under the interface., A bare embedded interface stays an ``embeds`` edge, not a method. (+8 more) ### Community 242 - "test_hollow_chunks_arm_shrink_guard.py" Cohesion: 0.23 Nodes (13): _arm(), _corpus(), Hollow, unparseable and omitting chunks must count as incomplete (#3105). The…, The ordinary complete run is unchanged: a full build legitimately shrinks…, Refusal must leave the omitted files un-stamped so the next run retries them —…, After every retry a hollow chunk is returned (not raised) with its files marked…, _record_force(), _run() (+5 more) ### Community 243 - "test_java_member_calls.py" Cohesion: 0.36 Nodes (16): _calls(), _find(), Path, Java receiver-typed member-call resolution. Java ``method_invocation`` nodes…, #3151: a field declared on the superclass now types `this.<field>` in the…, test_ambiguous_receiver_type_emits_no_edge(), test_explicit_type_receiver_resolves_to_owned_method(), test_field_receiver_resolves_to_declared_type() (+8 more) ### Community 244 - "test_package_json_subpath_imports.py" Cohesion: 0.25 Nodes (16): Canonical root-relative file-node id of a cross-file import target (#2169)., _adonis_tree(), _cid(), Path, Regression tests: Node subpath imports via package.json `imports`. `import…, An AdonisJS-shaped project: `imports` in package.json, `.js` targets, `.ts`…, _targets(), test_condition_object_target() (+8 more) ### Community 245 - "test_merge_graphs_cli.py" Cohesion: 0.24 Nodes (16): Path, `graphify merge-graphs` tolerates inputs that disagree on graph type (#1606).…, For a FIXED input order, the offset assignment must be deterministic: merging…, _run(), test_distinct_repo_tags_unit(), test_merge_graphs_carries_hyperedges_from_all_inputs(), test_merge_graphs_community_offset_is_byte_reproducible(), test_merge_graphs_hyperedges_dedup_on_shared_prefixed_id() (+8 more) ### Community 246 - "test_no_dedup_flag.py" Cohesion: 0.22 Nodes (14): _assert_spied(), _capture_dedup(), _corpus(), `graphify extract --no-dedup` (#2881). The incremental merge path hardcoded…, Run the CLI and return its exit code (0 when main() simply returns)., Record the `dedup` kwarg both build entry points are called with. Patching…, Fail loudly if the spy never fired, so no assertion is vacuous., _run() (+6 more) ### Community 247 - "test_typescript_enum_members.py" Cohesion: 0.32 Nodes (16): _extract(), _find(), _labels(), TypeScript enum members get a node and a `case_of` edge, like Java's (#1719).…, test_a_bare_member_becomes_a_node(), test_a_class_property_identifier_is_not_read_as_an_enum_member(), test_a_const_enum_emits_members(), test_a_quoted_member_uses_its_name_not_the_literal() (+8 more) ### Community 248 - "UserControl" Cohesion: 0.17 Nodes (12): Email, RefreshCommand, ObservableObject, RelayCommand, Task, ToolkitViewModel, Email, RefreshCommand (+4 more) ### Community 249 - "find_import_cycles" Cohesion: 0.18 Nodes (15): find_import_cycles(), Detect circular import dependencies at the file level. Collapses symbol-level…, _make_cycle_graph_directed(), _make_file_node(), DiGraph, Create a graph node resembling real graphify schema., test_find_import_cycles_detects_2_and_3_cycles(), test_find_import_cycles_empty_graph() (+7 more) ### Community 250 - "extract_r" Cohesion: 0.38 Nodes (16): extract_r(), add_class(), add_class_members(), add_edge(), add_node(), argument_value(), binding(), call_parts() (+8 more) ### Community 251 - "fetch_worktrees" Cohesion: 0.16 Nodes (7): fetch_worktrees(), Returns {branch: worktree_path}., A detached HEAD (no branch line) must not associate its path with the next…, prs.py reads gh/git/claude output via subprocess.run(text=True). Without an…, Guard: the fixture's UTF-8 bytes must be undecodable as cp1252, else these…, TestFetchWorktrees, TestSubprocessOutputEncoding ### Community 252 - "DataProcessor" Cohesion: 0.20 Nodes (11): List, system, system_collections_generic, system_net_http, HttpClient, DataProcessor, Owner, Workers (+3 more) ### Community 253 - "_emitted_hook_run" Cohesion: 0.23 Nodes (16): _SH_ONLY, _emitted_hook_run(), _git(), Path, A 'python' that passes the find_spec probe and swallows the launcher., Two commits: a source file, then ONLY <out_dir>/graph.json — the tracked-output…, Control: with neither the default nor the configured dir present there is no…, Control: the default-name case the filter always handled keeps working. (+8 more) ### Community 254 - "test_objc_property_ivar_receivers.py" Cohesion: 0.33 Nodes (15): {(source_label, relation, target_label, confidence)} for the given relations., _call_edges(), _label(), Path, ObjC property/ivar receivers must type through the class's field table (#1556).…, The no-fabrication decoy: `[Foo.shared doIt]` next to a REAL class FooShared. A…, test_objc_ambiguous_field_type_emits_no_edge(), test_objc_dotted_class_receiver_fabricates_nothing() (+7 more) ### Community 255 - "test_hook_chain_survives_skip.py" Cohesion: 0.29 Nodes (15): _install_with_trailer(), CompletedProcess, Path, A graphify skip must not end the whole hook (#2986). The generated block is…, Markers stay outside the subshell so reinstall/uninstall/status keep finding…, A repo with no commits: `git diff HEAD~1 HEAD` and the fallback both yield…, _repo(), _run() (+7 more) ### Community 256 - "test_indirect_call_nested_closure_shadow.py" Cohesion: 0.22 Nodes (15): _extract_js_dir(), Indirect-call argument shadowing across untracked JS/TS closures (#2241). An…, A const-assigned arrow IS separately tracked (its own caller_nid, own…, Blast-radius traversal must not include a caller that only reached the target…, The fix must hold on a warm-cache re-extraction, not just a cold run — the…, Reported shape (#2241): a one-letter test helper `r` must not become a…, The same nested-arrow shape must still capture a REAL by-name reference that is…, Shadowing must compound through two levels of untracked inline closures: an… (+7 more) ### Community 257 - "test_inferred_confidence_rubric.py" Cohesion: 0.17 Nodes (13): _extract(), _inferred(), parametrize, Every INFERRED edge the AST extractor emits must carry a rubric score.…, The other half of the rubric must not drift while fixing this one., The fix is scoped to INFERRED; the other two tiers keep their values., 0.8 was the value in the tree and is not on the scale. Catch it and the…, A function passed by name as an argument — the indirect_call path. (+5 more) ### Community 258 - "test_objc_category_interfaces.py" Cohesion: 0.26 Nodes (15): _calls(), _label(), _nodes_labelled(), Path, ObjC category / class-extension interfaces must fold into the base class…, Two unrelated `Thing` classes in different directories must not merge. The id…, {(source_label, target_label, confidence)} over `calls` edges., The headline case: `-useIt` declared in a category still resolves. Before,… (+7 more) ### Community 259 - "test_type_only_import_cycles.py" Cohesion: 0.23 Nodes (15): _cycles(), _extract(), _module_edges(), Type-only imports must not manufacture Import Cycles (#3123). `import type` /…, One runtime leg + one type-only leg: no runtime cycle exists., `import type from './x.js'` imports a value whose name is `type` — erased by…, `import { type B, C }` still imports C at runtime., test_a_cycle_with_one_type_only_leg_is_not_a_cycle() (+7 more) ### Community 260 - "AccountService" Cohesion: 0.15 Nodes (7): delete, insert, update, AccountService, AccountStatus, Account, Notifiable ### Community 261 - "bench_extract.py" Cohesion: 0.19 Nodes (14): clear_cache(), Delete all cache entries (ast/, semantic/, semantic-deep/, and legacy flat…, _count_by_ext(), _format_languages(), main(), Path, Run extraction, return (elapsed_seconds, node_count, edge_count)., Benchmark: sequential vs parallel AST extraction. Usage: python… (+6 more) ### Community 262 - "select_diagram_nodes" Cohesion: 0.16 Nodes (15): edge_score(), node_degree_scores(), node_importance(), node_kind(), Counter, Convert graph numeric fields that may be serialized as strings., Classify a graph node for Mermaid styling and table tags., Rank edges by confidence and usefulness for diagrams. (+7 more) ### Community 263 - "extract_astro" Cohesion: 0.28 Nodes (14): extract_astro(), Extract imports from .astro files: frontmatter (TS) + template regex fallback.…, _import_targets(), Path, Tests for `.astro` extraction (#850). Astro files have a TypeScript frontmatter…, Astro permits frontmatter-less files (pure-HTML pages). Must not raise., Without this, detect.py silently drops `.astro` from the AST pass (#850)., test_astro_is_in_code_extensions() (+6 more) ### Community 264 - "_parse_python_tree" Cohesion: 0.22 Nodes (14): _parse_python_tree(), _parse_python_tree_cached(), Parse one Python file to ``(source, root_node)``, memoized (#perf). The Python…, Two-pass import resolution: turn file-level imports into class-level edges.…, _resolve_cross_file_imports(), resolve_import(), _text(), visit() (+6 more) ### Community 265 - "extract_rust" Cohesion: 0.23 Nodes (15): extract_rust(), add_edge(), add_node(), emit_param_return_refs(), ensure_named_node(), walk(), walk_calls(), _emit_enum_type() (+7 more) ### Community 266 - "_mask_sql_comments" Cohesion: 0.14 Nodes (11): _mask_sql_comments(), Masked text only — see _scan_sql for the span-reporting form., _scan_sql(), _frozen_mask_2026_08_24(), Differential fuzz: the live mask must never EXPOSE a character the frozen…, Unit pin for _mask_sql_comments: comment openers inside literals are data, not…, Deterministic fuzz over the mask's structural invariants. Both rounds of…, Blank comment and string-literal spans, preserving every offset. One output… (+3 more) ### Community 267 - "test_a_java_build_parks_the_call_and_the_merge_finishes_it" Cohesion: 0.24 Nodes (15): needs_java, _build(), _cross_repo_calls(), _merge(), _parked(), parametrize, Path, Extract one repo the way a real build does and write its `graph.json`. (+7 more) ### Community 268 - "sample.json" Cohesion: 0.13 Nodes (14): axios, react, typescript, dependencies, axios, react, devDependencies, typescript (+6 more) ### Community 269 - "test_cross_repo_shared_types.py" Cohesion: 0.28 Nodes (14): _merge(), Path, `merge-graphs` links a type declaration two repos share (#3007). Node ids are…, The join key is namespace+name, deliberately NOT structural. Two repos whose…, _run(), test_a_type_with_no_namespace_is_not_linked(), test_non_type_nodes_are_not_linked(), test_same_name_in_different_namespaces_is_not_linked() (+6 more) ### Community 270 - "test_csharp_call_site_generic_args.py" Cohesion: 0.20 Nodes (14): _all_refs(), C# generic type arguments at CALL SITES. Properties, returns, and parameters…, A plain call site (no explicit type args) must not regress., End-to-end: the exact two-file repro from #2911 produces all six edges., Extract, returning [(source_label, target_label, context)] for every…, The Microsoft.Extensions.DependencyInjection shape that the issue calls out., _refs(), test_call_site_generic_args_appear_in_issue_repro() (+6 more) ### Community 271 - "test_csharp_enum_members.py" Cohesion: 0.32 Nodes (14): _extract(), _find(), _labels(), C# enum members get a node and a `case_of` edge, like Java's (#1719).…, test_a_member_is_not_a_method(), test_a_namespaced_enum_still_emits_members(), test_a_property_and_an_enum_member_sharing_a_name_stay_separate(), test_an_empty_enum_emits_no_members() (+6 more) ### Community 272 - "test_extract_cache_location.py" Cohesion: 0.21 Nodes (13): _make_corpus(), Path, #1774 — extract() must never write its AST cache into the analyzed source tree.…, The location/anchor split must keep content-hash keys anchored on the corpus…, The stat-index location is chosen once per process via a module global (#1747).…, Fresh-process regression for the stat-index leak specifically: even for a…, A second extract() of the same corpus must hit the CWD cache the first wrote —…, _reset_stat_index() (+5 more) ### Community 273 - "test_file_node_id_spec.py" Cohesion: 0.13 Nodes (13): Regression tests for issue #1033: AST file-level node IDs must match the…, Changing the file-id format must not orphan import edges: the import target…, match/script/pipeline_step.py -> file node id 'match_script_pipeline_step'…, A file directly at the project root collapses to just its stem., A SYMBOL in a root-level file must use the bare-stem prefix…, Regression guard: nested files (immediate parent identical in abs/rel form)…, Symbol ids already use {parent}_{stem}_{name}; the file node must share that…, test_cross_file_import_edges_stay_connected() (+5 more) ### Community 274 - "test_global_add_tag_inference.py" Cohesion: 0.28 Nodes (14): _manifest(), _nodes(), `graphify global add` repo-tag inference, and addressing the tag it produces.…, Point the global store at a scratch dir and yield its manifest reader., The tag the CLI inherits for a graph at the filesystem root., _run(), store(), test_a_nameless_repo_dir_degrades_to_repo() (+6 more) ### Community 275 - "_vault_extract" Cohesion: 0.19 Nodes (15): Serial extract() anchored at *vault*, returning (node_ids, ref_edges, page-id…, A subfolder note's [[wikilink]] to a root-level doc resolves vault-wide when…, [[folder/name]] from a subfolder matches on the full segment suffix., On a bare-name collision the shallowest match wins — Obsidian resolves a bare…, An existing sibling target keeps lexical resolution — the fallback only fires…, Inline [text](missing.md) links get no vault fallback: a missing relative…, A wikilink typed in NFD finds a file named in NFC (and spaces survive):…, test_markdown_inline_link_keeps_relative_semantics() (+7 more) ### Community 276 - "test_out_dir_evidence.py" Cohesion: 0.19 Nodes (14): A bare ``out`` directory is pruned only on build-output evidence (#3347).…, The gate is scoped to `out`: build/, dist/, target/ prune by name., adapter/out/ and port/out/ holding only source stay in the corpus., out/production/... (IntelliJ compile output) stays out of the corpus., A `next export` static-site out/ (marked by _next/) stays out., A TS outDir shape — compiled .js.map one level inside out/ — is pruned., A wide outDir whose compiled files sit only under a late-sorted subdirectory is…, _scanned() (+6 more) ### Community 277 - "test_php_type_resolution.py" Cohesion: 0.37 Nodes (14): _class_defs(), _node_by_id(), Path, #3421: an `imports` edge for an aliased `use` clause always targeted the bare…, The reason an alias exists at all: disambiguating two DIFFERENT classes that…, test_php_aliased_import_edge_shares_target_with_plain_import(), test_php_ambiguous_base_disambiguated_by_use(), test_php_distinct_aliases_for_same_named_classes_do_not_collapse() (+6 more) ### Community 278 - "pick_text" Cohesion: 0.14 Nodes (14): _describe_node(), html_anchor_id(), normalize_communities(), normalize_sections(), pick_text(), Heuristic tag suggestion based on label name and file type., Generate a compact human-readable description for a graph node., Extract a compact highlights card from GRAPH_REPORT.md. (+6 more) ### Community 279 - "_run_hook_guard" Cohesion: 0.18 Nodes (14): _hook_strict_enabled(), _mark_session_denied(), _query_stamp_fresh(), Resolve strict mode: GRAPHIFY_HOOK_STRICT env overrides the baked-in flag…, True if a query/explain/path ran within GRAPHIFY_HOOK_STRICT_TTL (default…, Atomically claim a one-time strict block for this session. Returns True only on…, Shell-agnostic PreToolUse guard (#522). Reads the tool-call JSON from stdin…, Guard the strict deny: only block a read of a file the graph actually indexes.… (+6 more) ### Community 280 - "cross_repo_calls.py" Cohesion: 0.16 Nodes (13): _drop_previous_output(), _index_declarations(), _index_members(), _key(), _member_relations(), _parked_entries(), Finish member calls that cross a repository boundary in a merged graph (#3152).…, Index each declaration's members by relation, then by name. The merged graph is… (+5 more) ### Community 281 - "test_obsidian_unicode_tags.py" Cohesion: 0.22 Nodes (13): _obsidian_tag(), r"""Sanitize a community name for use as an Obsidian tag. Obsidian tags accept…, _graph(), Regression tests for issue #2862: community tags must survive non-ASCII labels,…, One node per community, so each community label reaches exactly one note., Before the fix every non-Latin label collapsed to '_'/'__', so all notes shared…, `.obsidian/graph.json` colour groups were built from the raw label, so on a…, _tags() (+5 more) ### Community 282 - "test_src_layout_import_resolution.py" Cohesion: 0.20 Nodes (13): _resolve_python_module_path(), _import_edges(), Path, #2072: Python import resolution must not depend on the scan root. A src-layout…, A dotted-module id claimed by two different files (two src roots with the same…, #2072 review: the alias map is Python-only, but a non-Python import edge whose…, (relation, source, target) for import edges, present-endpoints only., Headline (#2072): the same project yields the same import edges whether scanned… (+5 more) ### Community 283 - "test_backend_extras.py" Cohesion: 0.21 Nodes (13): _backend_pkg_hint(), Package-missing message that works for the recommended `uv tool` install. `uv…, _extras(), The claude backend must be installable via an extra, and the missing-package…, README documents `[all]` as "Everything above": every dependency of every other…, test_all_extra_is_the_union_of_every_other_extra(), test_anthropic_extra_exists(), test_anthropic_in_all_extra() (+5 more) ### Community 284 - "wiki.py" Cohesion: 0.26 Nodes (12): _community_article(), _cross_community_links(), _god_node_article(), _index_md(), _md_link(), Render a link to another wiki article as a portable relative markdown link.…, Return (community_label, edge_count) pairs for cross-community connections,…, A god-node article says when a relation group was cut (#3127).… (+4 more) ### Community 285 - "main" Cohesion: 0.15 Nodes (13): Namespace, On a shallow checkout (no origin/v8) the validators skip with exit 0. CI sets…, test_git_show_validators_skip_cleanly_without_origin_v8(), bless(), _expected_path(), main(), _parse_args(), Path (+5 more) ### Community 286 - "test_csharp_field_generic_args.py" Cohesion: 0.23 Nodes (13): C# generic type arguments in FIELD position. The field_declaration handler read…, The non-generic path must be unchanged., A field and a property of the same type must produce the same references., `T item` must not create a node for the type parameter itself., _refs(), test_bare_type_parameter_is_not_fabricated(), test_field_generic_argument_produces_edge(), test_field_matches_property_behaviour() (+5 more) ### Community 287 - "test_csharp_generic_callsites.py" Cohesion: 0.24 Nodes (13): _calls(), _has(), Unqualified generic C# calls keep their calls edge (#3406). `Get<int>("port")`…, The issue's case 1: `Get<int>("port")` with the target on the base class., Case 2: `this.Get<int>("port")` — the member arm's generic_name name., Case 5: `Make<int>()` with the target on the same class., The old failure shape: no target derived from `Get<int>` raw text., Cases 3 and 4 resolved before the fix and must keep resolving. (+5 more) ### Community 288 - "test_csharp_member_nodes.py" Cohesion: 0.35 Nodes (13): _extract(), _find(), _labels(), C# properties get a node, like C++ data members (#3006). `_CSHARP_CONFIG`…, test_a_backing_field_does_not_take_the_property_node(), test_a_field_alone_makes_no_member_node_but_keeps_its_type_reference(), test_a_generic_parameter_typed_property_still_gets_a_node(), test_a_primitive_property_still_gets_a_node() (+5 more) ### Community 289 - "as_posix_list" Cohesion: 0.14 Nodes (13): as_posix_list(), A regular `*` matches one component; recursive matching requires `**`., A single `!` re-include must not switch off pruning of *unrelated* ignored…, A dir matching an ignore pattern is pruned from os.walk in one evaluation. The…, Normalize detect() output to forward slashes before matching on it. detect()…, A closer (nested) .gitignore's `!` re-include wins over a root exclude,…, Precedence across all three sources: a nested `.gitignore` `!` re-include…, test_gitignore_nested_negation_overrides_broader_root_rule() (+5 more) ### Community 290 - "_clear_backend_keys" Cohesion: 0.22 Nodes (14): _clear_backend_keys(), _failing_sql(), _manifest_row(), _ok_sql(), Run 1 fails on schema.sql (missing extra) -> no live manifest hash; run 2 with…, A file that keeps failing is retried on every run (exactly 1 file), the runs…, Healthy corpus: second run re-extracts nothing and hashes stay live., A manifest poisoned BEFORE the #2543 fix (live hash stamped, file absent from… (+6 more) ### Community 291 - "_run_extract" Cohesion: 0.16 Nodes (13): #1939: cache-check --prompt-file only counts entries produced by that same…, extract_corpus_parallel stand-in that records each dispatch., #1894 repro: over a warm manifest + warm standard semantic cache, `extract…, extract accepts --force: a warm tree re-dispatches every semantic file (cache…, GRAPHIFY_FORCE=1 behaves like --force (env parity with `update`)., cache-check --mode deep consults cache/semantic-deep/; without the flag it…, _recording_extractor(), _run_extract() (+5 more) ### Community 292 - "test_indirect_call_arrow_single_param_shadow.py" Cohesion: 0.25 Nodes (13): _extract_js_dir(), _indirect(), A single unparenthesised arrow parameter must shadow indirect_call args.…, The reported shape: a minified bundle's private `k` must not become a…, Control: the `parameters` path was already correct and must stay correct., `async x => …` is the same node with the same singular field., The parameter is scoped to its arrow: a same-named module callable referenced…, Widening the shadow set must not blanket-suppress inside arrows: an unshadowed… (+5 more) ### Community 293 - "test_indirect_call_catch_binding_shadow.py" Cohesion: 0.25 Nodes (13): _extract_js_dir(), `catch (e)` bindings must shadow indirect_call args — inside the clause only.…, ES2019 `catch { }` is a real catch_clause with no `parameter` field — the…, Reported shape: a minified bundle's private `k` must not become a fabricated…, `catch ({ cause })` binds through the same field via a pattern — the…, The binding is scoped to the clause: a same-named module callable referenced…, Widening the shadow set must not blanket-suppress indirect_call inside a catch…, _rels() (+5 more) ### Community 294 - "test_node_id_canonical.py" Cohesion: 0.27 Nodes (13): _assert_no_slug(), Path, Node-id / edge-endpoint canonicalization: no absolute-path (machine/temp slug)…, #2262: a .tsx component with a JSX-returning nested arrow component defined…, General invariant: extracting a mixed corpus (python module-level dispatch +…, #2231: a module-TOP-LEVEL dispatch table (`HANDLERS = {'a': handle_a}`) records…, #2243 (bash): `source ./b.sh` mints the target from the resolved absolute path.…, _real() (+5 more) ### Community 295 - "test_ts_namespace.py" Cohesion: 0.29 Nodes (13): _has_node(), _node_label(), Path, Regression tests: TypeScript namespace/module container nodes. `namespace Foo…, The container node must not cost us the members the default recurse reached., The handler is TS-only; plain JS has no namespace syntax to confuse it., test_ambient_string_module_quotes_stripped(), test_module_keyword_is_node() (+5 more) ### Community 296 - "test_ts_receiver_member_calls.py" Cohesion: 0.25 Nodes (13): _calls(), _cross_file_edges(), TS/JS receiver-typed member calls beyond `this.field` (#1630). The #1316…, Edges (any relation) whose source node lives in src_file and target in tgt_file., test_array_typed_receiver_emits_no_edge(), test_closure_over_typed_param_receiver(), test_genuinely_imported_type_still_resolves_inferred(), test_local_new_binding_receiver() (+5 more) ### Community 297 - "_plant_skill_tree" Cohesion: 0.18 Nodes (14): _plant_skill_tree(), parametrize, Path, `graphify uninstall --project` (codebuddy branch) must not delete ~/.codebuddy…, Create <root>/<dot_dir>/skills/graphify/{SKILL.md, references/x.md,…, fn(project_dir) removes only the project skill tree (#2215 trap closed)., fn() with no args keeps the historical CLI behavior: global skill removed., fn(pd, remove_user_skill=True) removes the global skill, leaves the project… (+6 more) ### Community 298 - "Geometry" Cohesion: 0.21 Nodes (11): Base, Base.Threads, Float64, LinearAlgebra, ParentModule, area(), describe(), Circle (+3 more) ### Community 299 - "Demo.ViewModels" Cohesion: 0.15 Nodes (8): communitytoolkit_mvvm_componentmodel, communitytoolkit_mvvm_input, Demo.ViewModels, DesignViewModel, PrismOrderViewModel, DesignView, UserControl, UserControl ### Community 300 - "sample.razor" Cohesion: 0.15 Nodes (12): ComponentBase, CounterRecord, DataGrid, ICounterService, Microsoft.AspNetCore.Components, MyApp.Services, NavigationManager, route:/counter (+4 more) ### Community 301 - "geometry" Cohesion: 0.22 Nodes (11): constants, geometry, double_val(), circle_area(), geometry, main, point, origin() (+3 more) ### Community 302 - "test_external_stub_endpoints.py" Cohesion: 0.21 Nodes (12): mint_external_stubs_in_data(), Mint external stub nodes for import-family links with an undeclared target. The…, _import_extraction(), Path, Every edge endpoint in graph.json must be a declared node (#2873). `graph.json`…, End-to-end: `graphify update --no-cluster` writes the raw merged extraction,…, A sourceless external CALL target is deliberately suppressed (#3156) to avoid a…, test_build_from_json_mints_external_import_stub() (+4 more) ### Community 303 - "sample.sv" Cohesion: 0.21 Nodes (11): math_pkg, leaf, Payload, BaseProcessor, Config, DataProcessor, build, Processor (+3 more) ### Community 304 - "Animal" Cohesion: 0.21 Nodes (12): NSObject, NSString, SampleDelegate, Animal, -initWithName, -speak, <Base>, -baseMethod (+4 more) ### Community 305 - "Window" Cohesion: 0.22 Nodes (9): RoutedEventArgs, SaveButton, UserNameBox, Window, UserName, MainWindow, Button, Window (+1 more) ### Community 306 - "sample.dmf" Cohesion: 0.15 Nodes (12): elem "info" [CHILD], elem "infowindow" [MAIN], elem "map" [MAP], elem "mapwindow" [MAIN], elem "output" [OUTPUT], elem "outputwindow" [MAIN], elem "stat" [INFO], elem "statwindow" [MAIN] (+4 more) ### Community 307 - "ScopedCallsUnit" Cohesion: 0.23 Nodes (12): TObject, ScopedCallsUnit, TBaseWidget, Prepare(), TDerivedWidget, Run(), TFirstWidget, Configure() (+4 more) ### Community 308 - "_make_corpus" Cohesion: 0.15 Nodes (10): _make_corpus(), When every semantic chunk errors (e.g. backend SDK not installed), the CLI must…, Minimal corpus: one Go code file + one Markdown doc. Both file types are needed…, #1897: fresh extraction returns nodes with ROOT-RELATIVE source_file, while the…, #1920 end-to-end: a fresh extraction whose only output for a doc is a hyperedge…, Key requirement still fires when semantic work is needed. A corpus with a…, test_extract_exits_nonzero_when_all_semantic_chunks_fail(), test_extract_without_key_still_errors_when_docs_present() (+2 more) ### Community 309 - "test_extraction_spec_ids.py" Cohesion: 0.23 Nodes (12): _ast_symbol_id(), _examples(), parametrize, Path, Drift guard for the node-ID spec shown to LLM semantic subagents.…, Reproduce the symbol ID the AST extractor emits for a file + symbol, using the…, Guard the guard: if the spec moves or the example format changes so nothing…, The canonical spec warns against the filename-only and full-path ID forms. Lock… (+4 more) ### Community 310 - "test_objc_member_calls.py" Cohesion: 0.28 Nodes (12): _edges(), _label(), Path, ObjC receiver typing must not treat a ``@protocol`` as a message receiver…, {(source_label, target_label, confidence)} for edges of one relation., No class named Reload exists, so `[Reload reload]` is untypable -> ZERO edges.…, A protocol and a class may share a name; the class must still resolve.…, The exclusion is scoped to receiver typing: adoption edges are unaffected. (+4 more) ### Community 311 - "test_query_cli.py" Cohesion: 0.22 Nodes (12): Tests for graphify query CLI context filtering., #F4: query CLI must refuse to parse a graph.json that exceeds the cap., A single directed `calls` edge on an (on-disk) undirected graph.json, the…, `graphify query` must render `calls` edges caller->callee regardless of which…, Same edge, seeded from the caller side — must stay correct too., test_query_cli_explicit_context_filter(), test_query_cli_heuristic_context_filter(), test_query_cli_preserves_calls_direction_when_seeded_on_callee() (+4 more) ### Community 312 - "_claude_artifacts" Cohesion: 0.15 Nodes (13): _claude_artifacts(), The default code-corpus run must be fully described inside the core., No reference fragment may duplicate the core build pipeline., Every references/<name>.md the core points at is actually rendered., claude renders exactly the eight on-demand fragments from the design., Decision A: the file_type enum is the full six-value superset., The core must not inline the execution detail of an on-demand reference. The…, test_eight_references_render_for_claude() (+5 more) ### Community 313 - "test_ast_ownership_does_not_evict_fail_closed_preserved_node" Cohesion: 0.15 Nodes (9): #1795 retained under #2495: evicting an alive file now requires POSITIVE…, #3695 invariant 1: An alive source removed from the detected corpus survives a…, #3695 invariant 1 & 2: AST ownership pass must not evict AST-tier nodes…, #3695 invariant 3: When a shrink occurs on a rebuild that also has fail-closed…, test_ast_ownership_does_not_evict_fail_closed_preserved_node(), test_full_rebuild_preserves_alive_source_removed_from_detected_corpus(), test_shrink_involving_fail_closed_sources_does_not_deadlock_shrink_guard(), test_update_keeps_alive_file_dropped_from_corpus_without_ignore_rule() (+1 more) ### Community 314 - "prompt_fingerprint" Cohesion: 0.17 Nodes (12): prompt_fingerprint(), Return a short stable fingerprint of an extraction prompt. ``prompt`` is either…, The fingerprint is stable for identical prompts and differs when the prompt…, A CRLF checkout of the same spec must not look like a prompt change — otherwise…, Fingerprinted entries live under cache/semantic/p{fp}/, never flat., #2927 healing: a legacy on-disk cache entry containing edges but no nodes or…, #1920 / #2927: an existing on-disk cache entry with hyperedges but no nodes…, test_existing_hyperedge_only_cache_entry_remains_hit() (+4 more) ### Community 315 - "raw/cluster.py" Cohesion: 0.20 Nodes (11): Run Leiden community detection. Returns {community_id: [node_ids]}. Community…, Run a second Leiden pass on a community subgraph to split it further., Ratio of actual intra-community edges to maximum possible., _split_community(), build_graph(), cluster(), cohesion_score(), Leiden community detection on NetworkX graphs. Splits oversized communities.… (+3 more) ### Community 316 - "test_falkordb_integration.py" Cohesion: 0.20 Nodes (9): push_to_falkordb(), Push graph directly to a running FalkorDB instance via the Python SDK.…, _connect(), db(), Integration test for push_to_falkordb against a real FalkorDB instance. Runs…, Return a connected FalkorDB client, or skip if none is reachable. ``ping()``…, MERGE-based push is safe to re-run - counts must not grow., test_push_to_falkordb_creates_expected_graph() (+1 more) ### Community 317 - "test_walk_python_tree_iterative.py" Cohesion: 0.27 Nodes (11): Preorder walk of a tree-sitter tree, iteratively. The recursive ``yield from``…, _walk_python_tree(), _parse(), parametrize, _walk_python_tree yields identical preorder, iteratively (#perf). The recursive…, The pre-optimization recursive walk, verbatim., A pathologically deep tree that would overflow the recursion limit for the old…, _reference_preorder() (+3 more) ### Community 318 - "test_labeling.py" Cohesion: 0.23 Nodes (11): _claude_cli_available(), generate_community_labels(), _placeholder_community_labels(), True if the Claude Code CLI can actually be launched. Mirrors the resolution in…, CLI entry point: resolve a backend, name communities, and degrade to…, Tests for LLM-backed community labeling (issue #1097). Backend calls are mocked…, test_generate_community_labels_degrades_on_error(), test_generate_community_labels_no_backend() (+3 more) ### Community 319 - "test_injection_sentinel_coverage.py" Cohesion: 0.27 Nodes (11): _neutralise_injection_sentinels(), Defang known chat-template / jailbreak control tokens in untrusted text.…, Wrap one file's content in a labelled, hash-stamped untrusted-data block. The…, _wrap_untrusted(), parametrize, Every chat-template control token is defanged, not an enumerated few (#3183).…, test_a_llama3_turn_forgery_cannot_reach_the_model_intact(), test_case_variants_are_covered() (+3 more) ### Community 320 - "barrel_reexport.ts" Cohesion: 0.23 Nodes (5): LOCAL_CONST, readCookie(), writeCookie(), basePathRewrite(), getFullUrl() ### Community 321 - "TestSubprocessEncoding" Cohesion: 0.21 Nodes (7): Writing a file with → ✅ ≥ then passing its content through _call_claude_cli…, _call_llm with backend='claude-cli' must also use encoding='utf-8'., _call_claude_cli must pass encoding="utf-8" to subprocess.run so that non-ASCII…, Build a mock CompletedProcess with a valid JSON envelope., subprocess.run must be invoked with encoding='utf-8'., text=True without encoding= relies on the locale codec (cp1252 on Windows).…, TestSubprocessEncoding ### Community 322 - "_two_node_graph" Cohesion: 0.17 Nodes (12): _four_node_two_community_graph(), #1506: exporting into an existing vault must not overwrite a user's note that…, No regression: a fresh/empty dir still gets every note + .obsidian/graph.json., A re-run overwrites graphify's own prior notes (via the manifest) but leaves a…, #1896: re-exporting into the same vault must delete graphify's own notes for…, #1896 follow-on: a node that disappears and later returns must be writable…, test_to_obsidian_empty_dir_writes_full_vault(), test_to_obsidian_preserves_existing_user_notes_and_obsidian_config() (+4 more) ### Community 323 - "_node_sources" Cohesion: 0.20 Nodes (10): _node_sources(), parametrize, Seed a graph with nodes for x.py, drop x.py from the manifest (pre-#1897…, Post-#1897 state: the excluded file IS manifest-listed. It must be pruned from…, --no-cluster's exclusion-only early exit must still scrub the excluded file's…, test_incremental_extract_prunes_excluded_file_listed_in_manifest(), test_incremental_extract_prunes_newly_excluded_file_not_in_manifest(), test_no_cluster_incremental_prunes_newly_excluded_file() (+2 more) ### Community 324 - "_inferred_uses" Cohesion: 0.17 Nodes (12): _inferred_uses(), (source, target) pairs of every INFERRED cross-file `uses` edge., A cross-file INFERRED `uses` edge binds to the symbol that actually references…, Positive control: a class that genuinely uses the imported symbol still gets…, `from helpers import Helper as H` attributes via the local alias `H`, so a body…, Each symbol that references the import gets its own edge, and only those…, A reference at true module top level has no enclosing symbol to anchor on, so…, test_inferred_uses_edge_attributes_to_the_referencing_symbol() (+4 more) ### Community 325 - "test_indirect_dispatch_getattr.py" Cohesion: 0.38 Nodes (11): _extract(), _ind(), Reflective dispatch via getattr string literals — #1566 slice 3. ``getattr(obj,…, test_dynamic_getattr_names_emit_nothing(), test_getattr_feeds_affected(), test_getattr_non_callable_name_emits_nothing(), test_getattr_string_literal_emits_indirect_call(), test_getattr_string_not_shadowed_by_param() (+3 more) ### Community 326 - "test_install_strings.py" Cohesion: 0.17 Nodes (8): Regression tests for install-time instruction strings. These strings live in…, The fix demotes GRAPH_REPORT.md, it doesn't delete the reference. Most install…, All ten install surfaces must point the assistant at `graphify query` as the…, The pre-fix instructions told assistants to read GRAPH_REPORT.md as their first…, test_every_install_surface_recommends_graphify_query(), test_no_install_surface_demands_reading_the_full_report_first(), test_report_is_still_referenced_as_fallback(), test_skill_registration_uses_host_generic_instruction() ### Community 327 - "test_js_callback_calls.py" Cohesion: 0.35 Nodes (11): _extract(), _indirect(), Calls inside a callback passed to a module-level call must not be dropped…, test_callback_body_call_is_not_double_counted(), test_callback_body_calls_are_captured(), test_callback_member_call_is_origin_gated(), test_multi_closure_direct_calls_still_captured(), test_own_closure_local_still_suppresses_indirect_call() (+3 more) ### Community 328 - "test_js_exported_fn_call_resolution.py" Cohesion: 0.30 Nodes (11): _calls(), _has(), Calls inside an exported function resolve through the import table (#3346).…, The non-exported / plain-name path must be unaffected., The edge lands on the imported definition (`bar`), never a phantom `baz` node…, A plain (non-exported) function body was always scanned; keep it working…, test_aliased_import_call_in_exported_arrow_resolves(), test_aliased_import_call_in_exported_function_resolves() (+3 more) ### Community 329 - "test_js_this_member_expressions.py" Cohesion: 0.24 Nodes (11): _labels(), `this.X = function` members in every enclosing-function form (#3408). #1322's…, `const F = function(){ this.X = fn }` — X is a method owned by F., The framework shape the issue measured at 87% file-node-only., The #1077 guard is untouched: a const inside a callback stays local., The declaration branch still owns its scan — one node, one method edge., test_angular_service_registration_members_survive(), test_callback_locals_do_not_become_nodes() (+3 more) ### Community 330 - "test_scala_self_type.py" Cohesion: 0.38 Nodes (11): _build(), Scala self-type annotations (`self: Logging with Database =>`, `this: T =>`). A…, _rels(), test_affected_includes_self_type_dependents(), test_class_without_self_type_emits_no_requires_edge(), test_requires_edges_carry_no_context(), test_self_type_binder_only_emits_no_requires_edge(), test_self_type_coexists_with_unrelated_extends() (+3 more) ### Community 331 - "test_ts_generators.py" Cohesion: 0.32 Nodes (11): _contains(), _has_node(), Path, Regression tests: TypeScript/JavaScript generator functions as nodes. Before…, A call inside a generator's body should be attributed to the generator, proving…, test_async_generator_declaration_is_node(), test_generator_body_calls_are_attributed(), test_generator_declaration_is_node_js() (+3 more) ### Community 332 - "test_typescript_module_extensions.py" Cohesion: 0.26 Nodes (7): _extract(), _labels(), Path, TypeScript module extensions (`.mts` / `.cts`) are treated as code. `.mts`…, test_cts_uses_the_typescript_grammar(), test_mts_uses_the_typescript_grammar(), test_uppercase_typescript_extensions_use_typescript_grammar() ### Community 333 - "test_wheel_packaging.py" Cohesion: 0.23 Nodes (11): _expected_artifacts(), _has_build(), parametrize, Path, Packaging guard (#1121 follow-up): the 5 skillgen guards check the *repo tree*,…, Every distinct skill body a platform installs (the SKILL.md is copied from one…, Every committed skill body + references/*.md (per host) + always_on/*.md block., _skill_bodies() (+3 more) ### Community 334 - "graph_diff" Cohesion: 0.24 Nodes (9): graph_diff(), Compare two graph snapshots and return what changed. Returns: { "new_nodes":…, _make_simple_graph(), Helper: build a small nx.Graph from node/edge specs., test_graph_diff_empty_diff(), test_graph_diff_new_edges(), test_graph_diff_new_nodes(), test_graph_diff_removed_nodes() (+1 more) ### Community 335 - "_bash_invokes_search" Cohesion: 0.31 Nodes (10): _bash_invokes_search(), Whether a Bash command actually RUNS a search tool (#3121). The old test was a…, parametrize, The Bash search guard fires on executed commands, not on prose (#3121).…, test_a_heredoc_body_mentioning_search_tools_stays_quiet(), test_a_search_after_a_heredoc_still_fires(), test_an_unterminated_heredoc_cannot_fire_from_its_body(), test_prose_and_lookalikes_stay_quiet() (+2 more) ### Community 336 - "_norm" Cohesion: 0.18 Nodes (11): _entropy(), _norm(), Lowercase + collapse non-alphanumeric runs to space (Unicode-aware)., Shannon entropy in bits/char of the normalised label., The prefix-extension guard must not fire for same-length pairs — only strict…, The prefix-extension guard must fire for pairs where one is a strict prefix of…, test_entropy_empty_string(), test_entropy_normal_label_high() (+3 more) ### Community 337 - "_match_anchored_ignore_pattern" Cohesion: 0.20 Nodes (11): _eval(), _matches(), _segments(), _match_anchored_ignore_pattern(), _match_globstar_parts(), _parse_ignore_pattern(), Split one gitignore-style pattern into its matching flags, cached. Returns…, Recursive ``**``-aware segment match, memoized via an explicit dict. Lifted out… (+3 more) ### Community 338 - "attach_graph_impact" Cohesion: 0.25 Nodes (7): attach_graph_impact(), build_community_labels(), _load_graph_json(), Path, Return {community_id: [top_labels]} extracted from graph node data., Fetch PR file lists concurrently, compute graph impact, return community labels., TestBuildCommunityLabels ### Community 339 - "compute_pr_impact" Cohesion: 0.35 Nodes (4): compute_pr_impact(), Return (communities_touched, nodes_affected) for a set of changed files. Builds…, 3 nodes across 2 communities, 2 distinct source files., TestComputePrImpact ### Community 340 - "parse_memory_doc" Cohesion: 0.18 Nodes (11): parse_memory_doc(), Parse the frontmatter of a memory doc into a dict, or None if it has none.…, Reverse the double-quoted escaping that ingest._yaml_str applies., _yaml_unescape(), parse_memory_doc reads back exactly what save_query_result wrote, including an…, A plain markdown file with no frontmatter is skipped, not crashed on., save -> parse preserves tricky characters in the question, the correction, and…, test_parse_handles_crlf() (+3 more) ### Community 341 - "validate_url" Cohesion: 0.18 Nodes (10): _NoFileRedirectHandler, Raise ValueError if *url* is not http or https, or targets a private/internal…, Redirect handler that re-validates every redirect target. Prevents open-…, validate_url(), test_validate_url_accepts_http(), test_validate_url_accepts_https(), test_validate_url_rejects_data(), test_validate_url_rejects_empty_scheme() (+2 more) ### Community 342 - "validate_graph_path" Cohesion: 0.18 Nodes (11): Path, Resolve *path* and verify it stays inside *base*. *base* defaults to the…, validate_graph_path(), With base omitted, the output dir is discovered by walking the path's parents…, The base=None discovery must honour GRAPHIFY_OUT, not the hardcoded 'graphify-…, test_validate_graph_path_allows_inside_base(), test_validate_graph_path_blocks_traversal(), test_validate_graph_path_default_base_discovers_output_dir() (+3 more) ### Community 343 - "parse_python_import_aliases" Cohesion: 0.18 Nodes (11): ImportedSymbol, _module_stem(), parse_python_import_aliases(), Return the final module component used to match Graphify source stems., Parse deterministic Python import aliases from one source file. Supported…, A Python imported name that can be used as deterministic resolution evidence., A `from helper import transform` inside a function MUST NOT become file-wide…, A module-level `from helper import transform` IS file-wide evidence. (+3 more) ### Community 344 - "TMainForm" Cohesion: 0.18 Nodes (5): TButton, TPanel, TMainForm, TMemo, TStatusBar ### Community 345 - "test_cjs_module_extension.py" Cohesion: 0.22 Nodes (5): _extract(), _labels(), Path, CommonJS module extension (`.cjs`) is treated as code. `.cjs` is the explicit-…, test_cjs_extracts_like_js() ### Community 346 - "test_duplicate_annotation_edges.py" Cohesion: 0.24 Nodes (10): _edge_counts(), Exact-duplicate edge emission from repeated annotations (#3251). A signature…, The issue's exact repro: two same-typed params, one references edge., The same disease exists in every language block — C# as the witness., The health warning the issue hit is gone at the source., Only byte-identical edges collapse: the same type referenced at two locations,…, test_csharp_repeated_parameter_annotation_emits_one_edge(), test_diagnose_reports_zero_exact_duplicates() (+2 more) ### Community 347 - "test_extract_allow_partial_continues_past_ast_failure" Cohesion: 0.18 Nodes (8): Sanity counter-test: a successful chunk run keeps exit 0. Confirms the new…, #2445: an AST-pass failure on a fresh build must not be presented as a…, #2445 complement: --allow-partial opts back into the best-effort path — the run…, test_extract_allow_partial_continues_past_ast_failure(), _one_chunk_succeeded(), test_extract_exits_nonzero_when_ast_extraction_raises(), _ast_failed(), test_extract_succeeds_when_at_least_one_chunk_completes() ### Community 348 - "test_hooks_dir_duplicate_config_keys_honor_custom_hookspath" Cohesion: 0.18 Nodes (11): _append_duplicate_config_entries(), Append git-legal duplicate keys/sections (as VS Code writes them)., git legally allows duplicate keys and repeated sections in .git/config; a…, With duplicate keys present, a custom core.hooksPath must still be honored (no…, A Windows-style core.hooksPath must raise (loud failure), not silently create a…, A legitimate POSIX core.hooksPath (Husky-style) must still install., _set_hookspath(), test_hooks_dir_duplicate_config_keys_honor_custom_hookspath() (+3 more) ### Community 349 - "test_indirect_dispatch_assign_return.py" Cohesion: 0.42 Nodes (10): _extract(), _ind(), Indirect dispatch via assignment + return references — #1566 slice 2. A…, test_assignment_and_return_emit_indirect_call(), test_assignment_feeds_affected(), test_local_shadow_emits_nothing(), test_module_level_assignment_emits_indirect_call(), test_multiple_assignment_emits_for_each() (+2 more) ### Community 350 - "test_kotlin_object_literal.py" Cohesion: 0.45 Nodes (10): _edges(), _extract(), _find(), Kotlin anonymous-object members (#2347). `object : Foo { ... }` (node type…, Keep-the-bar: named `object` declarations and plain classes extract exactly as…, test_named_object_and_plain_class_unchanged(), test_object_literal_implements_supertype(), test_object_literal_member_calls_sibling_member() (+2 more) ### Community 351 - "_many_communities" Cohesion: 0.24 Nodes (9): _many_communities(), _peak_tracker(), Concurrency must not change the result: same cid->name map either way., ollama/claude-cli must stay serial regardless of --max-concurrency., test_label_communities_batch_size_controls_batch_count(), test_label_communities_forces_serial_for_ollama(), test_label_communities_parallel_matches_sequential(), fake_batch() (+1 more) ### Community 352 - "test_pascal_call_scoping.py" Cohesion: 0.47 Nodes (10): _class_node_id(), _extractors(), _has_call(), _method_node_id(), parametrize, Regression tests for scoped call resolution in the Pascal/Delphi extractor.…, test_calls_do_not_cross_unrelated_classes(), test_calls_resolve_via_ancestor_chain() (+2 more) ### Community 353 - "test_php_object_creation.py" Cohesion: 0.29 Nodes (10): _extract(), PHP `new Foo(...)` links the constructing method to Foo (#3115).…, `$bus->dispatch(new Bar(2))` - construction as control flow., `new $cls()` names nothing; `new self()` / `new static()` name no OTHER class -…, test_cross_file_dispatcher_reaches_the_command_class(), test_dynamic_and_self_construction_produce_no_junk(), test_existing_static_call_edges_are_unchanged(), test_new_in_argument_position_links_the_message_bus_shape() (+2 more) ### Community 354 - "_extract_python_rationale" Cohesion: 0.24 Nodes (10): _add_rationale(), _extract_python_rationale(), _add_rationale(), _get_docstring(), walk_docstrings(), _is_autogenerated_python(), Collapse whitespace and truncate ``text`` to ``width`` chars for a rationale…, Return True if this Python file is auto-generated and its module docstring is… (+2 more) ### Community 355 - "gen_demo_path.py" Cohesion: 0.22 Nodes (8): random, kt(), op0(), Generate docs/demo-path.svg: the animated 'path lights up' README hero-…, pairs of (keyTime, value) -> (values_str, keyTimes_str)., initial opacity for a revealable element (1 when baking a static frame)., opacity reveal at time t (s), hold, fade out before loop., reveal() ### Community 356 - "dynamic_import.ts" Cohesion: 0.27 Nodes (7): ref_logger, loadStatic(), pollMessages(), processInbound(), ./mayaEngine.js, ./queue.js, ./staticHelper ### Community 357 - "sample.scala" Cohesion: 0.33 Nodes (8): scala, BaseClient, HttpClientFactory, Int, String, Config, HttpClient, Loggable ### Community 358 - "cjs_require.js" Cohesion: 0.20 Nodes (8): srv_danisha_graphify_tests_fixtures_foundation, srv_danisha_graphify_tests_fixtures_foundation_loadfoundation, srv_danisha_graphify_tests_fixtures_foundation_validateconfig, srv_danisha_graphify_tests_fixtures_helpers, srv_danisha_graphify_tests_fixtures_helpers_helperfn, srv_danisha_graphify_tests_fixtures_utils, { loadFoundation, validateConfig }, utils ### Community 359 - "_make_cross_lang_graph" Cohesion: 0.20 Nodes (10): _make_cross_lang_graph(), Helper: Python node in backend/, TypeScript node in frontend/, different…, Cross-language INFERRED calls edge should score lower than same-language…, Cross-language INFERRED uses edge (the exact rsl-siege-manager false positive)…, `semantically_similar_to` across languages is a genuine insight — must not be…, EXTRACTED cross-language edges are real structural facts — must not be…, test_cross_language_extracted_calls_not_suppressed(), test_cross_language_inferred_calls_suppressed() (+2 more) ### Community 360 - "test_go_import_repoint.py" Cohesion: 0.53 Nodes (9): _edges(), _extract(), _file_node(), Path, Go intra-module imports must reach the imported package's files (#3746).…, test_intra_module_import_reaches_every_file_of_the_package(), test_repoint_keeps_the_call_edge_and_adds_no_self_import(), test_stdlib_and_external_imports_stay_sinks() (+1 more) ### Community 361 - "test_java_enum_members.py" Cohesion: 0.36 Nodes (9): _extract(), _methods_of(), Path, Regression coverage for members declared in a Java enum body. A Java enum wraps…, ``weight`` calls ``surfaceGravity`` — the body is now a walked scope., The constant list is untouched by the body-scope fix., test_call_between_enum_methods_is_captured(), test_enum_constants_still_emit_case_of_edges() (+1 more) ### Community 362 - "test_pascal_resolution.py" Cohesion: 0.31 Nodes (9): _call_edge(), _find_raw_call(), _labels(), Tests for cross-file Pascal/Delphi inherited-method-call resolution. The per-…, Sanity check for the gap this resolver closes: the per-file extractor alone…, TDerivedGadget inherits only from TBaseGadget. TOtherGadget declares an…, test_calls_resolve_across_files_via_inherits_chain(), test_cross_file_calls_do_not_cross_unrelated_classes() (+1 more) ### Community 363 - "test_phantom_cross_package_call.py" Cohesion: 0.56 Nodes (9): _calls(), Path, #1659 — a JS/TS call with no local definition and no import must not bind to a…, test_imported_cross_file_call_still_resolves(), test_many_files_do_not_collapse_onto_one_export(), test_non_js_single_candidate_cross_file_still_resolves(), test_same_file_call_unaffected(), test_unimported_cross_package_call_emits_no_edge() (+1 more) ### Community 364 - "test_python_import_resolution.py" Cohesion: 0.56 Nodes (9): _has_edge(), _node_id(), Path, test_ordinary_relative_import_still_resolves(), test_overdeep_relative_import_is_unresolved_not_fatal(), test_python_package_reexport_resolves_import_and_call_to_origin_symbol(), test_python_parameter_return_and_generic_contexts(), test_relative_subpackage_import_from_targets_package_init() (+1 more) ### Community 365 - "test_report_gap_thresholds.py" Cohesion: 0.36 Nodes (9): _graph_and_communities(), GRAPH_REPORT's headline numbers must agree with themselves (#3148, #3548). The…, `shown + thin` must sum to the total community count (#3548): the zero-real-…, _report(), test_at_the_default_threshold_only_the_zero_real_community_is_thin(), test_isolated_count_is_auditable_against_the_raw_graph(), test_shown_counts_only_what_the_render_loop_renders(), test_shown_plus_thin_equals_total_communities_and_matches_render_count() (+1 more) ### Community 366 - "render_always_on" Cohesion: 0.24 Nodes (10): render_always_on yields exactly the six always-on instruction files., Each always_on/*.md reproduces its former __main__.py constant byte for byte.…, test_always_on_renders_six_blocks(), test_always_on_roundtrip_is_byte_faithful(), _always_on_constants(), always_on_roundtrip(), Parse the always-on string constants out of a __main__.py blob. Reads the…, Assert each always_on/*.md reproduces its former constant byte for byte. The… (+2 more) ### Community 367 - "test_ts_parse_warning.py" Cohesion: 0.47 Nodes (9): _assert_silent(), _extract(), _labels(), #2610/#2599: the #2551 partial-parse warning must not fire on VALID TS/TSX.…, test_ts_generics_as_and_jsx_logical_and_are_silent(), test_ts_genuinely_broken_file_still_warns(), test_ts_interface_member_named_in_prefix_is_silent(), test_ts_midfile_breakage_warns_and_keeps_intact_functions() (+1 more) ### Community 368 - "saxpy" Cohesion: 0.25 Nodes (8): constant, kernel, metal_stdlib, dot3(), device, saxpy(), Vec3, uint ### Community 369 - "sample.ex" Cohesion: 0.25 Nodes (7): ecto_query, myapp_repo, myapp_schemas_account, myapp_schemas_token, MyApp.Accounts.User, create(), validate() ### Community 370 - "sample.csproj" Cohesion: 0.22 Nodes (6): net8.0, FluentValidation (11.9.0), MediatR (12.2.0), Microsoft.AspNetCore.Authentication.JwtBearer (8.0.0), Swashbuckle.AspNetCore (6.5.0), Microsoft.NET.Sdk.Web ### Community 371 - "walk_manifest" Cohesion: 0.28 Nodes (8): add_import_edge(), walk_manifest(), _collect_string_nodes(), find_modulename_entries(), _psd1_collect_string_literals(), _psd1_module_name(), Recursively collect all string_literal text values under *node*., Derive a bare module name from a raw string value. e.g. 'MyModule.psm1' →… ### Community 373 - "_shortest_path_text" Cohesion: 0.28 Nodes (9): _tool_shortest_path(), Body of the `shortest_path` MCP tool (module-level so tests can call it without…, _shortest_path_text(), _directed_chain(), DiGraph, alpha --calls--> beta --calls--> gamma, as _load_graph would load it (directed…, test_shortest_path_tool_directed_backwards_is_no_path(), test_shortest_path_tool_directed_respects_direction() (+1 more) ### Community 374 - "sample.c" Cohesion: 0.28 Nodes (8): Rectangle, stdio, stdlib, string, main(), make_rect(), process(), validate() ### Community 375 - "compilerOptions" Cohesion: 0.22 Nodes (8): @tsconfig/strictest/tsconfig.json, compilerOptions, module, outDir, strict, target, extends, include ### Community 376 - "sample.zig" Cohesion: 0.28 Nodes (7): std, add(), Color, multiply(), main(), Point, Shape ### Community 377 - "Widget" Cohesion: 0.28 Nodes (4): Widget, -refresh, -render, String ### Community 378 - "TBaseGadget" Cohesion: 0.28 Nodes (7): BaseGadget, TObject, TBaseGadget, Prepare(), DerivedGadget, TDerivedGadget, Run() ### Community 379 - "sample_calls.py" Cohesion: 0.39 Nodes (5): Analyzer, compute_score(), normalize(), Fixture: functions and methods that call each other - for call-graph extraction…, run_analysis() ### Community 380 - "test_cross_language_call_resolution.py" Cohesion: 0.58 Nodes (8): _call_edges(), Path, Cross-language call resolution — a call in one language must never bind by name…, test_jvm_interop_kotlin_call_to_java_still_resolves(), test_python_call_does_not_bind_to_kotlin_function(), test_same_language_callback_still_resolves(), test_tsx_callback_does_not_bind_to_kotlin_method(), _write() ### Community 381 - "parametrize" Cohesion: 0.22 Nodes (9): parametrize, The node whose source_file is the file its ID encodes survives, whichever chunk…, The issue's own repro shape: the page that defines a concept must keep its own…, Exact-ID dedup combines AST precision with semantic enrichment (#2091)., The #2182 cross-file merge requires provenance and high entropy on BOTH sides,…, test_crossfile_identical_labels_stay_distinct_for_guarded_types(), test_defining_file_wins_over_referencing_file(), test_korean_defining_file_wins_over_referencing_file() (+1 more) ### Community 382 - "corpus" Cohesion: 0.28 Nodes (9): #1948 caller-side guard: an incremental run that only re-dispatches the CHANGED…, #1948 x #1950 interaction: a doc stamped complete on a prior run that TRUNCATES…, test_incremental_partial_run_preserves_untouched_semantic_hash(), _run_extract(), _stamp_everything_sent(), test_truncated_doc_semantic_hash_is_cleared_for_requeue(), _extract(), _run() (+1 more) ### Community 383 - "test_god_nodes_cli.py" Cohesion: 0.47 Nodes (8): `graphify god-nodes` CLI subcommand (#2004 part 2). god_nodes has long been an…, _run(), test_god_nodes_cli_json(), test_god_nodes_cli_missing_graph_errors(), test_god_nodes_cli_text_output(), test_god_nodes_cli_top_limits(), test_god_nodes_cli_underscore_alias(), _write_graph() ### Community 384 - "test_import_self_loops.py" Cohesion: 0.47 Nodes (8): _built_import_self_loops(), _import_self_loops(), parametrize, Path, test_python_external_import_matching_current_basename_has_no_self_loop(), test_recursive_call_self_loop_is_preserved(), test_rust_import_matching_current_basename_has_no_self_loop(), _write() ### Community 385 - "test_js_destructured_export.py" Cohesion: 0.36 Nodes (8): _extract(), #2604 Class 2: an exported object-destructure assignment must emit one node per…, The gate that gives an EXPORTED destructure one node per name must not fire for…, test_exported_destructure_emits_one_node_per_name(), test_renamed_property_exports_under_its_key_not_its_local_alias(), test_rest_pattern_is_skipped_not_mangled(), test_single_name_import_resolves_to_its_own_node(), test_unexported_require_destructure_does_not_create_a_colliding_node() ### Community 386 - "test_label_communities_batches_when_over_batch_size" Cohesion: 0.22 Nodes (5): test_label_communities_all_batches_fail_raises(), test_label_communities_batches_when_over_batch_size(), test_label_communities_max_communities_caps_total(), test_label_communities_partial_batch_failure_keeps_successful_batches(), _wide_graph() ### Community 387 - "test_sourceless_call_targets.py" Cohesion: 0.36 Nodes (8): _labelled_edges(), _nodes(), Path, Regression tests for unresolved external call targets (#3156)., A type-reference stub must not become a project-wide calls hub., A project-defined exception with the same name remains a real call target., test_source_backed_exception_call_is_preserved(), test_sourceless_external_call_target_is_not_emitted() ### Community 388 - "test_ts_new_expression_calls.py" Cohesion: 0.47 Nodes (8): _calls(), Path, TS/JS/TSX `new Foo(...)` constructor calls emit `calls` edges (#3116). In tree-…, test_js_new_expression_emits_calls_edge(), test_ts_member_new_expression_raw_calls(), test_ts_new_expression_emits_calls_edge_in_file(), test_ts_new_expression_resolves_cross_file(), test_tsx_new_expression_emits_calls_edge() ### Community 389 - "AsyncHTTPTransport" Cohesion: 0.22 Nodes (4): AsyncBaseTransport, AsyncHTTPTransport, Async transport interface., The async variant of HTTPTransport. ### Community 390 - "first_present" Cohesion: 0.29 Nodes (8): endpoint_id(), first_present(), normalize_edge(), normalize_node(), Return the first non-empty value for any candidate key., Normalize edge endpoints that may be strings or node-like objects., Normalize a graphify node across common graph.json schema variants., Normalize graphify edges while preserving original fields. ### Community 391 - "format_node_refs" Cohesion: 0.25 Nodes (8): format_node_refs(), humanize_label(), node_display_name(), Readable node label for tables and summaries., Render node references as readable labels instead of internal IDs., Truncate without splitting Mermaid syntax., Convert graph labels into short labels people can scan in a diagram., truncate_text() ### Community 392 - "_content_token_swap" Cohesion: 0.25 Nodes (8): _content_token_swap(), True when tokens x and y read as one word misspelt, not two words (#2576). A…, True when two equal-token-count labels differ in at least one swapped content…, _same_word_variant(), _content_token_swap fires when any same-position pair is a swap of two distinct…, _same_word_variant separates one-word misspellings from two words (#2576 DELTA…, test_content_token_swap_helper(), test_same_word_variant_helper() ### Community 393 - "_resolve_php_type_references" Cohesion: 0.32 Nodes (8): _php_fqn_from_raw(), Resolve a raw (possibly qualified) PHP class reference to an FQN. PHP name-…, Disambiguate PHP inherits/implements/mixes_in/imports/references targets using…, _resolve_php_type_references(), _external_stub(), _record_raw(), _record_use_clause(), walk() ### Community 394 - "extract_vbnet" Cohesion: 0.61 Nodes (8): extract_vbnet(), add_data_member(), add_edge(), add_node(), process_type(), scan(), type_reference(), Path ### Community 395 - "extract_zig" Cohesion: 0.43 Nodes (8): extract_zig(), add_edge(), add_node(), _extract_import(), walk(), walk_calls(), Path, Extract functions, structs, enums, unions, and imports from a .zig file. ### Community 396 - "lessons_fresh" Cohesion: 0.25 Nodes (8): lessons_fresh(), True if ``out_path`` exists and is at least as new as every input that feeds it…, parametrize, test_lessons_fresh_false_when_graph_newer(), test_lessons_fresh_false_when_graph_sidecar_newer(), test_lessons_fresh_false_when_memory_newer(), test_lessons_fresh_missing_output_is_not_fresh(), test_lessons_fresh_true_when_output_newer_than_inputs() ### Community 397 - "load_memory_docs" Cohesion: 0.25 Nodes (8): load_memory_docs(), Parse every memory doc under ``memory_dir``, sorted by date then filename. Each…, Determinism hinges on this sort: docs come back oldest-first, filename as…, dead_ends/corrections are appended in doc order, so their determinism rides on…, test_dead_ends_and_corrections_follow_doc_order(), test_load_memory_docs_missing_dir_is_empty(), test_load_memory_docs_orders_by_date_then_filename(), test_load_memory_docs_skips_foreign_and_sorts() ### Community 399 - "test_antigravity_install.py" Cohesion: 0.25 Nodes (5): Antigravity install lays down its full always-on layer, not just the skill.…, The workflow must not hardcode a SKILL.md location. One constant serves both…, Global install shares the constant, so it must stay path-free too., test_antigravity_global_install_workflow_names_no_skill_path(), test_antigravity_workflow_names_no_skill_path() ### Community 400 - "test_case_sensitive_resolution.py" Cohesion: 0.54 Nodes (7): _extract(), _labels(), Cross-file name resolution respects case in case-sensitive languages (#1581).…, test_case_sensitive_cross_file_ref_respects_case(), test_exact_case_cross_file_still_resolves(), test_php_case_insensitive_resolution_preserved(), test_python_Path_does_not_resolve_to_shell_PATH() ### Community 401 - "test_cross_repo_external_call_guards.py" Cohesion: 0.29 Nodes (6): _graph(), parametrize, Path, Regression tests for cross-repo calls on externally resolved C# types (#3360)., test_cross_repo_calls_honor_csharp_using_visibility(), test_real_csharp_external_receiver_does_not_bind_to_unrelated_repo_type() ### Community 402 - "test_detect_google_workspace_sidecar_survives_a_gitignored_output_dir" Cohesion: 0.25 Nodes (6): #3504: the documented .gitignore advice puts graphify-out/ (and so graphify-…, Same trap as the Office sidecar case (#3504), for the Google Workspace…, test_detect_converts_google_workspace_shortcuts_when_enabled(), fake_convert(), test_detect_google_workspace_sidecar_survives_a_gitignored_output_dir(), test_detect_office_sidecar_survives_a_gitignored_output_dir() ### Community 403 - "_deny_writes_to" Cohesion: 0.25 Nodes (7): _deny_writes_to(), Path, Make write_text raise PermissionError for *target* only (simulates a dotfile…, #3474: a read-only ~/.claude/CLAUDE.md must not abort the install. install()…, #3474 (same shape): an unwritable CODEBUDDY.md must not abort the install., test_install_survives_unwritable_claude_md(), test_install_survives_unwritable_codebuddy_md() ### Community 404 - "test_js_module_level_anonymous_calls.py" Cohesion: 0.39 Nodes (7): _extract(), Calls made directly inside a module-level anonymous closure, with no enclosing…, Documents the limitation described in this module's docstring: when the callee…, test_direct_import_collision_is_a_known_remaining_gap(), test_named_enclosing_function_case_is_unaffected(), test_nested_anonymous_closures_both_attribute_to_the_file_node(), test_same_file_call_inside_anonymous_top_level_closure_is_captured() ### Community 405 - "_md_link_fixture" Cohesion: 0.25 Nodes (8): _md_link_fixture(), A hub doc linking to sibling docs, plus those docs (#1376)., Inline/wikilink markdown links to sibling docs become references edges (#1376)., External URLs, in-page anchors and images must not produce edges (#1376)., End-to-end: after extract()'s ID remap, link targets are real doc nodes, so the…, test_markdown_link_edges_emitted(), test_markdown_link_edges_resolve_to_real_nodes(), test_markdown_link_skips_external_and_images() ### Community 406 - "schema_singleton" Cohesion: 0.25 Nodes (8): The file_type enum is the six-value superset in every rendered artifact., The guard's line scanner flags 4- and 5-value pipe enums, not the superset., test_schema_singleton_catches_legacy_enums(), test_schema_singleton_passes_across_all_platforms(), legacy_enum_lines(), Return lines carrying a legacy (sub-superset) file_type enum. A line counts as…, Assert the file_type enum block is byte-identical across every platform. Every…, schema_singleton() ### Community 407 - "test_swift_builtin_noise.py" Cohesion: 0.32 Nodes (7): _labels_by_id(), parametrize, Swift/Foundation/SwiftUI builtins must not become god nodes or bind to user…, Swift framework symbols must be filtered from god_nodes output. Constructs a…, test_god_nodes_excludes_swift_builtin_labels(), test_swift_builtin_receiver_does_not_bind_to_user_symbol(), test_swift_user_receiver_type_still_resolves() ### Community 408 - "test_swift_import_resolution.py" Cohesion: 0.61 Nodes (7): _import_edges(), _module_nodes(), Path, test_swift_import_edges_survive_build(), test_swift_import_resolves_to_module_node(), test_swift_same_module_imported_twice_collapses_to_one_node(), _write() ### Community 409 - "_path_match" Cohesion: 0.43 Nodes (3): _path_match(), True if graph_src and pr_file refer to the same file (path-boundary safe)., TestPathMatch ### Community 410 - "_GraphContextCache" Cohesion: 0.33 Nodes (4): _GraphContextCache, Thread-safe graph contexts: one pinned default plus an LRU of projects., Build one entry for an already-resolved path and known file key.…, Return a fresh context, retaining project contexts by LRU order.… ### Community 411 - "SampleSpec" Cohesion: 0.29 Nodes (5): specification, SampleSpec, "should handle #input and return #expected", "should not change value when it's already correct", "should process valid input" ### Community 412 - "Foo" Cohesion: 0.33 Nodes (3): Foo, bar, value ### Community 413 - "sample_php_listen.php" Cohesion: 0.43 Nodes (6): EventServiceProvider, NotifyAdmins, OrderPlaced, SendWelcomeEmail, ShipOrder, UserRegistered ### Community 414 - "test_atomic_version_stamp.py" Cohesion: 0.29 Nodes (5): Regression tests for atomic `.graphify_version` stamp writes (#3286)., Managed-dotfile case: os.replace must replace the symlink, not write through., test_write_version_stamp_is_atomic_and_cleans_tmp(), test_write_version_stamp_preserves_existing_on_replace_failure(), test_write_version_stamp_replaces_symlink_instead_of_following() ### Community 415 - "_mkG" Cohesion: 0.29 Nodes (7): _mkG(), #479: refuse to silently overwrite an existing graph with fewer nodes., A non-empty but unparseable existing graph.json (corrupt or mid-write) must NOT…, An empty/whitespace existing file has no nodes to lose, so it is not a shrink…, test_to_json_fails_safe_on_corrupt_existing(), test_to_json_proceeds_on_empty_existing(), test_to_json_refuses_shrink() ### Community 416 - "test_home_sandbox.py" Cohesion: 0.29 Nodes (3): Regression tests for the repo-wide HOME sandbox (issue #2168). The autouse…, Global skill deletes land inside the sandbox home, never the real one. Since…, test_global_uninstall_is_captured_by_sandbox() ### Community 417 - "test_label_cli_drops_sentinel_and_bare_key_echoes" Cohesion: 0.29 Nodes (5): #2534 case 2, cli side: an LLM reply that echoes the sentinel ("Community 5")…, test_label_cli_drops_sentinel_and_bare_key_echoes(), test_label_cli_missing_only_preserves_existing_labels(), test_label_cli_passes_model_override(), fake_generate() ### Community 418 - "test_go_method_declaration_emits_refs_only_when_name_present" Cohesion: 0.38 Nodes (6): Regression: review feedback flagged a hypothetical UnboundLocalError in…, test_go_method_declaration_emits_refs_only_when_name_present(), _guarded_by_name_node(), _is_guarded(), _stmt_chain(), _is_early_return_on_falsy_name_node() ### Community 419 - "_star_graph" Cohesion: 0.29 Nodes (7): A high-degree hub plus a low-degree answer node, to force the answer past a…, BUG2: a low-degree answer node passed as a seed is rendered first and survives…, BUG2 regression guard: the query path must pass seeds to the renderer (a branch…, _star_graph(), test_query_graph_text_passes_seeds_so_answer_survives(), test_subgraph_to_text_seed_survives_truncation(), test_subgraph_to_text_truncation_notice_at_top() ### Community 420 - "sample_doctest.cpp" Cohesion: 0.33 Nodes (4): doctest, "addition works", "handles \"quoted\" names", "subtraction works" ### Community 421 - "generate_overview_cards" Cohesion: 0.33 Nodes (6): derive_flow_chain(), generate_overview_cards(), Aggregate inter-section edge counts and relation names., Derive a readable section flow from inter-section edges., Generate generic overview cards., section_edge_summary() ### Community 422 - "mermaid_section_id" Cohesion: 0.33 Nodes (6): mermaid_section_id(), node_mermaid_id(), Build a Mermaid-safe ASCII identifier with a hash suffix to avoid collisions., Generate a safe Mermaid node ID from a graph node. Mermaid IDs must match…, Convert a section ID (like 'cli-entry') to a safe Mermaid ID (like 'CLI_ENTRY')., stable_ascii_id() ### Community 423 - "_kotlin_package_index" Cohesion: 0.33 Nodes (6): _kotlin_package_index(), Group per-file results by the Kotlin package they declare. ``kotlin_package``…, Rewrite Kotlin ``imports`` edge targets from the bare last segment to the node…, Resolve Kotlin fully-qualified call expressions (#2550).…, _resolve_kotlin_import_targets(), _resolve_kotlin_qualified_calls() ### Community 424 - "resolve_pascal_inherited_calls" Cohesion: 0.40 Nodes (4): _pascal_raw_calls(), Cross-file resolution for Pascal/Delphi calls to inherited methods. The per-…, Resolve Pascal/Delphi calls to a method inherited across file boundaries.…, resolve_pascal_inherited_calls() ### Community 425 - "_compute_idf" Cohesion: 0.33 Nodes (6): _compute_idf(), IDF weights for query terms, cached in G.graph['_idf_cache']. Common terms like…, A term matching only 1 of N nodes should get IDF > 1., A term matching most nodes should get IDF < 1., test_idf_common_term_gets_low_weight(), test_idf_rare_term_gets_high_weight() ### Community 426 - "sample.sh" Cohesion: 0.53 Nodes (5): APP_ENV, build(), deploy(), sample.sh script, test_suite() ### Community 427 - "TSampleForm" Cohesion: 0.33 Nodes (4): TPanel, TLabel, TSampleForm, TTimer ### Community 428 - "sample_php_container.php" Cohesion: 0.67 Nodes (4): AppServiceProvider, CashierGateway, PaymentGateway, StripeGateway ### Community 429 - "test_cargo_missing_manifest.py" Cohesion: 0.47 Nodes (5): Path, `graphify extract --cargo` must degrade, not abort, when no Cargo.toml exists…, _run(), test_cargo_flag_with_a_manifest_still_adds_crate_nodes(), test_cargo_flag_without_a_manifest_still_writes_the_graph() ### Community 430 - "test_build_calls_dedup" Cohesion: 0.20 Nodes (6): build() should deduplicate near-identical nodes across extractions., The default build path must not discard semantic enrichment (#2091)., #2182 determinism, #1753/#2074 precedent: the survivor must not depend on…, test_build_calls_dedup(), test_build_dedup_preserves_semantic_attributes(), test_crossfile_concept_merge_deterministic_across_hash_seeds() ### Community 431 - "test_edge_only_semantic_extraction_not_stamped_and_retried" Cohesion: 0.33 Nodes (5): #2927 end-to-end: a semantic extraction where a dispatched doc produces edges…, #2927 healing: a manifest poisoned BEFORE #2927 (carrying a live semantic_hash…, test_edge_only_semantic_extraction_not_stamped_and_retried(), _mock_llm(), test_stale_poisoned_manifest_semantic_source_healed() ### Community 434 - "test_gemini_install_writes_gemini_md_without_newline_translation" Cohesion: 0.33 Nodes (5): #3668: same CRLF issue as _register_always_on_block, here in the GEMINI.md…, #3668: Path.write_text opens in text mode, which on Windows turns a pre-…, test_gemini_install_writes_gemini_md_without_newline_translation(), test_register_always_on_block_writes_without_newline_translation(), _tracking_write_text() ### Community 435 - "test_owned_type_sources.py" Cohesion: 0.73 Nodes (5): run(), test_abstract_method_omissions_do_not_drop_concrete_method(), test_callback_local_method_preserved_named_function_local_omitted(), test_same_basename_sources_do_not_suppress_other_callers(), triples() ### Community 436 - "_make_noisy_graph" Cohesion: 0.33 Nodes (6): _make_noisy_graph(), FooBarService error handling' should expand from FooBarService, not from error-…, 20 error-handler nodes + 1 rare identifier: FooBarService., error' matches 20 nodes, 'foobarservice' matches 1 — IDF should make…, test_idf_downweights_common_terms(), test_query_seeds_from_identifier_not_noise() ### Community 437 - "test_zero_node_no_cache.py" Cohesion: 0.33 Nodes (4): #1666 — an extractable source file that yields zero nodes must not be cached,…, test_no_warning_when_all_files_produce_nodes(), test_normal_file_still_cached(), test_zero_node_result_not_cached_then_self_heals() ### Community 438 - "SamplePackage" Cohesion: 0.40 Nodes (5): FCL, LCL, sampleutils, sample, SamplePackage ### Community 439 - "_resolve_python_member_calls" Cohesion: 0.50 Nodes (4): Resolve cross-file Python qualified class-method calls (``ClassName.method()``)…, _resolve_python_member_calls(), _key(), _module_stem_key() ### Community 440 - "_bash_make_id" Cohesion: 0.40 Nodes (5): _bash_make_id(), Bash symbol node ID via the single shared recipe (#1378). Previously an inline…, _bash_make_id must produce identical output to _make_id for Unicode inputs. The…, test_bash_make_id_identical_to_make_id(), test_bash_make_id_unicode_matches_make_id() ### Community 442 - "raw/build.py" Cohesion: 0.50 Nodes (4): srv_danisha_graphify_worked_mixed_corpus_raw_validate_py, build(), build_from_json(), Merge multiple extraction results into one graph. ### Community 443 - "TOtherGadget" Cohesion: 0.40 Nodes (3): OtherGadget, TObject, TOtherGadget ### Community 447 - "sample.sln" Cohesion: 0.70 Nodes (3): Domain, WebApi, Tests ### Community 448 - "MainViewModel" Cohesion: 0.40 Nodes (3): MainViewModel, MainWindow, Window ### Community 449 - "UserControl" Cohesion: 0.40 Nodes (3): SettingsViewModel, SettingsView, UserControl ### Community 450 - "test_js_exported_scalar_bindings.py" Cohesion: 0.40 Nodes (4): parametrize, test_exported_scalar_binding_satisfies_named_import_target(), test_exported_scalar_bindings_emit_nodes(), test_exported_scalar_fix_skips_unsupported_binding_patterns() ### Community 451 - "test_incremental_rebuild_preserves_call_to_unchanged_typescript_target" Cohesion: 0.50 Nodes (4): #2406: rebuilding a changed caller retains its SHARED DIRECT calls into…, test_incremental_rebuild_preserves_call_to_unchanged_typescript_target(), has_call(), node_id() ### Community 452 - "_resolve_cross_file_java_imports" Cohesion: 0.67 Nodes (4): Two-pass Java import resolution. Pass 1: build a global index {ClassName:…, _resolve_cross_file_java_imports(), _pkg_matches(), walk() ### Community 453 - "_resolve_java_type_references" Cohesion: 0.50 Nodes (4): Re-point dangling Java ``implements``/``inherits`` edges to the real…, _resolve_java_type_references(), _external_stub(), walk() ### Community 454 - "_community_label_lines" Cohesion: 0.50 Nodes (4): _community_label_lines(), One prompt line per community (largest first), sampling up to ``top_k``…, The prompt line used to read "Community {cid}: ..." — the exact string of the…, test_label_prompt_lines_use_bare_cid_keys() ### Community 458 - "SAMPLE" Cohesion: 0.67 Nodes (3): SAMPLE, HELPER-PARA, MAIN-PARA ### Community 459 - "App" Cohesion: 0.83 Nodes (3): App(), fmtCount(), fmtDate() ### Community 462 - "test_extract_warns_sql_grammar_failed_to_load" Cohesion: 0.50 Nodes (3): test_extract_sql_reports_load_failure_not_missing(), _broken_import(), test_extract_warns_sql_grammar_failed_to_load() ### Community 463 - "test_pascal_no_duplicate_method_edges_tree_sitter" Cohesion: 0.50 Nodes (4): _dup_edges(), A class method appears in both the interface declaration and the…, test_pascal_no_duplicate_method_edges_regex(), test_pascal_no_duplicate_method_edges_tree_sitter() ### Community 485 - "test_ruby_suffixed_methods_survive_extraction" Cohesion: 0.67 Nodes (3): Path, #3077: foo, foo!, foo?, and foo= must all survive extraction with distinct IDs., test_ruby_suffixed_methods_survive_extraction() ### Community 486 - "test_ingest_non_dict_input_returns_empty" Cohesion: 0.67 Nodes (3): parametrize, Non-dict inputs are guarded and return empty nodes/edges., test_ingest_non_dict_input_returns_empty() ### Community 487 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\env.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\env.py, hash, mtime ### Community 488 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0002_add_preview_columns.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0002_add_preview_columns.py, hash, mtime ### Community 489 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0003_make_siege_date_nullable.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0003_make_siege_date_nullable.py, hash, mtime ### Community 490 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0004_add_post_priority_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0004_add_post_priority_config.py, hash, mtime ### Community 491 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0005_add_description_to_post_priority_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0005_add_description_to_post_priority_config.py, hash, mtime ### Community 492 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0006_power_level_and_drop_sort_value.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0006_power_level_and_drop_sort_value.py, hash, mtime ### Community 493 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0007_fix_group_number_max.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0007_fix_group_number_max.py, hash, mtime ### Community 494 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0008_add_matched_condition_id_to_position.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0008_add_matched_condition_id_to_position.py, hash, mtime ### Community 495 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0009_add_discord_id_to_member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0009_add_discord_id_to_member.py, hash, mtime ### Community 496 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0010_add_last_seen_changelog_at_to_member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0010_add_last_seen_changelog_at_to_member.py, hash, mtime ### Community 497 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0011_add_post_suggest_preview.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\alembic\\versions\\0011_add_post_suggest_preview.py, hash, mtime ### Community 498 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\attack_day.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\attack_day.py, hash, mtime ### Community 499 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\auth.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\auth.py, hash, mtime ### Community 500 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\autofill.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\autofill.py, hash, mtime ### Community 501 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\board.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\board.py, hash, mtime ### Community 502 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\buildings.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\buildings.py, hash, mtime ### Community 503 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\changelog.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\changelog.py, hash, mtime ### Community 504 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\comparison.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\comparison.py, hash, mtime ### Community 505 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\discord_sync.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\discord_sync.py, hash, mtime ### Community 506 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\health.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\health.py, hash, mtime ### Community 507 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\images.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\images.py, hash, mtime ### Community 508 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\lifecycle.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\lifecycle.py, hash, mtime ### Community 509 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\members.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\members.py, hash, mtime ### Community 510 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\notifications.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\notifications.py, hash, mtime ### Community 511 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_priority_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_priority_config.py, hash, mtime ### Community 512 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_suggestions.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\post_suggestions.py, hash, mtime ### Community 513 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\posts.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\posts.py, hash, mtime ### Community 514 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\reference.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\reference.py, hash, mtime ### Community 515 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\siege_members.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\siege_members.py, hash, mtime ### Community 516 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\sieges.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\sieges.py, hash, mtime ### Community 517 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\validation.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\validation.py, hash, mtime ### Community 518 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\version.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\api\\version.py, hash, mtime ### Community 519 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\config.py, hash, mtime ### Community 520 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\base.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\base.py, hash, mtime ### Community 521 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\__init__.py, hash, mtime ### Community 522 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\seeds.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\seeds.py, hash, mtime ### Community 523 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\session.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\db\\session.py, hash, mtime ### Community 524 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\auth.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\auth.py, hash, mtime ### Community 525 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\dependencies\\__init__.py, hash, mtime ### Community 526 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\__init__.py, hash, mtime ### Community 527 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\main.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\main.py, hash, mtime ### Community 528 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\middleware.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\middleware.py, hash, mtime ### Community 529 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_group.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_group.py, hash, mtime ### Community 530 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building.py, hash, mtime ### Community 531 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_type_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\building_type_config.py, hash, mtime ### Community 532 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\enums.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\enums.py, hash, mtime ### Community 533 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\__init__.py, hash, mtime ### Community 534 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member_post_preference.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member_post_preference.py, hash, mtime ### Community 535 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\member.py, hash, mtime ### Community 536 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch.py, hash, mtime ### Community 537 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch_result.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\notification_batch_result.py, hash, mtime ### Community 538 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\position.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\position.py, hash, mtime ### Community 539 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_active_condition.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_active_condition.py, hash, mtime ### Community 540 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_condition.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_condition.py, hash, mtime ### Community 541 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_priority_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post_priority_config.py, hash, mtime ### Community 542 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\post.py, hash, mtime ### Community 543 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege_member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege_member.py, hash, mtime ### Community 544 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\models\\siege.py, hash, mtime ### Community 545 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\rate_limit.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\rate_limit.py, hash, mtime ### Community 546 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\attack_day.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\attack_day.py, hash, mtime ### Community 547 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\autofill.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\autofill.py, hash, mtime ### Community 548 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\board.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\board.py, hash, mtime ### Community 549 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\building.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\building.py, hash, mtime ### Community 550 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\changelog.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\changelog.py, hash, mtime ### Community 551 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\common.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\common.py, hash, mtime ### Community 552 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\comparison.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\comparison.py, hash, mtime ### Community 553 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\__init__.py, hash, mtime ### Community 554 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\member.py, hash, mtime ### Community 555 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_condition.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_condition.py, hash, mtime ### Community 556 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post.py, hash, mtime ### Community 557 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_suggestions.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\post_suggestions.py, hash, mtime ### Community 558 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege_member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege_member.py, hash, mtime ### Community 559 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\siege.py, hash, mtime ### Community 560 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\validation.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\validation.py, hash, mtime ### Community 561 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\version.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\schemas\\version.py, hash, mtime ### Community 562 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\attack_day.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\attack_day.py, hash, mtime ### Community 563 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\autofill.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\autofill.py, hash, mtime ### Community 564 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\board.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\board.py, hash, mtime ### Community 565 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\bot_client.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\bot_client.py, hash, mtime ### Community 566 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\building_capacity.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\building_capacity.py, hash, mtime ### Community 567 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\buildings.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\buildings.py, hash, mtime ### Community 568 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\comparison.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\comparison.py, hash, mtime ### Community 569 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\discord_sync.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\discord_sync.py, hash, mtime ### Community 570 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\image_gen.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\image_gen.py, hash, mtime ### Community 571 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\lifecycle.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\lifecycle.py, hash, mtime ### Community 572 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\members.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\members.py, hash, mtime ### Community 573 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\notification_message.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\notification_message.py, hash, mtime ### Community 574 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\post_suggestions.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\post_suggestions.py, hash, mtime ### Community 575 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\posts.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\posts.py, hash, mtime ### Community 576 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\reference.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\reference.py, hash, mtime ### Community 577 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\siege_members.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\siege_members.py, hash, mtime ### Community 578 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\sieges.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\sieges.py, hash, mtime ### Community 579 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\validation.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\services\\validation.py, hash, mtime ### Community 580 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\telemetry.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\app\\telemetry.py, hash, mtime ### Community 581 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed_demo.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed_demo.py, hash, mtime ### Community 582 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\scripts\\seed.py, hash, mtime ### Community 583 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\conftest.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\conftest.py, hash, mtime ### Community 584 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\__init__.py, hash, mtime ### Community 585 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_attack_day.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_attack_day.py, hash, mtime ### Community 586 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth.py, hash, mtime ### Community 587 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth_rate_limit.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_auth_rate_limit.py, hash, mtime ### Community 588 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_autofill.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_autofill.py, hash, mtime ### Community 589 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_board.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_board.py, hash, mtime ### Community 590 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_bot_client.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_bot_client.py, hash, mtime ### Community 591 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_buildings.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_buildings.py, hash, mtime ### Community 592 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_changelog.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_changelog.py, hash, mtime ### Community 593 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_comparison.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_comparison.py, hash, mtime ### Community 594 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config_endpoint.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config_endpoint.py, hash, mtime ### Community 595 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_config.py, hash, mtime ### Community 596 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_cors.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_cors.py, hash, mtime ### Community 597 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_discord_sync.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_discord_sync.py, hash, mtime ### Community 598 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_enums.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_enums.py, hash, mtime ### Community 599 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_health.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_health.py, hash, mtime ### Community 600 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_image_gen.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_image_gen.py, hash, mtime ### Community 601 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle_integration.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle_integration.py, hash, mtime ### Community 602 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_lifecycle.py, hash, mtime ### Community 603 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_member_changelog_column.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_member_changelog_column.py, hash, mtime ### Community 604 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_members.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_members.py, hash, mtime ### Community 605 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notification_message.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notification_message.py, hash, mtime ### Community 606 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notifications.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_notifications.py, hash, mtime ### Community 607 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions_integration.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions_integration.py, hash, mtime ### Community 608 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_post_suggestions.py, hash, mtime ### Community 609 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_posts.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_posts.py, hash, mtime ### Community 610 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_reference.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_reference.py, hash, mtime ### Community 611 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_schema.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_schema.py, hash, mtime ### Community 612 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_canonical.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_canonical.py, hash, mtime ### Community 613 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_demo.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_seed_demo.py, hash, mtime ### Community 614 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_sieges.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_sieges.py, hash, mtime ### Community 615 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_telemetry.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_telemetry.py, hash, mtime ### Community 616 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_validation.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_validation.py, hash, mtime ### Community 617 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_version.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\backend\\tests\\test_version.py, hash, mtime ### Community 618 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\config.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\config.py, hash, mtime ### Community 619 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\discord_client.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\discord_client.py, hash, mtime ### Community 620 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\http_api.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\http_api.py, hash, mtime ### Community 621 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\__init__.py, hash, mtime ### Community 622 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\telemetry.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\app\\telemetry.py, hash, mtime ### Community 623 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\conftest.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\conftest.py, hash, mtime ### Community 624 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\__init__.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\__init__.py, hash, mtime ### Community 625 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_discord_client.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_discord_client.py, hash, mtime ### Community 626 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_get_guild_member.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_get_guild_member.py, hash, mtime ### Community 627 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_http_api.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_http_api.py, hash, mtime ### Community 628 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_telemetry.py" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\bot\\tests\\test_telemetry.py, hash, mtime ### Community 629 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\board.spec.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\board.spec.ts, hash, mtime ### Community 630 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\siege-lifecycle.spec.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\siege-lifecycle.spec.ts, hash, mtime ### Community 631 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\smoke.spec.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\e2e\\smoke.spec.ts, hash, mtime ### Community 632 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\eslint.config.js" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\eslint.config.js, hash, mtime ### Community 633 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\playwright.config.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\playwright.config.ts, hash, mtime ### Community 634 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\postcss.config.js" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\postcss.config.js, hash, mtime ### Community 635 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\board.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\board.ts, hash, mtime ### Community 636 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\changelog.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\changelog.ts, hash, mtime ### Community 637 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\client.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\client.ts, hash, mtime ### Community 638 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\config.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\config.ts, hash, mtime ### Community 639 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\members.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\members.ts, hash, mtime ### Community 640 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\notifications.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\api\\notifications.ts, hash, mtime ### Community 641 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\App.tsx" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\App.tsx, hash, mtime ### Community 642 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\main.tsx" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\main.tsx, hash, mtime ### Community 643 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\vite-env.d.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\src\\vite-env.d.ts, hash, mtime ### Community 644 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\tailwind.config.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\tailwind.config.ts, hash, mtime ### Community 645 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vite.config.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vite.config.ts, hash, mtime ### Community 646 - "I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vitest.config.ts" Cohesion: 0.67 Nodes (3): I:\\games\\raid\\siege-web\\.worktrees\\experiment-graphify-dry-run-doc\\frontend\\vitest.config.ts, hash, mtime ## Knowledge Gaps - **486 isolated node(s):** `BaseProcessor`, `Loggable`, `Processor`, `Result`, `UserId` (+481 more) These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 5473 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) - **73 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `extract()` connect `extract` to `test_watch.py`, `build_from_json`, `extract.py`, `test_languages.py`, `test_extract.py`, `pathlib`, `json`, `test_js_import_resolution.py`, `test_ruby_resolution.py`, `test_dotnet.py`, `graphify/build.py`, `dispatch_command`, `build`, `test_ts_import_type_arguments.py`, `extract_markdown`, `test_csharp_member_calls.py`, `test_multilang.py`, `test_manifest_ingest.py`, `save_semantic_cache`, `extract_cpp`, `pytest`, `os`, `test_indirect_dispatch.py`, `test_rust_self_member_calls.py`, `test_extract_twice_failing_file_carries_error_marker`, `test_kotlin_grammar.py`, `test_objc_field_table_remap.py`, `CsharpNameResolver`, `resolve_bash_source_edges`, `_is_type_like_definition`, `extract_json`, `test_go_qualified_resolution.py`, `test_indirect_call_function_expression_shadow.py`, `test_swift_cross_file_calls.py`, `test_csharp_interface_dispatch.py`, `test_incremental.py`, `test_cross_repo_member_calls.py`, `_rewire_unique_stub_nodes`, `test_jsconfig_baseurl.py`, `_corpus`, `resolver_registry.py`, `test_js_dynamic_imports.py`, `test_cpp_objc_cross_file_calls.py`, `test_js_dynamic_import_affected.py`, `test_python_decorators.py`, `test_terraform_modules.py`, `test_unmapped_at_alias_resolution.py`, `test_csharp_partial_classes.py`, `_get_extractor`, `test_paths.py`, `test_elixir_import_resolution.py`, `test_go_builtin_call_targets.py`, `test_indirect_call_block_scoped_shadow.py`, `test_java_type_resolution.py`, `test_lua_import.py`, `test_inherited_field_receivers.py`, `test_csharp_object_creation.py`, `test_imported_export_forwarding.py`, `test_issue_3405_python_resolution.py`, `test_ts_inheritance.py`, `test_indirect_call_external_import_shadow.py`, `test_ts_decorators.py`, `test_file_label_disambiguation.py`, `_resolve_js_import_target`, `test_cross_extension_reexport_self_cycle.py`, `test_go_interface_methods.py`, `test_java_member_calls.py`, `test_package_json_subpath_imports.py`, `test_typescript_enum_members.py`, `test_objc_property_ivar_receivers.py`, `test_indirect_call_nested_closure_shadow.py`, `test_inferred_confidence_rubric.py`, `test_objc_category_interfaces.py`, `test_type_only_import_cycles.py`, `bench_extract.py`, `_parse_python_tree`, `test_a_java_build_parks_the_call_and_the_merge_finishes_it`, `test_csharp_call_site_generic_args.py`, `test_csharp_enum_members.py`, `test_extract_cache_location.py`, `test_file_node_id_spec.py`, `_vault_extract`, `test_php_type_resolution.py`, `test_src_layout_import_resolution.py`, `test_csharp_field_generic_args.py`, `test_csharp_generic_callsites.py`, `test_csharp_member_nodes.py`, `test_indirect_call_arrow_single_param_shadow.py`, `test_indirect_call_catch_binding_shadow.py`, `test_node_id_canonical.py`, `test_ts_namespace.py`, `test_ts_receiver_member_calls.py`, `test_objc_member_calls.py`, `_inferred_uses`, `test_js_callback_calls.py`, `test_js_exported_fn_call_resolution.py`, `test_js_this_member_expressions.py`, `test_ts_generators.py`, `test_duplicate_annotation_edges.py`, `test_kotlin_object_literal.py`, `test_php_object_creation.py`, `test_go_import_repoint.py`, `test_java_enum_members.py`, `test_pascal_resolution.py`, `test_phantom_cross_package_call.py`, `test_python_import_resolution.py`, `test_ts_parse_warning.py`, `test_cross_language_call_resolution.py`, `test_import_self_loops.py`, `test_js_destructured_export.py`, `test_sourceless_call_targets.py`, `test_ts_new_expression_calls.py`, `_resolve_php_type_references`, `test_case_sensitive_resolution.py`, `test_cross_repo_external_call_guards.py`, `test_js_module_level_anonymous_calls.py`, `_md_link_fixture`, `test_swift_builtin_noise.py`, `test_swift_import_resolution.py`, `test_owned_type_sources.py`, `test_zero_node_no_cache.py`, `test_js_exported_scalar_bindings.py`, `_resolve_cross_file_java_imports`, `_resolve_java_type_references`, `test_extract_warns_sql_grammar_failed_to_load`, `test_python_aliased_call_survives_warm_cache`, `test_python_unresolved_member_calls_do_not_bind_to_bare_function`?** _High betweenness centrality (0.125) - this node is a cross-community bridge._ - **Why does `build_from_json()` connect `build_from_json` to `test_watch.py`, `test_import_self_loops.py`, `test_obsidian_vault_migration.py`, `test_type_only_import_cycles.py`, `test_languages.py`, `test_extract.py`, `pathlib`, `test_go_qualified_resolution.py`, `json`, `test_swift_cross_file_calls.py`, `test_scip_ingest.py`, `build_merge`, `test_export.py`, `test_swift_import_resolution.py`, `graphify/build.py`, `test_src_layout_import_resolution.py`, `test_cli_export.py`, `extract_python`, `dispatch_command`, `build`, `test_prune_sweeps_orphans.py`, `to_obsidian`, `validate_extraction`, `test_multigraph_diagnostics.py`, `test_cpp_objc_cross_file_calls.py`, `test_external_stub_endpoints.py`, `_labels`, `test_manifest_ingest.py`, `test_terraform_modules.py`, `test_falkordb_integration.py`, `test_reflect.py`, `test_query_names_its_graph.py`, `extract_terraform`, `test_java_type_resolution.py`, `test_lua_import.py`, `test_export_control_characters.py`, `normalize_id`, `test_cluster.py`, `test_file_label_disambiguation.py`, `_resolve_js_import_target`, `test_analyze.py`, `extract_json`?** _High betweenness centrality (0.036) - this node is a cross-community bridge._ - **Why does `dispatch_command()` connect `dispatch_command` to `test_watch.py`, `build_from_json`, `write_callflow_html`, `_detect_default_branch`, `graphify/__main__.py`, `json`, `detect`, `lessons_fresh`, `test_llm_backends.py`, `extract`, `test_chunking.py`, `build_merge`, `test_export.py`, `_run_hook_guard`, `test_cross_repo_member_calls.py`, `save_manifest`, `graphify/build.py`, `cache.py`, `test_cache.py`, `build`, `sanitize_label`, `test_semantic_cleanup.py`, `llm.py`, `affected.py`, `to_obsidian`, `test_multigraph_diagnostics.py`, `test_serve.py`, `save_semantic_cache`, `save_query_result`, `to_wiki`, `_score_nodes`, `serve.py`, `test_labeling.py`, `ingest.py`, `install`, `test_global_graph.py`, `test_benchmark.py`, `introspect_cargo`, `detect_backend`, `reflect.py`, `scope_semantic_result`, `test_export_control_characters.py`, `test_pg_introspect.py`, `test_community_hub_labels.py`, `test_querylog.py`, `prs.py`, `reflect`?** _High betweenness centrality (0.020) - this node is a cross-community bridge._ - **Are the 2 inferred relationships involving `extract()` (e.g. with `test_architecture_documents_extract_as_taking_a_list()` and `test_architecture_tells_library_callers_to_pass_root()`) actually correct?** _`extract()` has 2 INFERRED edges - model-reasoned connections that need verification._ - **What connects `BaseProcessor`, `Loggable`, `Processor` to the rest of the system?** _486 weakly-connected nodes found - possible documentation gaps or missing edges._ - **Should `test_watch.py` be split into smaller, more focused modules?** _Cohesion score 0.00949613776486429 - nodes in this community are weakly interconnected._ - **Should `build_from_json` be split into smaller, more focused modules?** _Cohesion score 0.014932802389248382 - nodes in this community are weakly interconnected._