Repository Analysis

basicmachines-co/basic-memory

AI conversations that actually remember. Never re-explain your project to your AI again. Join our Discord: https://discord.gg/tyvKNccgqN

28.1 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of basicmachines-co/basic-memory, a Python project with 3,793 GitHub stars. SynthScan v2.0 examined 352,070 lines of code across 1243 source files, recording 8653 pattern matches distributed across 23 syntactic categories. The overall adjusted score of 28.1 places this repository in the Moderate AI signal band.

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

28.1
Adjusted Score
28.1
Raw Score
100%
Time Factor
2026-08-29
Last Push
3.8K
Stars
Python
Language
352.1K
Lines of Code
1.2K
Files
8.7K
Pattern Hits
2026-08-29
Scan Date
0.14
HC Hit Rate

What These Metrics Mean

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

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

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

CRITICAL 1HIGH 175MEDIUM 426LOW 8051

Directory Score Breakdown

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

Pattern Findings

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

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

Hyper-Verbose Identifiers6473 hits · 6009 pts
SeverityFileLineSnippetContext
LOWplugins/claude-code/hooks/test_claude_session_start.py61def test_bm_bin_launcher_receives_verb_and_stdin(CODE
LOWplugins/claude-code/hooks/test_claude_session_start.py78def test_project_dir_env_plumbs_through(recorder: tuple[str, Path]) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_session_start.py102def test_unresolvable_bm_bin_fails_open(tmp_path: Path) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_session_start.py108def test_in_process_cli_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_session_start.py118def test_dependency_floor_matches_package_version() -> None:CODE
LOWplugins/claude-code/hooks/test_claude_session_start.py127def test_metadata_block_shape() -> None:CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py61def test_bm_bin_launcher_receives_verb_and_stdin(CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py78def test_project_dir_env_plumbs_through(recorder: tuple[str, Path]) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py102def test_unresolvable_bm_bin_fails_open(tmp_path: Path) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py108def test_in_process_cli_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py118def test_dependency_floor_matches_package_version() -> None:CODE
LOWplugins/claude-code/hooks/test_claude_pre_compact.py127def test_metadata_block_shape() -> None:CODE
LOWplugins/codex/hooks/test_codex_pre_compact.py17def test_script_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOWplugins/codex/hooks/test_codex_pre_compact.py34def test_dependency_is_pinned_to_a_basic_memory_git_ref() -> None:CODE
LOWplugins/codex/hooks/test_codex_pre_compact.py40def test_metadata_and_command_shape() -> None:CODE
LOWplugins/codex/hooks/test_codex_session_start.py17def test_script_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOWplugins/codex/hooks/test_codex_session_start.py34def test_dependency_is_pinned_to_a_basic_memory_git_ref() -> None:CODE
LOWplugins/codex/hooks/test_codex_session_start.py40def test_metadata_and_command_shape() -> None:CODE
LOWtests/test_config_load_side_effects.py13def test_existing_config_load_does_not_create_default_project_directory(CODE
LOWtests/test_config_load_side_effects.py55def test_existing_config_load_keeps_environment_precedence(CODE
LOWtests/test_coerce.py15 def test_native_list_passthrough(self):CODE
LOWtests/test_coerce.py21 def test_single_string_wrapped(self):CODE
LOWtests/test_coerce.py24 def test_non_json_string_wrapped(self):CODE
LOWtests/test_coerce.py27 def test_json_object_string_wrapped(self):CODE
LOWtests/test_coerce.py39 def test_none_parses_to_empty_list(self):CODE
LOWtests/test_coerce.py45 def test_list_with_comma_element_splits(self):CODE
LOWtests/test_coerce.py48 def test_plain_list_passthrough(self):CODE
LOWtests/test_coerce.py54 def test_int_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py58 def test_dict_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py62 def test_int_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py67 def test_dict_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py71 def test_mixed_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py76 def test_json_array_string_with_int_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py81 def test_json_array_string_with_dict_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py85 def test_json_array_string_mixed_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py90 def test_json_array_string_all_strings_still_parses(self):CODE
LOWtests/test_coerce.py100 def test_native_dict_passthrough(self):CODE
LOWtests/test_coerce.py106 def test_non_json_string_passthrough(self):CODE
LOWtests/test_coerce.py110 def test_json_array_string_passthrough(self):CODE
LOWtests/test_coerce.py123 def test_none_returns_empty_list(self):CODE
LOWtests/test_coerce.py128 def test_single_string_wraps_as_one_element(self):CODE
LOWtests/test_coerce.py135 def test_comma_string_with_spaces_strips(self):CODE
LOWtests/test_coerce.py143 def test_json_array_string_single_element(self):CODE
LOWtests/test_coerce.py146 def test_json_array_string_with_comma_elements(self):CODE
LOWtests/test_coerce.py152 def test_plain_list_passthrough(self):CODE
LOWtests/test_coerce.py155 def test_list_with_comma_element_splits(self):CODE
LOWtests/test_coerce.py159 def test_list_with_multiple_comma_elements(self):CODE
LOWtests/test_coerce.py164 def test_hash_prefix_preserved(self):CODE
LOWtests/test_coerce.py168 def test_hash_prefix_in_comma_string_preserved(self):CODE
LOWtests/test_coerce.py173 def test_int_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py176 def test_dict_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py182 def test_int_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py187 def test_mixed_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/test_coerce.py192 def test_dict_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/conftest.py101def _configured_postgres_sync_url() -> str | None:CODE
LOWtests/conftest.py142def _resolve_postgres_sync_url(postgres_container) -> str:CODE
LOWtests/conftest.py151async def _reset_postgres_test_schema(engine: AsyncEngine, async_url: str) -> None:CODE
LOWtests/conftest.py222def suppress_logfire_no_config_warning(monkeypatch) -> None:CODE
LOWtests/conftest.py249async def cleanup_global_db_after_test() -> AsyncGenerator[None, None]:CODE
LOWtests/test_claude_issue_triage.py123def test_git_bash_candidates_include_launcher_for_mingw_git() -> None:CODE
6413 more matches not shown…
Decorative Section Separators187 hits · 697 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py58# =============================================================================COMMENT
MEDIUMtests/conftest.py60# =============================================================================COMMENT
MEDIUMtests/repository/test_relation_repository.py456# -------------------------------------------------------------------------COMMENT
MEDIUMtests/repository/test_relation_repository.py458# -------------------------------------------------------------------------COMMENT
MEDIUMtests/repository/test_entity_repository.py966# -------------------------------------------------------------------------COMMENT
MEDIUMtests/repository/test_entity_repository.py968# -------------------------------------------------------------------------COMMENT
MEDIUMtests/utils/test_file_utils.py285# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py287# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py493# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py495# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py573# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py575# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py140# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py142# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py395# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py397# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py470# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py472# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py505# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_basic_memory_diagnostics.py507# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py22# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py24# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py91# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py93# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py132# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py134# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py185# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py187# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py223# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py225# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py260# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py262# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py298# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py300# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py353# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note_kebab_filenames.py355# =============================================================================COMMENT
MEDIUMtests/mcp/test_tool_write_note.py15# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_write_note.py17# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py54# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py56# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py77# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py79# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py142# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py144# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py202# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py204# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py228# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py230# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py402# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_config_command.py404# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py127# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py129# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py191# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py196# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py305# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py307# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py41# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/cli/test_json_output.py43# ---------------------------------------------------------------------------COMMENT
127 more matches not shown…
Unused Imports729 hits · 651 pts
SeverityFileLineSnippetContext
LOWtests/test_rclone_commands.py3CODE
LOWtests/test_update_versions.py1CODE
LOWtests/test_semantic_vector_index_migration.py3CODE
LOWtests/test_telemetry.py3CODE
LOWtests/test_read_load_bench.py1CODE
LOWtests/repository/test_pgvector_index.py3CODE
LOW…epository/test_vector_manifest_generation_ownership.py3CODE
LOWtests/repository/test_milvus_index.py3CODE
LOWtests/repository/test_milvus_repository.py3CODE
LOWtests/repository/test_semantic_vector_index.py3CODE
LOWtests/repository/test_milvus_config.py3CODE
LOW…sts/repository/test_sqlite_vector_search_repository.py205CODE
LOWtests/runtime/test_note_move_destination.py1CODE
LOWtests/runtime/test_note_content_read_planning.py1CODE
LOWtests/runtime/test_accepted_note_write_guards.py1CODE
LOWtests/runtime/test_pending_note_materialization.py1CODE
LOWtests/runtime/test_deleted_note_file_checksum.py1CODE
LOWtests/runtime/test_deleted_note_response.py1CODE
LOWtests/mcp/test_client_info.py3CODE
LOWtests/mcp/test_project_context.py7CODE
LOWtests/mcp/test_project_context_telemetry.py3CODE
LOWtests/mcp/test_tool_telemetry.py3CODE
LOWtests/mcp/test_server_telemetry.py3CODE
LOWtests/mcp/test_client_telemetry.py3CODE
LOWtests/mcp/test_async_client_telemetry.py3CODE
LOWtests/mcp/test_tool_read_content.py7CODE
LOWtests/mcp/test_tool_json_output_modes.py3CODE
LOWtests/cli/test_workspace_stub.py13CODE
LOWtests/cli/test_workspace_commands.py15CODE
LOWtests/cli/test_project_set_cloud_local.py11CODE
LOWtests/cli/test_db_reset_zombie_check.py3CODE
LOWtests/cli/test_auto_update.py3CODE
LOWtests/cli/test_cloud_status.py3CODE
LOWtests/cli/test_cli_telemetry.py3CODE
LOWtests/cli/test_cloud_authentication.py3CODE
LOWtests/cli/test_import_chatgpt.py10CODE
LOWtests/cli/test_import_claude_conversations.py9CODE
LOWtests/cli/test_import_claude_projects.py9CODE
LOWtests/cli/test_orphans_command.py13CODE
LOWtests/cloud/test_note_content_read_service.py1CODE
LOWtests/cloud/test_project_deletes.py1CODE
LOWtests/cloud/test_cloud_services.py1CODE
LOWtests/cloud/test_note_content_materialization.py3CODE
LOWtests/api/v2/test_memory_hydration.py7CODE
LOWtests/api/v2/test_knowledge_router_telemetry.py3CODE
LOWtests/api/v2/test_search_hydration.py7CODE
LOWtests/api/v2/test_entity_observation_lock_order.py3CODE
LOWtests/api/v2/test_utils_telemetry.py3CODE
LOWtests/api/v2/test_search_router_telemetry.py3CODE
LOWtests/index/test_local_project_index.py3CODE
LOWtests/index/test_watch_service.py3CODE
LOWtests/index/test_watch_coordinator.py3CODE
LOWtests/index/test_local_reconcile_file_reader.py3CODE
LOWtests/index/test_local_markdown_file_indexer.py3CODE
LOWtests/indexing/test_vector_sync_planning.py3CODE
LOWtests/indexing/test_orphan_cleanup.py3CODE
LOW…sts/indexing/test_note_content_batch_reconciliation.py3CODE
LOWtests/indexing/test_note_content_read_repair_runner.py3CODE
LOWtests/indexing/test_note_content_reconciler.py3CODE
LOWtests/indexing/test_batch_indexer.py3CODE
669 more matches not shown…
Self-Referential Comments181 hits · 554 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py323 # Create a new ConfigManager that uses the test home directoryCOMMENT
MEDIUMtests/test_config.py542 # Create a test ConfigManager instanceCOMMENT
MEDIUMtests/test_config.py1018 # Create a project pathCOMMENT
MEDIUMtests/repository/test_search_repository.py525 # Create a search index row with project_idCOMMENT
MEDIUMtests/repository/test_observation_repository.py400 # Create a test observationCOMMENT
MEDIUMtests/repository/test_project_info_repository.py14 # Create a ProjectInfoRepositoryCOMMENT
MEDIUMtests/repository/test_project_info_repository.py26 # Create a ProjectInfoRepositoryCOMMENT
MEDIUMtests/repository/test_project_repository.py241 # Create a non-default projectCOMMENT
MEDIUMtests/repository/test_entity_repository_upsert.py217 # Create an entity firstCOMMENT
MEDIUMtests/repository/test_search_repository_edit_bug_fix.py52 # Create a separate in-memory database for this testCOMMENT
MEDIUMtests/repository/test_search_repository_edit_bug_fix.py56 # Create the database schemaCOMMENT
MEDIUMtests/repository/test_search_repository_edit_bug_fix.py191 # Create a separate in-memory database for this testCOMMENT
MEDIUMtests/repository/test_search_repository_edit_bug_fix.py195 # Create the database schemaCOMMENT
MEDIUMtests/repository/test_entity_repository.py200 # Create a target entity and relationCOMMENT
MEDIUMtests/repository/test_entity_repository.py938 # Create a second projectCOMMENT
MEDIUMtests/repository/test_entity_repository.py1004 # Create a second project with same permalinkCOMMENT
MEDIUMtests/importers/test_importer_base.py14# Create a concrete implementation of the abstract class for testingCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py17 # Create a file with malformed YAML frontmatterCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py53 # Create a file with completely broken YAMLCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py88 # Create a file without note_type in frontmatterCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py115 # Create a file with empty frontmatterCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py141 # Create a file with no frontmatter at allCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py165 # Create a file with null/None note_typeCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py191 # Create a file with null titleCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py217 # Create a file with empty titleCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py243 # Create a file with string "None" as title (common in templates)COMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py269 # Create a valid fileCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py309 # Create a file with completely broken YAML that will trigger the fallback pathCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py351 # Create a file with user's custom frontmatter (like the bug report)COMMENT
MEDIUMtests/markdown/test_entity_parser.py239 # Create a test file in the project directorySTRING
MEDIUMtests/utils/test_validate_project_path.py275 # Create a very long but legitimate pathCOMMENT
MEDIUMtests/utils/test_validate_project_path.py343 # Create a directory outside the projectCOMMENT
MEDIUMtests/utils/test_validate_project_path.py443 # Create a more complex directory structureCOMMENT
MEDIUMtests/utils/test_validate_project_path.py452 # Create a sensitive file in the sibling directoryCOMMENT
MEDIUMtests/utils/test_utf8_handling.py16 # Create a test file with various UTF-8 charactersCOMMENT
MEDIUMtests/utils/test_utf8_handling.py65 # Create a test file with frontmatter containing UTF-8COMMENT
MEDIUMtests/utils/test_utf8_handling.py120 # Create a test file with UTF-8 charactersCOMMENT
MEDIUMtests/mcp/test_tool_schema.py290 # Create a person note but no schema noteCOMMENT
MEDIUMtests/mcp/test_tool_schema.py344 # Create a person with an extra "hobby" field not in the schemaCOMMENT
MEDIUMtests/mcp/test_obsidian_yaml_formatting.py11 # Create a note with tags using write_noteCOMMENT
MEDIUMtests/mcp/test_tool_resource.py137 # Create a text file via notesCOMMENT
MEDIUMtests/mcp/test_tool_resource.py173 # Create a test imageCOMMENT
MEDIUMtests/mcp/test_tool_delete_note.py130 # Create a note to deleteCOMMENT
MEDIUMtests/mcp/test_tool_search.py25 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py59 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py90 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py124 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py286 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_prompts.py93 # Create a mock context with a file that has no permalink (like a binary file)COMMENT
MEDIUMtests/mcp/test_tool_view_note.py195 # Create a note with no clear title structureCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py475 # Create the note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py500 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py522 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py544 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py619 # Create a noteCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py1013 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_move_note.py640 # Create a note to test different identifier formatsCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py293 # Create a note with custom permalink in frontmatterCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py1188 # Create a note with all features to ensure security validation doesn't interfereCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py1258 # Create a very long path traversal attackCOMMENT
121 more matches not shown…
Docstring Block Structure101 hits · 505 pts
SeverityFileLineSnippetContext
HIGHsrc/basic_memory/utils.py20Normalize project path by stripping mount point prefix. In cloud deployments, the S3 bucket is mounted at /app/dataSTRING
HIGHsrc/basic_memory/utils.py77Generate a stable permalink from a file path. Args: file_path: Original file path (str, Path, or PathLike) STRING
HIGHsrc/basic_memory/file_utils.py56 Compute SHA-256 checksum of content. Args: content: Content to hash (either text string or bytes) STRING
HIGHsrc/basic_memory/file_utils.py394 Parse YAML frontmatter from content. Args: content: Content with YAML frontmatter Returns: STRING
HIGHsrc/basic_memory/file_utils.py435 Remove YAML frontmatter from content. Args: content: Content with frontmatter strip: When TrueSTRING
HIGH…/basic_memory/repository/postgres_search_repository.py381Convert Boolean query to tsquery format. Args: query: A Boolean query like "coffee AND brewing" or STRING
HIGHsrc/basic_memory/markdown/markdown_processor.py65Write EntityMarkdown schema back to file. This is step 3 of our read->modify->write pattern. The entireSTRING
HIGHsrc/basic_memory/markdown/utils.py23 Convert markdown entity to model. Does not include relations. Args: file_path: Path to the markdown fiSTRING
HIGHsrc/basic_memory/mcp/project_context.py665Get and validate project, setting it in context if available. Args: client: HTTP client for API calls STRING
HIGHsrc/basic_memory/mcp/project_context.py744Resolve project and normalized path for memory:// identifiers. Args: strict_project_routing: Reject a memorSTRING
HIGHsrc/basic_memory/mcp/project_context.py993Resolve project, create correctly-routed client, and validate project. Solves the bootstrap problem: we need to knoSTRING
HIGHsrc/basic_memory/mcp/clients/memory.py57Build context from a memory path. Args: path: The path to build context for (without memory:// prefSTRING
HIGHsrc/basic_memory/mcp/clients/memory.py110Get recent activity. Args: timeframe: Time filter (e.g., "7d", "1 week", "2 days ago") STRING
HIGHsrc/basic_memory/mcp/clients/resource.py43Read a resource by entity ID. Args: entity_id: Entity external_id (UUID) Returns: STRING
HIGHsrc/basic_memory/mcp/clients/search.py50Search across all content in the knowledge base. Args: query: Search query dict (from SearchQuery.mSTRING
HIGHsrc/basic_memory/mcp/clients/directory.py56List directory contents. Args: dir_name: Directory path to list (default: root) depth: STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py53Create a new entity. Args: entity_data: Entity data including title, content, folder, etc. STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py86Update an existing entity (full replacement). Args: entity_id: Entity external_id (UUID) STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py116Get an entity by ID. Args: entity_id: Entity external_id (UUID) Returns: EntitSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py148Partially update an entity. Args: entity_id: Entity external_id (UUID) patch_data: PartSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py178Delete an entity. Args: entity_id: Entity external_id (UUID) Returns: DeleteEnSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py206Move an entity to a new location. Args: entity_id: Entity external_id (UUID) destinatioSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py238Move all entities in a directory to a new location. Args: source_directory: Source directory path (STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py271Delete all entities in a directory. Args: directory: Directory path to delete (relative to project STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py302Index a markdown file that exists on disk but is not indexed yet. Args: file_path: Markdown file paSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py383Resolve an identifier while preserving owning-project metadata. Args: identifier: The identifier toSTRING
HIGHsrc/basic_memory/mcp/clients/project.py61Create a new project. Args: project_data: Project creation data (name, path, set_default) STRING
HIGHsrc/basic_memory/mcp/clients/project.py91Delete a project by its external ID. Args: project_external_id: Project external ID (UUID) STRING
HIGHsrc/basic_memory/mcp/clients/project.py115Resolve a project name/permalink to its full project record. Args: identifier: Project name or permSTRING
HIGHsrc/basic_memory/mcp/clients/project.py136Set a project as the default. Args: project_external_id: Project external ID (UUID) ReturnSTRING
HIGHsrc/basic_memory/mcp/clients/project.py158Update a project's configuration (e.g. path). Args: project_external_id: Project external ID (UUID)STRING
HIGHsrc/basic_memory/mcp/clients/project.py185Trigger a project indexing operation. Args: project_external_id: Project external ID (UUID) STRING
HIGHsrc/basic_memory/mcp/clients/project.py213Get the current project-index observation for a project. Args: project_external_id: Project externaSTRING
HIGHsrc/basic_memory/mcp/clients/project.py233Get detailed project information and statistics. Args: project_external_id: Project external ID (UUSTRING
HIGHsrc/basic_memory/mcp/clients/schema.py49Validate notes against their resolved schemas. Args: note_type: Optional note type to batch-validatSTRING
HIGHsrc/basic_memory/mcp/clients/schema.py82Infer a schema from existing notes of a given type. Args: note_type: The note type to analyze STRING
HIGHsrc/basic_memory/mcp/clients/schema.py104Show drift between schema definition and actual usage. Args: note_type: The note type to check for STRING
HIGHsrc/basic_memory/mcp/tools/read_content.py180Read a file's raw content by path or permalink. This tool provides direct access to file content in the knowledge bSTRING
HIGHsrc/basic_memory/mcp/tools/view_note.py30View a markdown note as a formatted artifact. This tool reads a note using the same logic as read_note but instructSTRING
HIGHsrc/basic_memory/mcp/tools/edit_note.py398Edit an existing markdown note in the knowledge base. Makes targeted changes to existing notes without rewriting thSTRING
HIGHsrc/basic_memory/mcp/tools/delete_note.py206Delete a note or directory from the knowledge base. Permanently removes a note or directory from the specified projSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py243Make a GET request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use url:STRING
HIGHsrc/basic_memory/mcp/tools/utils.py344Make a PUT request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use url:STRING
HIGHsrc/basic_memory/mcp/tools/utils.py454Make a PATCH request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use urSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py568Make a POST request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use urlSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py742Resolve a string identifier to an entity external_id using the v2 API. Args: client: HTTP client for API caSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py788Make a DELETE request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use uSTRING
HIGHsrc/basic_memory/mcp/tools/write_note.py87Write a markdown note to the knowledge base. Creates a markdown note with semantic observations and relations. STRING
HIGHsrc/basic_memory/mcp/tools/search.py794Search across all content in the knowledge base with comprehensive syntax support. This tool searches the knowledgeSTRING
HIGHsrc/basic_memory/mcp/tools/read_note.py94Return the raw markdown for a note, or guidance text if no match is found. Finds and retrieves a note by its title,STRING
HIGHsrc/basic_memory/mcp/tools/recent_activity.py76Get recent activity for a specific project or across all projects. Project Resolution: The server resolves projSTRING
HIGHsrc/basic_memory/mcp/tools/move_note.py388Move a note or directory to a new location within the same project. Moves a note or directory from one location to STRING
HIGHsrc/basic_memory/mcp/tools/build_context.py191Get context needed to continue a discussion within a specific project. This tool enables natural continuation of diSTRING
HIGHsrc/basic_memory/mcp/tools/project_management.py791Delete a Basic Memory project. Removes a project from Basic Memory's configuration and database records. By defSTRING
HIGHsrc/basic_memory/mcp/tools/list_directory.py60List directory contents from the knowledge base with optional filtering. This tool provides 'ls' functionality for STRING
HIGHsrc/basic_memory/mcp/tools/schema.py258Validate notes against their resolved schema. Validates a specific note (by identifier), all notes of a given type,STRING
HIGHsrc/basic_memory/mcp/tools/schema.py397Analyze existing notes and suggest a schema definition. Examines observation categories and relation types across aSTRING
HIGHsrc/basic_memory/mcp/tools/schema.py524Detect drift between a schema definition and actual note usage. Compares the existing schema for a note type againsSTRING
HIGHsrc/basic_memory/cli/commands/cloud/cloud_utils.py135Check if a project exists on cloud. Args: project_name: Name of project to check workspace: OptionaSTRING
HIGHsrc/basic_memory/cli/commands/cloud/rclone_commands.py308One-way sync: local → cloud. Makes cloud identical to local using rclone sync. Cloud files matching the .bmignoSTRING
41 more matches not shown…
Excessive Try-Catch Wrapping327 hits · 316 pts
SeverityFileLineSnippetContext
LOWtests/test_production_cascade_delete.py248 except Exception as e:CODE
LOWtests/test_production_cascade_delete.py279 except Exception as e:CODE
LOWtests/test_production_cascade_delete.py349 except Exception as e:CODE
LOW…epository/test_vector_manifest_generation_ownership.py113 except Exception:CODE
LOWtests/repository/test_postgres_search_repository.py101 except Exception:CODE
LOWtests/importers/test_importer_base.py29 except Exception as e:CODE
LOWtests/mcp/test_tool_recent_activity.py50 except Exception as e:CODE
LOWtests/mcp/test_tool_build_context.py180 except Exception as e:CODE
LOWtests/mcp/test_tool_move_note.py134 except Exception:CODE
LOWtests/mcp/test_tool_move_note.py441 except Exception:CODE
LOWtests/mcp/test_tool_move_note.py523 except Exception:CODE
LOWtests/db/test_issue_254_foreign_key_constraints.py95 except Exception as e:CODE
LOWtests/services/test_project_service.py895 except Exception:CODE
LOWtests/services/test_project_service.py899 except Exception:CODE
LOWtests/services/test_project_service.py139 except Exception as e:CODE
LOWtests/services/test_project_service.py144 except Exception:CODE
LOWtests/services/test_project_service.py704 except Exception:CODE
LOWtests/services/test_project_service.py708 except Exception:CODE
LOWtests/services/test_project_service.py1540 except Exception:CODE
LOWtests/services/test_project_service.py1723 except Exception:CODE
LOWtests/services/test_project_removal_bug.py129 except Exception as e:CODE
LOWtests/services/test_project_removal_bug.py146 except Exception:CODE
LOWtests/services/test_project_removal_bug.py150 except Exception:CODE
LOWtests/services/test_project_removal_bug.py362 except Exception:CODE
LOW.agents/skills/instrumentation/SKILL.md98except Exception:CODE
MEDIUMintegrations/hermes/__init__.py1201def _bg() -> None:CODE
MEDIUMintegrations/hermes/__init__.py1267def _bg() -> None:CODE
LOWintegrations/hermes/__init__.py58except Exception as _e: # pragma: no coverCODE
LOWintegrations/hermes/__init__.py730 except Exception:CODE
LOWintegrations/hermes/__init__.py736 except Exception:CODE
LOWintegrations/hermes/__init__.py1219 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1229 except Exception:CODE
LOWintegrations/hermes/__init__.py1235 except Exception:CODE
LOWintegrations/hermes/__init__.py1885 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1894 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1903 except Exception:CODE
LOWintegrations/hermes/__init__.py1956 except Exception:CODE
LOWintegrations/hermes/__init__.py385 except Exception as e:CODE
LOWintegrations/hermes/__init__.py439 except Exception:CODE
LOWintegrations/hermes/__init__.py453 except Exception as e:CODE
LOWintegrations/hermes/__init__.py518 except Exception:CODE
LOWintegrations/hermes/__init__.py552 except Exception:CODE
LOWintegrations/hermes/__init__.py562 except Exception:CODE
LOWintegrations/hermes/__init__.py649 except Exception:CODE
LOWintegrations/hermes/__init__.py676 except Exception as e:CODE
LOWintegrations/hermes/__init__.py965 except Exception as e:CODE
LOWintegrations/hermes/__init__.py971 except Exception as e:CODE
LOWintegrations/hermes/__init__.py985 except Exception as e:CODE
LOWintegrations/hermes/__init__.py988 except Exception as shutdown_error:CODE
LOWintegrations/hermes/__init__.py999 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1050 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1092 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1157 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1191 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1270 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1329 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1384 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1437 except Exception:CODE
LOWintegrations/hermes/__init__.py1502 except Exception:CODE
LOWintegrations/hermes/__init__.py1509 except Exception:CODE
267 more matches not shown…
Cross-File Repetition51 hits · 255 pts
SeverityFileLineSnippetContext
HIGHtests/conftest.py0create the shared semantic postgres engine once per test session.STRING
HIGHtest-int/conftest.py0create the shared semantic postgres engine once per test session.STRING
HIGHtest-int/semantic/conftest.py0create the shared semantic postgres engine once per test session.STRING
HIGHtests/mcp/conftest.py0create test client that both mcp and tests will use.STRING
HIGHtests/cli/conftest.py0create test client that both mcp and tests will use.STRING
HIGHtest-int/conftest.py0create test client that both mcp and tests will use.STRING
HIGHtests/cli/test_config_command.py0write config.json under a temporary home and return the file path.STRING
HIGHtests/cli/test_project_info_cloud_status.py0write config.json under a temporary home and return the file path.STRING
HIGHtests/cli/test_project_list_and_ls.py0write config.json under a temporary home and return the file path.STRING
HIGHtests/cli/test_json_output.py0write config.json under a temporary home and return the file path.STRING
HIGHtests/api/v2/test_knowledge_router.py0verify v2 project endpoints require project external_id uuid, not name.STRING
HIGHtests/api/v2/test_resource_router.py0verify v2 project endpoints require project external_id uuid, not name.STRING
HIGHtests/api/v2/test_project_router.py0verify v2 project endpoints require project external_id uuid, not name.STRING
HIGHtest-int/mcp/test_pagination_integration.py0parse a fastmcp tool result content block into json.STRING
HIGHtest-int/mcp/test_workspace_permalink_integration.py0parse a fastmcp tool result content block into json.STRING
HIGHtest-int/mcp/test_output_format_json_integration.py0parse a fastmcp tool result content block into json.STRING
HIGH…cp/test_observation_permalink_collision_integration.py0parse a fastmcp tool result content block into json.STRING
HIGHsrc/basic_memory/repository/embedding_provider.py0return provider-specific runtime settings suitable for startup logs.STRING
HIGHsrc/basic_memory/repository/rerank_provider.py0return provider-specific runtime settings suitable for startup logs.STRING
HIGHsrc/basic_memory/repository/litellm_provider.py0return provider-specific runtime settings suitable for startup logs.STRING
HIGHsrc/basic_memory/repository/relation_repository.py0initialize with project_id filter. args: project_id: project id to filter all operations bySTRING
HIGHsrc/basic_memory/repository/entity_repository.py0initialize with project_id filter. args: project_id: project id to filter all operations bySTRING
HIGHsrc/basic_memory/repository/observation_repository.py0initialize with project_id filter. args: project_id: project id to filter all operations bySTRING
HIGH…/basic_memory/repository/postgres_search_repository.py0create index if not exists idx_search_vector_chunks_project_entity on search_vector_chunks (project_id, entity_id)STRING
HIGHsrc/basic_memory/models/search.py0create index if not exists idx_search_vector_chunks_project_entity on search_vector_chunks (project_id, entity_id)STRING
HIGH…ions/h1b2c3d4e5f6_add_postgres_vector_search_tables.py0create index if not exists idx_search_vector_chunks_project_entity on search_vector_chunks (project_id, entity_id)STRING
HIGHsrc/basic_memory/mcp/container.py0create container by reading configmanager. this is the single point where api reads global config.STRING
HIGHsrc/basic_memory/cli/container.py0create container by reading configmanager. this is the single point where api reads global config.STRING
HIGHsrc/basic_memory/api/container.py0create container by reading configmanager. this is the single point where api reads global config.STRING
HIGHsrc/basic_memory/mcp/clients/memory.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/mcp/clients/resource.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/mcp/clients/search.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/mcp/clients/directory.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/mcp/clients/schema.py0initialize the schema client. args: http_client: httpx asyncclient for making requests project_id: project external_id (STRING
HIGHsrc/basic_memory/models/search.py0create unique index uix_search_index_permalink_project on search_index (permalink, project_id) where permalink is not nuSTRING
HIGH…sions/7f6a2b8c9d10_index_full_postgres_note_content.py0create unique index uix_search_index_permalink_project on search_index (permalink, project_id) where permalink is not nuSTRING
HIGH…314f1ea54dc4_add_postgres_full_text_search_support_.py0create unique index uix_search_index_permalink_project on search_index (permalink, project_id) where permalink is not nuSTRING
HIGHsrc/basic_memory/cli/commands/import_memory_json.py0get markdownprocessor and fileservice instances for importers.STRING
HIGHsrc/basic_memory/cli/commands/import_chatgpt.py0get markdownprocessor and fileservice instances for importers.STRING
HIGHsrc/basic_memory/cli/commands/import_claude_projects.py0get markdownprocessor and fileservice instances for importers.STRING
HIGH…sic_memory/cli/commands/import_claude_conversations.py0get markdownprocessor and fileservice instances for importers.STRING
HIGH…rsions/d7e8f9a0b1c2_add_structured_metadata_indexes.py0check if a column exists in a table (idempotent migration support).STRING
HIGH…rsions/j3d4e5f6g7h8_rename_entity_type_to_note_type.py0check if a column exists in a table (idempotent migration support).STRING
HIGH…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py0check if a column exists in a table (idempotent migration support).STRING
HIGH…g7h8i9_add_created_by_and_last_updated_by_to_entity.py0check if a column exists in a table (idempotent migration support).STRING
HIGH…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py0check if a column exists in a table (idempotent migration support).STRING
HIGH…rsions/d7e8f9a0b1c2_add_structured_metadata_indexes.py0check if an index exists (idempotent migration support).STRING
HIGH…rsions/j3d4e5f6g7h8_rename_entity_type_to_note_type.py0check if an index exists (idempotent migration support).STRING
HIGH…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py0check if an index exists (idempotent migration support).STRING
HIGH…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py0check if an index exists (idempotent migration support).STRING
Structural Annotation Overuse96 hits · 152 pts
SeverityFileLineSnippetContext
LOWtests/mcp/test_tool_write_note.py660 # Step 2: Create second note with different titleCOMMENT
LOWtests/mcp/test_tool_write_note.py668 # Step 3: Try to create/replace first note againCOMMENT
LOWtests/mcp/test_tool_write_note.py325 # Step 1: Create initial note (auto-generated permalink)COMMENT
LOWtests/mcp/test_tool_write_note.py346 # Step 2: Update with content that includes custom permalink in frontmatterCOMMENT
LOWtests/mcp/test_tool_write_note.py649 # Step 1: Create first noteCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py46 # Step 1: Create test projectCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py51 # Step 2: Create related entities that would cause foreign key constraint issuesCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py91 # Step 3: Attempt to remove the projectCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py106 # Step 4: Verify project was successfully removedCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py110 # Step 5: Verify related data was cascade deletedCOMMENT
LOWtests/services/test_project_removal_bug.py52 # Step 1: Add the test projectCOMMENT
LOWtests/services/test_project_removal_bug.py60 # Step 2: Create related entities for this projectCOMMENT
LOWtests/services/test_project_removal_bug.py76 # Step 3: Create observations for the entityCOMMENT
LOWtests/services/test_project_removal_bug.py81 # Step 4: Create relations involving the entityCOMMENT
LOWtests/services/test_project_removal_bug.py106 # Step 5: Attempt to remove the projectCOMMENT
LOWtests/services/test_project_removal_bug.py110 # Step 6: Verify everything was properly deletedCOMMENT
LOWtests/services/test_entity_service.py2576 # Step 1: Create first entity "Node A"STRING
LOWtests/services/test_entity_service.py2600 # Step 2: Create Node B to match live test scenarioSTRING
LOWtests/services/test_entity_service.py2612 # Step 3: Create Node C - this is where the bug occurs in live testingSTRING
LOW.agents/skills/instrumentation/SKILL.md24## Step 1: Detect Language and FrameworksCOMMENT
LOW.claude/commands/release/changelog.md18### Step 1: Version AnalysisCOMMENT
LOW.claude/commands/release/changelog.md34### Step 2: Categorize ChangesCOMMENT
LOW.claude/commands/release/changelog.md59### Step 3: Generate Changelog EntryCOMMENT
LOW.claude/commands/release/changelog.md104### Step 4: IntegrationCOMMENT
LOW.claude/commands/release/release-check.md17### Step 1: Environment ValidationCOMMENT
LOW.claude/commands/release/release-check.md28### Step 2: Code Quality GatesCOMMENT
LOW.claude/commands/release/release-check.md46### Step 3: Documentation ValidationCOMMENT
LOW.claude/commands/release/release-check.md57### Step 4: Dependency ValidationCOMMENT
LOW.claude/commands/release/release-check.md68### Step 5: Issue Tracking ValidationCOMMENT
LOW.claude/commands/release/release.md17### Step 1: Pre-flight ValidationCOMMENT
LOW.claude/commands/release/release.md38### Step 2: Use Justfile AutomationCOMMENT
LOW.claude/commands/release/release.md64### Step 3: Monitor Release ProcessCOMMENT
LOW.claude/commands/release/release.md72### Step 4: Post-Release ValidationCOMMENT
LOW.claude/commands/release/beta.md17### Step 0: Pre-release dependency checkCOMMENT
LOW.claude/commands/release/beta.md25### Step 1: Pre-flight ValidationCOMMENT
LOW.claude/commands/release/beta.md31### Step 2: Use Justfile AutomationCOMMENT
LOW.claude/commands/release/beta.md47### Step 3: Monitor Beta ReleaseCOMMENT
LOW.claude/commands/release/beta.md53### Step 4: Beta Testing InstructionsCOMMENT
LOWdocs/cloud-cli.md155# Step 1: Preview the initial sync (recommended)COMMENT
LOWdocs/cloud-cli.md158# Step 2: If all looks good, run the actual syncCOMMENT
LOWtest-int/mcp/test_chatgpt_tools_integration.py430 # Step 1: Create multiple documentsCOMMENT
LOWtest-int/mcp/test_chatgpt_tools_integration.py466 # Step 2: Search for API-related content (as ChatGPT would)COMMENT
LOWtest-int/mcp/test_chatgpt_tools_integration.py477 # Step 3: Fetch one of the search results (as ChatGPT would)COMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py24 # Step 1: Create a second project that we can switch toCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py37 # Step 2: Test that note operations work in the new project contextCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py52 # Step 3: Test that we can read the note we just createdCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py60 # Step 4: Test that edit operations work (this was failing in the original issue)COMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py76 # Step 5: Verify the edit was appliedCOMMENT
LOWbenchmarks/docs/benchmarks.md237### Step 1: Create BM worktrees for target refsCOMMENT
LOWbenchmarks/docs/benchmarks.md252### Step 2: Prepare benchmark datasets onceCOMMENT
LOWbenchmarks/docs/benchmarks.md261### Step 3: Run BM for each revision with deterministic run IDsCOMMENT
LOWbenchmarks/docs/benchmarks.md304### Step 4: Run mem0 anchor once per dataset (optional but recommended)COMMENT
LOWbenchmarks/docs/benchmarks.md332### Step 5: Compare runsCOMMENT
LOWbenchmarks/docs/benchmarks.md350### Step 6: Record matrix resultsCOMMENT
LOWskills/memory-ingest/SKILL.md30## Step 1: Parse Raw InputCOMMENT
LOWskills/memory-ingest/SKILL.md41## Step 2: Extract EntitiesCOMMENT
LOWskills/memory-ingest/SKILL.md59## Step 3: Search Existing EntitiesCOMMENT
LOWskills/memory-ingest/SKILL.md81## Step 4: Research New Entities (Optional)COMMENT
LOWskills/memory-ingest/SKILL.md93## Step 5: Present Entity ProposalCOMMENT
LOWskills/memory-ingest/SKILL.md112## Step 6: Create the Source NoteCOMMENT
36 more matches not shown…
Cross-Language Confusion22 hits · 122 pts
SeverityFileLineSnippetContext
HIGHtests/test_config.py1297 "json": "jq . {file} > {file}.tmp && mv {file}.tmp {file}",CODE
HIGHtests/importers/test_conversation_indexing.py131 ), f"Search permalink should not be null, got: {search_result.permalink}"CODE
HIGHtests/utils/test_file_utils.py27# Skip marker for tests that use Unix-specific commands (cat, sh, sleep, /dev/null)COMMENT
HIGHtests/utils/test_parse_tags.py23 # None entries (e.g. YAML `tags: [alpha, null]`) are skipped, not revived as "None"COMMENT
HIGHtests/mcp/test_tool_edit_note.py791 # Call edit_note with explicit None for all optional fields (simulates MCP null)COMMENT
HIGHtests/mcp/test_async_client_modes.py491 '{"access_token":"oauth-token-456","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/mcp/test_async_client_modes.py555 '{"access_token":"oauth-control-123","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/cli/cloud/test_cloud_api_client_and_utils.py30 '{"access_token":"token-123","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/cli/cloud/test_cloud_api_client_and_utils.py63 '{"access_token":"token-123","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/cli/cloud/test_cloud_api_client_and_utils.py109 '{"access_token":"token-123","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/cli/cloud/test_cloud_api_client_and_utils.py317 '{"access_token":"oauth-token-456","refresh_token":null,'CODE
HIGH…nchmarks/src/basic_memory_benchmarks/scoring/review.py139 if (labels[id] === undefined) delete labels[id];CODE
HIGH…nchmarks/src/basic_memory_benchmarks/scoring/review.py154 if (ok && fl) ok = (fl==="unlabeled") ? !lab : (lab===fl);CODE
HIGH…nchmarks/src/basic_memory_benchmarks/scoring/review.py170 human_label: labels[c.query_id + "__" + c.provider] || null,CODE
HIGH…nchmarks/src/basic_memory_benchmarks/scoring/review.py172 const blob = new Blob([JSON.stringify({{run: RUN, labels: out}}, null, 1)], {{type: "application/json"}});CODE
HIGHsrc/basic_memory/utils.py543 # Skip None entries (e.g. a YAML `tags: [alpha, null]`) so they are not revived asCOMMENT
HIGHsrc/basic_memory/markdown/plugins.py63 # if it's a markdown_task, return falseCOMMENT
HIGHsrc/basic_memory/api/v2/routers/knowledge_router.py201 Only includes resolved relations (where to_id is not null).STRING
HIGHsrc/basic_memory/api/v2/routers/knowledge_router.py223 # Fetch all resolved relations (to_id is not null) with eager-loaded entitiesCOMMENT
HIGH…basic_memory/indexing/accepted_note_mutation_runner.py98 (checksum null). Keep the message text and key names stable (issue #1445).STRING
HIGHsrc/basic_memory/services/context_service.py546 ELSE eg.entity_path || e.id::text || ','CODE
HIGHsrc/basic_memory/services/context_service.py706 eg.entity_path || e.id || ',' as entity_pathCODE
Deep Nesting139 hits · 118 pts
SeverityFileLineSnippetContext
LOWtests/test_codex_plugin_package.py62CODE
LOWtests/cli/test_ignore_utils.py97CODE
LOWtests/cli/test_share_commands.py87CODE
LOWtests/cli/test_share_commands.py131CODE
LOWtests/cli/test_share_commands.py192CODE
LOWtests/cli/test_share_commands.py225CODE
LOWtests/cli/test_share_commands.py266CODE
LOWtests/cli/test_share_commands.py300CODE
LOWtests/cli/test_share_commands.py605CODE
LOWtests/cli/test_share_commands.py635CODE
LOWtests/indexing/test_accepted_note_mutation_runner.py1565CODE
LOWtests/services/test_project_service.py102CODE
LOWtests/services/test_project_service.py261CODE
LOWtests/services/test_project_service.py371CODE
LOWtests/services/test_project_service.py651CODE
LOWtests/services/test_project_service.py844CODE
LOWtests/services/test_project_service.py1660CODE
LOWtests/services/test_project_removal_bug.py34CODE
LOWintegrations/hermes/__init__.py466CODE
LOWintegrations/hermes/__init__.py526CODE
LOWintegrations/hermes/__init__.py780CODE
LOWintegrations/hermes/__init__.py1579CODE
LOWintegrations/hermes/__init__.py1868CODE
LOWintegrations/hermes/__init__.py713CODE
LOWintegrations/hermes/__init__.py1652CODE
LOW…-int/test_project_index_delete_materialization_race.py157CODE
LOWtest-int/test_search_performance_benchmark.py433CODE
LOWtest-int/compare_search_benchmarks.py60CODE
LOWbenchmarks/src/basic_memory_benchmarks/runner.py88CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py53CODE
LOW…basic_memory_benchmarks/providers/supermemory_local.py82CODE
LOW…marks/src/basic_memory_benchmarks/datasets/convomem.py84CODE
LOW…basic_memory_benchmarks/converters/locomo_to_corpus.py37CODE
LOW…sic_memory_benchmarks/converters/convomem_to_corpus.py55CODE
LOWsrc/basic_memory/config.py61CODE
LOWsrc/basic_memory/config_migrations.py27CODE
LOWsrc/basic_memory/utils.py76CODE
LOWsrc/basic_memory/utils.py520CODE
LOWsrc/basic_memory/utils.py612CODE
LOWsrc/basic_memory/ignore_utils.py156CODE
LOWsrc/basic_memory/ignore_utils.py188CODE
LOWsrc/basic_memory/ignore_utils.py223CODE
LOWsrc/basic_memory/repository/milvus_repository.py344CODE
LOWsrc/basic_memory/repository/metadata_filters.py62CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py187CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py270CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py770CODE
LOW…/basic_memory/repository/postgres_search_repository.py805CODE
LOWsrc/basic_memory/repository/search_trace.py555CODE
LOW…/basic_memory/repository/embedding_provider_factory.py148CODE
LOW…/basic_memory/repository/embedding_provider_factory.py211CODE
LOWsrc/basic_memory/repository/search_repository_base.py371CODE
LOWsrc/basic_memory/repository/search_repository_base.py2117CODE
LOWsrc/basic_memory/repository/search_repository_base.py2453CODE
LOWsrc/basic_memory/repository/semantic_vector_sync.py286CODE
LOWsrc/basic_memory/repository/semantic_vector_sync.py743CODE
LOW…asic_memory/importers/claude_conversations_importer.py141CODE
LOWsrc/basic_memory/importers/claude_projects_importer.py32CODE
LOWsrc/basic_memory/importers/project_zip_import.py51CODE
LOWsrc/basic_memory/importers/memory_json_importer.py32CODE
79 more matches not shown…
Redundant / Tautological Comments63 hits · 91 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py273 # Set BASIC_MEMORY_HOME to the test directoryCOMMENT
LOWtests/conftest.py808 # Write fileCOMMENT
LOWtests/test_config.py568 # Set default to a project that exists with exact name matchCOMMENT
LOWtests/test_production_cascade_delete.py118 # Check if CASCADE DELETE is configuredCOMMENT
LOWtests/test_production_cascade_delete.py232 # Check if entity was cascade deletedCOMMENT
LOWtests/test_production_cascade_delete.py252 # Check if it's a foreign key constraint errorCOMMENT
LOWtests/test_production_cascade_delete.py306 # Check if foreign keys are enabledCOMMENT
LOWtests/markdown/test_markdown_processor.py40 # Write fileCOMMENT
LOWtests/markdown/test_markdown_processor.py89 # Write fileCOMMENT
LOWtests/utils/test_utf8_handling.py47 # Read the file back and verify contentSTRING
LOWtests/utils/test_utf8_handling.py83 # Write the fileSTRING
LOWtests/utils/test_utf8_handling.py138 # Write the fileSTRING
LOWtests/mcp/test_obsidian_yaml_formatting.py24 # Read the file directly to check YAML formattingCOMMENT
LOWtests/mcp/test_obsidian_yaml_formatting.py55 # Read the file to check formattingCOMMENT
LOWtests/mcp/test_tool_write_note.py1423 # Set config to allow overwrites by defaultCOMMENT
LOWtests/mcp/test_tool_write_note.py516 # Write the file backSTRING
LOWtests/cli/test_project_set_cloud_local.py219 # Set back to local — supply --local-path; existing config path is preservedCOMMENT
LOWtests/cli/test_project_add_with_local_path.py68 # Set HOME to tmp_path so ConfigManager uses our test configCOMMENT
LOWtests/services/test_project_removal_bug.py130 # Check if this is the specific foreign key constraint error from the bug reportCOMMENT
LOWtests/services/test_file_service.py54 # Write file and get checksumCOMMENT
LOWtests/services/test_file_service.py237 # Write fileCOMMENT
LOWtest-int/conftest.py380 # Set BASIC_MEMORY_HOME to the test directoryCOMMENT
LOWtest-int/semantic/test_search_diagnostics.py229 # Check if the database entity outranks irrelevant observationsCOMMENT
LOWtest-int/semantic/test_search_diagnostics.py467 # Check if bullets have any context (they shouldn't in current impl)COMMENT
LOWsrc/basic_memory/db.py129 # Check if Postgres backend is configured (for backward compatibility)COMMENT
LOWsrc/basic_memory/utils.py44 # Check if this is a Windows absolute path (e.g., C:\Users\...)COMMENT
LOWsrc/basic_memory/utils.py120 # Check if we have CJK characters that should be preservedCOMMENT
LOWsrc/basic_memory/utils.py555 # Check if it's a JSON array string (common issue from AI assistants)COMMENT
LOWsrc/basic_memory/ignore_utils.py249 # Check if the first part of the path matches the directory nameSTRING
LOWsrc/basic_memory/ignore_utils.py261 # Check if any path part matches the directory nameSTRING
LOWsrc/basic_memory/ignore_utils.py270 # Check if any individual path part matches the glob patternSTRING
LOWsrc/basic_memory/repository/sqlite_search_repository.py285 # Check if term is already a proper wildcard pattern (alphanumeric + *)COMMENT
LOWsrc/basic_memory/repository/sqlite_search_repository.py333 # Check if term needs quotingCOMMENT
LOWsrc/basic_memory/repository/sqlite_search_repository.py340 # Check if any individual word contains special characters that need quotingCOMMENT
LOWsrc/basic_memory/repository/entity_repository.py523 # Check if this is a FOREIGN KEY constraint failureCOMMENT
LOWsrc/basic_memory/repository/entity_repository.py708 # Check if this is a FOREIGN KEY constraint failureCOMMENT
LOW…/basic_memory/repository/postgres_search_repository.py425 # Check if term is already a wildcard patternCOMMENT
LOWsrc/basic_memory/repository/repository.py47 # Check if this model has a project_id columnCOMMENT
LOW…asic_memory/importers/claude_conversations_importer.py79 # Write file using relative path - FileService handles base_pathCOMMENT
LOWsrc/basic_memory/importers/memory_json_importer.py114 # Write file using relative path - FileService handles base_pathCOMMENT
LOWsrc/basic_memory/importers/chatgpt_importer.py74 # Write file using relative path - FileService handles base_pathCOMMENT
LOWsrc/basic_memory/importers/chatgpt_importer.py288 # Add children to stack in reverse order to maintain conversation flowCOMMENT
LOWsrc/basic_memory/markdown/entity_parser.py217 # Check if the path is already absoluteCOMMENT
LOWsrc/basic_memory/mcp/tools/view_note.py74 # Check if this is an error message (note not found)COMMENT
LOWsrc/basic_memory/mcp/tools/search.py1225 # Check if we got no results and provide helpful guidanceCOMMENT
LOWsrc/basic_memory/mcp/tools/move_note.py271# Check if note exists in Basic MemoryCOMMENT
LOWsrc/basic_memory/mcp/tools/move_note.py901 # Check if extensions matchSTRING
LOWsrc/basic_memory/cli/commands/db.py366 # Check if it's a cloud-only project — those can't be reindexed locallyCOMMENT
LOWsrc/basic_memory/cli/commands/format.py92 # Check if formatting is enabledCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/upload.py60 # Check if path existsCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/upload.py129 # Read file content asynchronouslyCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/upload.py249 # Check if file should be ignoredCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/upload_command.py89 # Check if project existsCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/rclone_commands.py785 # Check if first run requires resyncCOMMENT
LOWsrc/basic_memory/api/v2/routers/project_router.py165 # Check if project already exists before attempting to addCOMMENT
LOWsrc/basic_memory/api/v2/routers/project_router.py560 # Check if trying to delete the default projectCOMMENT
LOWsrc/basic_memory/alembic/env.py191 # Check if a connection/engine was provided (e.g., from run_migrations)COMMENT
LOWsrc/basic_memory/alembic/env.py198 # Check if it's an async URL (sqlite+aiosqlite or postgresql+asyncpg)COMMENT
LOW…314f1ea54dc4_add_postgres_full_text_search_support_.py33 # Check if we're using PostgresCOMMENT
LOWsrc/basic_memory/services/project_service.py200 # Check if either path is a parent of the otherCOMMENT
3 more matches not shown…
Verbosity Indicators55 hits · 90 pts
SeverityFileLineSnippetContext
LOWtests/mcp/test_tool_write_note.py660 # Step 2: Create second note with different titleCOMMENT
LOWtests/mcp/test_tool_write_note.py668 # Step 3: Try to create/replace first note againCOMMENT
LOWtests/mcp/test_tool_write_note.py325 # Step 1: Create initial note (auto-generated permalink)COMMENT
LOWtests/mcp/test_tool_write_note.py346 # Step 2: Update with content that includes custom permalink in frontmatterCOMMENT
LOWtests/mcp/test_tool_write_note.py649 # Step 1: Create first noteCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py46 # Step 1: Create test projectCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py51 # Step 2: Create related entities that would cause foreign key constraint issuesCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py91 # Step 3: Attempt to remove the projectCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py106 # Step 4: Verify project was successfully removedCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py110 # Step 5: Verify related data was cascade deletedCOMMENT
LOWtests/services/test_project_removal_bug.py52 # Step 1: Add the test projectCOMMENT
LOWtests/services/test_project_removal_bug.py60 # Step 2: Create related entities for this projectCOMMENT
LOWtests/services/test_project_removal_bug.py76 # Step 3: Create observations for the entityCOMMENT
LOWtests/services/test_project_removal_bug.py81 # Step 4: Create relations involving the entityCOMMENT
LOWtests/services/test_project_removal_bug.py106 # Step 5: Attempt to remove the projectCOMMENT
LOWtests/services/test_project_removal_bug.py110 # Step 6: Verify everything was properly deletedCOMMENT
LOWtests/services/test_entity_service.py2576 # Step 1: Create first entity "Node A"STRING
LOWtests/services/test_entity_service.py2600 # Step 2: Create Node B to match live test scenarioSTRING
LOWtests/services/test_entity_service.py2612 # Step 3: Create Node C - this is where the bug occurs in live testingSTRING
LOWtest-int/mcp/test_chatgpt_tools_integration.py430 # Step 1: Create multiple documentsCOMMENT
LOWtest-int/mcp/test_chatgpt_tools_integration.py466 # Step 2: Search for API-related content (as ChatGPT would)COMMENT
LOWtest-int/mcp/test_chatgpt_tools_integration.py477 # Step 3: Fetch one of the search results (as ChatGPT would)COMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py24 # Step 1: Create a second project that we can switch toCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py37 # Step 2: Test that note operations work in the new project contextCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py52 # Step 3: Test that we can read the note we just createdCOMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py60 # Step 4: Test that edit operations work (this was failing in the original issue)COMMENT
LOWtest-int/mcp/test_project_state_sync_integration.py76 # Step 5: Verify the edit was appliedCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1036 # Step 1: Resolve project name from config (no network call)COMMENT
LOWsrc/basic_memory/mcp/project_context.py1067 # Step 2: Check explicit routing BEFORE workspace resolutionCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1085 # Step 3: Determine if cloud routing is neededCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1196 # Step 4: Local routing (default)COMMENT
LOWsrc/basic_memory/cli/auth.py272 # Step 1: Request device authorizationCOMMENT
LOWsrc/basic_memory/cli/auth.py277 # Step 2: Display user instructionsCOMMENT
LOWsrc/basic_memory/cli/auth.py280 # Step 3: Poll for tokenCOMMENT
LOWsrc/basic_memory/cli/auth.py288 # Step 4: Save tokensCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/core_commands.py231 # Step 1: Install rcloneCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/core_commands.py262 # Step 2: Get tenant info (scoped to the target workspace when given)COMMENT
LOWsrc/basic_memory/cli/commands/cloud/core_commands.py267 # Step 3: Generate credentials for that tenant's bucketCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/core_commands.py272 # Step 4: Configure the tenant's rclone remoteCOMMENT
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py76 # Step 1: Add external_id column as nullable firstCOMMENT
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py79 # Step 2: Generate UUIDs for existing rowsCOMMENT
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py97 # Step 3: Make external_id NOT NULLSTRING
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py105 # Step 4: Create unique index on project.external_id (idempotent)STRING
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py114 # Step 1: Add external_id column as nullable firstSTRING
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py117 # Step 2: Generate UUIDs for existing rowsSTRING
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py135 # Step 3: Make external_id NOT NULLSTRING
LOW…/g9a0b3c4d5e6_add_external_id_to_project_and_entity.py143 # Step 4: Create unique index on entity.external_id (idempotent)STRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py75 # Step 1: Add project_id column as nullable first (idempotent)COMMENT
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py79 # Step 2: Backfill project_id from entity.project_id via from_idCOMMENT
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py98 # Step 3: Make project_id NOT NULL and add foreign keySTRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py119 # Step 4: Create index on relation.project_id (idempotent)STRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py127 # Step 1: Add project_id column as nullable first (idempotent)STRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py131 # Step 2: Backfill project_id from entity.project_id via entity_idSTRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py150 # Step 3: Make project_id NOT NULL and add foreign keySTRING
LOW…/f8a9b2c3d4e5_add_pg_trgm_for_fuzzy_link_resolution.py171 # Step 4: Create index on observation.project_id (idempotent)STRING
AI Slop Vocabulary33 hits · 86 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_claude_plugin_hooks.py28# (plugin hooks dir, plugin-root template variable the harness substitutes)COMMENT
MEDIUMtests/test_claude_plugin_hooks.py55 # harness shell on both POSIX and Windows, and plugin roots can containCOMMENT
LOWtests/repository/test_project_repository.py135 # So just create a non-default projectCOMMENT
MEDIUMtests/cli/test_hook_command.py1409 # The operator verb `bm hook install` writes harness config and needs noCOMMENT
MEDIUMtests/cli/test_hook_command.py1412 # hook, so install still runs and actually writes the harness entries.COMMENT
MEDIUMtests/cli/test_hook_command.py1370 # must catch it — a hook still exits 0, never a non-zero status to the harness.COMMENT
MEDIUMtests/cli/test_hook_command.py1457 # run before the hook's own guard (it could return non-zero to the harness)COMMENT
MEDIUMtests/cli/test_hook_command.py1704 # The settings file is the user's whole harness config, not just ourCOMMENT
MEDIUMtests/cli/test_hook_command.py1772 # A user may keep their harness config private (0600); the atomic rewriteCOMMENT
MEDIUMintegrations/hermes/.github/workflows/release.yml7# git tag (`v*.*.*`) — NOT from __init__.py. This is robust to PRs thatCOMMENT
MEDIUMtest-int/mcp/test_edit_note_integration.py918 # own slug rather than the exact string, since the harness prefixes the project name.COMMENT
MEDIUMtest-int/semantic/litellm_live_harness.py348 # live calls when someone discovers the harness through `just --list`.COMMENT
MEDIUMtest-int/read_cache/conftest.py87 # construct their own 50ms clients, so keep this shared harness stable.COMMENT
MEDIUMscripts/validate_claude_plugin.py59 # Claude harness (settings-based config, session/coding_session types).COMMENT
LOWscripts/update_versions.py100# package release. Codex hook refs are managed by `just set-codex-hook-version`.COMMENT
LOWsrc/basic_memory/file_utils.py495 # No frontmatter, just return contentCOMMENT
LOWsrc/basic_memory/ignore_utils.py217 # If we can't read .gitignore, just use default patternsSTRING
MEDIUM…c/basic_memory/mcp/ui/html/search-results-tool-ui.html20`).replace(N1,"")}function Nw(e,t){return t=KL(t),KL(e)===t}function me(e,t,a,n,r,o){switch(a){case"children":typeof n==CODE
MEDIUMsrc/basic_memory/mcp/ui/html/note-preview-tool-ui.html20`).replace(r1,"")}function Jm(l,t){return t=er(t),er(l)===t}function Z(l,t,a,e,n,u){switch(a){case"children":typeof e=="CODE
MEDIUMsrc/basic_memory/mcp/tools/search.py794 """Search across all content in the knowledge base with comprehensive syntax support.STRING
MEDIUMsrc/basic_memory/mcp/tools/move_note.py946 # misleading the agent (#881 Gap 2). This is the robust backstop behindSTRING
MEDIUMsrc/basic_memory/mcp/resources/project_info.py23 """Get comprehensive information about a workspace-qualified Basic Memory project.STRING
MEDIUMsrc/basic_memory/cli/app.py46 # Trigger: a `hook` invocation (the advisory harness front door, SPEC-55).COMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py117 session_note_type: str # type stamped on this harness's checkpoint notesCODE
MEDIUMsrc/basic_memory/cli/commands/hook.py397 # --project-dir wins (the shim passes the harness's project directory soCOMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py1189# ``hook <verb> --harness <harness>`` suffix (rather than the launcher prefix)COMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py1266 # The ownership tag lives in the command's `hook <verb> --harness`COMMENT
MEDIUMsrc/basic_memory/hooks/envelope.py25# A harness session, identified by its producing surface and opaque session id.COMMENT
MEDIUMsrc/basic_memory/hooks/envelope.py30# V0 ships the three events exposed through supported harness hooks. The otherCOMMENT
MEDIUMsrc/basic_memory/hooks/envelope.py42# Actor when the harness runtime itself produced the event (vs a user actionCOMMENT
MEDIUMsrc/basic_memory/services/project_service.py677 # Update in database using robust lookupCOMMENT
MEDIUMsrc/basic_memory/services/project_service.py712 # Get project from database using robust lookupCOMMENT
MEDIUMsrc/basic_memory/services/project_service.py754 """Get comprehensive information about the specified Basic Memory project.STRING
Modern Structural Boilerplate61 hits · 65 pts
SeverityFileLineSnippetContext
LOWtests/test_alembic_env.py24 def set_main_option(self, name: str, value: str) -> None:CODE
LOWtests/test_read_cache_telemetry.py46 def set_attribute(self, name: str, value: object) -> None:CODE
LOWtests/test_read_cache_telemetry.py49 def set_attributes(self, attributes: dict[str, object]) -> None:CODE
LOWtests/mcp/test_client_info.py27 async def set_state(self, key: str, value: object) -> None:CODE
LOWtests/mcp/conftest.py33 async def set_state(self, key: str, value: object, **kwargs) -> None:CODE
LOWtests/mcp/test_tool_telemetry.py22 def set_attributes(self, attrs: dict[str, Any]) -> None:CODE
LOWtests/mcp/test_tool_telemetry.py25 def set_attribute(self, key: str, value) -> None:CODE
LOWtests/mcp/test_client_telemetry.py27 def set_attribute(self, key: str, value) -> None:CODE
LOWtests/mcp/test_client_telemetry.py30 def set_attributes(self, new_attrs: dict[str, Any]) -> None:CODE
LOWtests/mcp/test_project_context_scoped_key.py21 async def set_state(self, key: str, value: object) -> None:CODE
LOWtest-int/test_relation_generation_concurrency.py334 async def update_source() -> None:CODE
LOWbenchmarks/src/basic_memory_benchmarks/__init__.py5__all__ = ["main"]CODE
LOWbenchmarks/src/basic_memory_benchmarks/llm/__init__.py12__all__ = [CODE
LOWscripts/update_versions.py80def set_server_version(data: dict[str, Any], version: str) -> None:CODE
LOWscripts/update_versions.py87def set_claude_marketplace_version(data: dict[str, Any], version: str) -> None:CODE
LOWscripts/update_versions.py95def set_package_version(data: dict[str, Any], version: str) -> None:CODE
LOWscripts/update_versions.py115def _update_core(version: str, *, dry_run: bool) -> None:CODE
LOWscripts/update_versions.py129def _update_packages(version: str, *, dry_run: bool) -> None:CODE
LOWscripts/update_versions.py179def update_versions(raw_version: str, *, scope: str = "all", dry_run: bool) -> None:CODE
LOWsrc/basic_memory/config.py196 def set_default_project(self, name: str) -> None:CODE
LOWsrc/basic_memory/telemetry.py64__all__ = ["configure_telemetry", "get_logfire_handler"]CODE
LOWsrc/basic_memory/config_models.py844 def set_project_mode(self, project_name: str, mode: ProjectMode) -> None:CODE
LOWsrc/basic_memory/project_resolver.py117__all__ = [CODE
LOWsrc/basic_memory/repository/__init__.py11__all__ = [CODE
LOWsrc/basic_memory/repository/search_repository.py257__all__ = [CODE
LOWsrc/basic_memory/repository/repository.py50 def _set_project_id_if_needed(self, model: T) -> None:CODE
LOW…asic_memory/importers/claude_conversations_importer.py12logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/importers/claude_projects_importer.py11logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/importers/__init__.py23__all__ = [CODE
LOWsrc/basic_memory/importers/memory_json_importer.py10logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/importers/base.py19logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/importers/chatgpt_importer.py12logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/markdown/__init__.py13__all__ = [CODE
LOWsrc/basic_memory/runtime/note_content.py88__all__ = [CODE
LOWsrc/basic_memory/mcp/container.py107def set_container(container: McpContainer) -> None:CODE
LOWsrc/basic_memory/mcp/async_client.py337def set_client_factory(factory: Callable[..., AbstractAsyncContextManager[AsyncClient]]) -> None:CODE
LOWsrc/basic_memory/mcp/project_context.py106def set_workspace_provider(provider: Callable[[], Awaitable[list[WorkspaceInfo]]]) -> None:CODE
LOWsrc/basic_memory/mcp/clients/__init__.py23__all__ = [CODE
LOWsrc/basic_memory/mcp/ui/__init__.py5__all__ = ["get_ui_variant", "load_html", "load_variant_html"]CODE
LOWsrc/basic_memory/mcp/tools/__init__.py37__all__ = [CODE
LOWsrc/basic_memory/mcp/resources/__init__.py5__all__ = ["project_info"]CODE
LOWsrc/basic_memory/mcp/prompts/__init__.py15__all__ = [CODE
LOWsrc/basic_memory/models/__init__.py15__all__ = [CODE
LOWsrc/basic_memory/cli/container.py68def set_container(container: CliContainer) -> None:CODE
LOWsrc/basic_memory/cli/commands/__init__.py18__all__ = [CODE
LOWsrc/basic_memory/schemas/__init__.py59__all__ = [CODE
LOWsrc/basic_memory/schemas/v2/__init__.py27__all__ = [CODE
LOWsrc/basic_memory/picoschema/__init__.py34__all__ = [CODE
LOWsrc/basic_memory/hooks/adapters/__init__.py28__all__ = [CODE
LOWsrc/basic_memory/api/__init__.py5__all__ = ["app"]CODE
LOWsrc/basic_memory/api/container.py156def set_container(container: ApiContainer) -> None:CODE
LOWsrc/basic_memory/api/v2/__init__.py26__all__ = [CODE
LOWsrc/basic_memory/api/v2/routers/__init__.py14__all__ = [CODE
LOWsrc/basic_memory/api/v2/routers/importer_router.py30logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/deps/__init__.py114__all__ = [CODE
LOWsrc/basic_memory/read_cache/__init__.py22__all__ = [CODE
LOW…ions/bcdbd5a942ca_relation_to_id_set_null_on_delete.py45def _set_to_id_ondelete(ondelete: str) -> None:CODE
LOWsrc/basic_memory/services/project_service.py447 async def set_default_project(self, name: str) -> None:CODE
LOWsrc/basic_memory/services/directory_service.py22logger = logging.getLogger(__name__)CODE
LOWsrc/basic_memory/services/__init__.py8__all__ = ["BaseService", "FileService", "EntityService", "ProjectService"]CODE
1 more matches not shown…
Over-Commented Block45 hits · 42 pts
SeverityFileLineSnippetContext
LOWdocker-compose-postgres.yml1# Docker Compose configuration for Basic Memory with PostgreSQLCOMMENT
LOWdocker-compose-postgres.yml41COMMENT
LOWdocker-compose.yml61 interval: 30sCOMMENT
LOWdocker-compose.yml81COMMENT
LOWplugins/claude-code/hooks/session_start.py1#!/usr/bin/env -S uv run --quiet --scriptCOMMENT
LOWplugins/claude-code/hooks/pre_compact.py1#!/usr/bin/env -S uv run --quiet --scriptCOMMENT
LOWplugins/codex/hooks/session_start.py1#!/usr/bin/env -S uv run --quiet --scriptCOMMENT
LOWplugins/codex/hooks/pre_compact.py1#!/usr/bin/env -S uv run --quiet --scriptCOMMENT
LOWtests/markdown/test_entity_parser.py341# ---COMMENT
LOWtests/mcp/test_tool_resource.py241# Skip testing the large document size handling since it would requireCOMMENT
LOWtests/db/test_issue_254_foreign_key_constraints.py161 # Document the current error for trackingCOMMENT
LOWdocs/ai-assistant-guide-extended.md101# "note_count": 156,COMMENT
LOWintegrations/hermes/__init__.py281 if _schema["name"] in _GLOBAL_TOOLS:COMMENT
LOWintegrations/hermes/__init__.py1841#COMMENT
LOWintegrations/hermes/.github/workflows/release.yml1name: releaseCOMMENT
LOW.github/workflows/claude.yml1name: Claude CodeCOMMENT
LOW.github/workflows/claude.yml101 # Allow the interpreters @claude needs to self-verify a change beforeCOMMENT
LOWsrc/basic_memory/db.py21)COMMENT
LOWsrc/basic_memory/db.py341COMMENT
LOWsrc/basic_memory/db.py601 # Why: temporary aiosqlite worker threads can outlive CLI command executionCOMMENT
LOWsrc/basic_memory/config_models.py901 """Ensure configuration is valid after initialization."""COMMENT
LOWsrc/basic_memory/repository/search_query.py21 r"\u4e00-\u9fff" # CJK Unified IdeographsCOMMENT
LOWsrc/basic_memory/repository/search_query.py41# the guard at all.COMMENT
LOWsrc/basic_memory/repository/search_repository_base.py2521 min_similarity=min_similarity,COMMENT
LOWsrc/basic_memory/repository/note_content_repository.py301 # write is the single conditional UPDATE whose rowcount decides theCOMMENT
LOWsrc/basic_memory/repository/fastembed_provider.py241 # snapshot dir exists but the model artifact file is missing — theCOMMENT
LOWsrc/basic_memory/mcp/tools/search.py981 # has_more=True with no reachable page; a negative page_size becomes anCOMMENT
LOWsrc/basic_memory/mcp/tools/search.py1001 # Avoid mutable-default-argument footguns. Treat None as "no filter".COMMENT
LOWsrc/basic_memory/mcp/tools/search.py1181 "`tags`, `status`, `note_types`, `entity_types`, `categories`, "COMMENT
LOWsrc/basic_memory/mcp/tools/read_note.py261 cast(dict[str, object], result)COMMENT
LOWsrc/basic_memory/mcp/tools/move_note.py941 # Trigger: the resulting file_path differs from the destination the callerCOMMENT
LOWsrc/basic_memory/cli/app.py41) -> None:COMMENT
LOWsrc/basic_memory/cli/commands/project.py941 result = run_with_cleanup(_remove_project())COMMENT
LOWsrc/basic_memory/cli/commands/cloud/webdav_transfer.py361# user's own editor. Acting on the stale classification would destroy a note thatCOMMENT
LOWsrc/basic_memory/index/note_content_materialization.py161 """COMMENT
LOWsrc/basic_memory/alembic/env.py21# already inside a running loop (pytest-asyncio, the API lifespan) take theCOMMENT
LOWsrc/basic_memory/alembic/alembic.ini1# A generic, single database configuration.COMMENT
LOWsrc/basic_memory/alembic/alembic.ini21# Any required deps can installed by adding `alembic[tz]` to the pip requirementsCOMMENT
LOWsrc/basic_memory/alembic/alembic.ini41# The path separator used here should be the separator specified by "version_path_separator" below.COMMENT
LOWsrc/basic_memory/alembic/alembic.ini61COMMENT
LOW…c/basic_memory/indexing/note_materialization_runner.py521 # current_relation_generation_statement. With no read locks held, theCOMMENT
LOWsrc/basic_memory/indexing/file_index_checking.py261 # Move-orphan gate (#1601). Both sources must be set for the gate to run: a would-be *create*COMMENT
LOW…basic_memory/indexing/accepted_note_mutation_runner.py741 # current_relation_generation_statement; accept_write's compare-and-setCOMMENT
LOWsrc/basic_memory/services/link_resolver.py401 # Avoid duplicates (permalink match might also be in title matches)COMMENT
LOWsrc/basic_memory/services/project_service.py561COMMENT
AI Structural Patterns45 hits · 40 pts
SeverityFileLineSnippetContext
LOWtests/repository/test_hybrid_fusion.py73CODE
LOWtests/repository/test_vector_pagination.py58CODE
LOWtests/repository/test_vector_threshold.py62CODE
LOWtests/repository/test_semantic_vector_sync.py48CODE
LOWtests/repository/test_semantic_search_base.py79CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py212CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py269CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py433CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py770CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py988CODE
LOWsrc/basic_memory/repository/sqlite_search_repository.py1159CODE
LOW…/basic_memory/repository/postgres_search_repository.py403CODE
LOW…/basic_memory/repository/postgres_search_repository.py805CODE
LOW…/basic_memory/repository/postgres_search_repository.py1101CODE
LOW…/basic_memory/repository/postgres_search_repository.py1294CODE
LOWsrc/basic_memory/repository/search_trace.py247CODE
LOWsrc/basic_memory/repository/search_repository.py71CODE
LOWsrc/basic_memory/repository/search_repository.py94CODE
LOWsrc/basic_memory/repository/search_repository_base.py299CODE
LOWsrc/basic_memory/repository/search_repository_base.py342CODE
LOWsrc/basic_memory/repository/litellm_provider.py109CODE
LOWsrc/basic_memory/repository/repository.py412CODE
LOWsrc/basic_memory/mcp/tools/edit_note.py361CODE
LOWsrc/basic_memory/mcp/tools/ui_sdk.py32CODE
LOWsrc/basic_memory/mcp/tools/utils.py228CODE
LOWsrc/basic_memory/mcp/tools/utils.py325CODE
LOWsrc/basic_memory/mcp/tools/utils.py435CODE
LOWsrc/basic_memory/mcp/tools/utils.py549CODE
LOWsrc/basic_memory/mcp/tools/utils.py659CODE
LOWsrc/basic_memory/mcp/tools/utils.py773CODE
LOWsrc/basic_memory/mcp/tools/write_note.py69CODE
LOWsrc/basic_memory/mcp/tools/search.py703CODE
LOWsrc/basic_memory/mcp/tools/recent_activity.py48CODE
LOWsrc/basic_memory/mcp/tools/build_context.py153CODE
LOWsrc/basic_memory/mcp/tools/list_directory.py29CODE
LOWsrc/basic_memory/cli/commands/ci.py49CODE
LOWsrc/basic_memory/cli/commands/inspect.py535CODE
LOWsrc/basic_memory/cli/commands/tool.py584CODE
LOWsrc/basic_memory/cli/commands/tool.py857CODE
LOWsrc/basic_memory/cli/commands/tool.py947CODE
LOWsrc/basic_memory/cli/commands/tool.py1033CODE
LOWsrc/basic_memory/cli/commands/tool.py1120CODE
LOWsrc/basic_memory/cli/commands/project.py736CODE
LOWsrc/basic_memory/cli/commands/cloud/rclone_commands.py702CODE
LOWsrc/basic_memory/services/context_service.py110CODE
Fake / Example Data29 hits · 34 pts
SeverityFileLineSnippetContext
LOWtests/utils/test_frontmatter_obsidian_compatible.py110 post.metadata["authors"] = ["John Doe", "Jane Smith"]CODE
LOWtests/mcp/test_project_context.py722 name="Acme Corp",CODE
LOWtests/mcp/test_tool_project_management.py1126 cloud_workspace_name="Acme Corp",CODE
LOWtests/mcp/test_tool_project_management.py1137 assert merged[0]["workspace_name"] == "Acme Corp"CODE
LOWtests/picoschema/test_diff.py143 notes[0] = _note("n0", observations=[Obs("name", "P0"), Obs("fax", "555-1234")])CODE
LOWtests/picoschema/test_validator.py167 result = validate_note("test-note", schema, [], [Rel("works_at", "Acme Corp")])CODE
LOWtests/picoschema/test_validator.py171 assert result.field_results[0].values == ["Acme Corp"]CODE
LOWtests/picoschema/test_validator.py265 relations = [Rel("works_at", "Acme Corp"), Rel("friends_with", "Bob")]CODE
LOWdocs/ai-assistant-guide-extended.md676 "email": "user@example.com",CODE
LOWintegrations/openclaw/openclaw.plugin.json38 "placeholder": "my-agent",CODE
LOWintegrations/openclaw/openclaw.plugin.json43 "placeholder": "memory/",CODE
LOWintegrations/openclaw/openclaw.plugin.json48 "placeholder": "MEMORY.md",CODE
LOWintegrations/openclaw/openclaw.plugin.json53 "placeholder": "bm",CODE
LOWintegrations/openclaw/openclaw.plugin.json63 "placeholder": "10",CODE
LOWintegrations/openclaw/openclaw.plugin.json73 "placeholder": "Check for active tasks and recent activity...",CODE
LOWintegrations/openclaw/openclaw.plugin.json84 "placeholder": ".",CODE
LOWintegrations/openclaw/tools/list-workspaces.test.ts63 name: "Acme Corp",CODE
LOWintegrations/openclaw/tools/list-workspaces.test.ts93 name: "Acme Corp",CODE
LOWtest-int/mcp/test_param_aliases_integration.py148 "find_text": "placeholder",CODE
LOWtest-int/mcp/test_read_content_integration.py302This is section {i + 1} with substantial content. Lorem ipsum dolor sit amet,CODE
LOWtest-int/mcp/test_read_content_integration.py302This is section {i + 1} with substantial content. Lorem ipsum dolor sit amet,CODE
LOWtest-int/mcp/test_read_content_integration.py341 assert "Lorem ipsum" in contentSTRING
LOWtest-int/mcp/test_long_relation_type_integration.py30 "**Lorem ipsum dolor sit amet** — consectetur adipiscing elit, sed do eiusmod "CODE
LOWtest-int/mcp/test_long_relation_type_integration.py30 "**Lorem ipsum dolor sit amet** — consectetur adipiscing elit, sed do eiusmod "CODE
LOWskills/memory-research/SKILL.md50search_notes(query="Acme Corp")CODE
LOWskills/memory-research/SKILL.md122 title="Acme Corp",CODE
LOWskills/memory-research/SKILL.md217 identifier="Acme Corp",CODE
LOW…c/basic_memory/mcp/ui/html/search-results-tool-ui.html20`).replace(N1,"")}function Nw(e,t){return t=KL(t),KL(e)===t}function me(e,t,a,n,r,o){switch(a){case"children":typeof n==CODE
LOWsrc/basic_memory/mcp/ui/html/note-preview-tool-ui.html20`).replace(r1,"")}function Jm(l,t){return t=er(t),er(l)===t}function Z(l,t,a,e,n,u){switch(a){case"children":typeof e=="CODE
Modern AI Meta-Vocabulary6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml192 "*/services/initialization.py", # Startup orchestration + background tasks (watchers); exercised indirectly in entryCODE
MEDIUMtest-int/BENCHMARKS.md77### Optional guardrails (recommended for nightly runs only)COMMENT
MEDIUM…ic_memory_benchmarks/providers/baseline_fullcontext.py26# with room for prompt scaffolding. LongMemEval-S groups (~115K tokens) fit.COMMENT
MEDIUMsrc/basic_memory/repository/search_repository_base.py1646 # Shared semantic search: sync_entity_vectors orchestrationCOMMENT
MEDIUMsrc/basic_memory/repository/search_repository_base.py598 # Compatibility: focused orchestration tests and third-party subclassesCOMMENT
MEDIUMsrc/basic_memory/mcp/async_client.py330# Optional factory override for dependency injection.COMMENT
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippetContext
CRITICALintegrations/hermes/tests/test_prefetch.py105 timeout = p._actor.call.call_args.kwargs.get("timeout") or p._actor.call.call_args[1].get(CODE
Dead Code5 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMtests/mcp/test_project_context.py3150CODE
MEDIUMtests/mcp/test_tool_edit_note.py1085CODE
MEDIUMtests/mcp/test_tool_edit_note.py1286CODE
MEDIUMtests/mcp/tools/test_search_notes_multi_project.py182CODE
MEDIUMtests/indexing/test_forward_reference_resolution.py427CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHsrc/basic_memory/utils.py813 # once a parent segment stays ambiguous (kept as requested), a deeperCOMMENT
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtest-int/mcp/test_edit_note_integration.py647 assert "def test_function():" in contentCODE
LOWtest-int/mcp/test_edit_note_integration.py605def test_function():CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdocker-compose-postgres.yml7# Usage:COMMENT