AI Slop Code RIsk Monitor

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 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for basicmachines-co/basic-memory, a Python project with 4,132 GitHub stars. SynthScan examined 461,120 lines of code across 1652 source files, recording 11485 pattern matches distributed across 24 syntactic categories. The legacy adjusted pattern signal is 28.1 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

28.1
Adjusted Signal
28.1
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
4.1K
Stars
Python
Language
461.1K
Lines of Code
1.7K
Files
11.5K
Pattern Hits
2026-10-12
Scan Date
0.17
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 65.9/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 11.8/100 · LOW

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

Agent Over-Engineering Ratio 66.4/100 · HIGH

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

PR Review Velocity Impact 77.6/100 · CRITICAL

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

What These Metrics Mean

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

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 279MEDIUM 448LOW 10757

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

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

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers8843 hits · 8151 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
LOW⚡plugins/claude-code/hooks/test_claude_session_start.py102def test_unresolvable_bm_bin_fails_open(tmp_path: Path) -> None:CODE
LOW⚡plugins/claude-code/hooks/test_claude_session_start.py108def test_in_process_cli_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOW⚡plugins/claude-code/hooks/test_claude_session_start.py118def test_dependency_floor_matches_package_version() -> None:CODE
LOW⚡plugins/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
LOW⚡plugins/claude-code/hooks/test_claude_pre_compact.py102def test_unresolvable_bm_bin_fails_open(tmp_path: Path) -> None:CODE
LOW⚡plugins/claude-code/hooks/test_claude_pre_compact.py108def test_in_process_cli_fails_open_with_empty_home(tmp_path: Path) -> None:CODE
LOW⚡plugins/claude-code/hooks/test_claude_pre_compact.py118def test_dependency_floor_matches_package_version() -> None:CODE
LOW⚡plugins/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
LOW⚡tests/test_coerce.py15 def test_native_list_passthrough(self):CODE
LOW⚡tests/test_coerce.py21 def test_single_string_wrapped(self):CODE
LOW⚡tests/test_coerce.py24 def test_non_json_string_wrapped(self):CODE
LOW⚡tests/test_coerce.py27 def test_json_object_string_wrapped(self):CODE
LOW⚡tests/test_coerce.py39 def test_none_parses_to_empty_list(self):CODE
LOW⚡tests/test_coerce.py45 def test_list_with_comma_element_splits(self):CODE
LOW⚡tests/test_coerce.py48 def test_plain_list_passthrough(self):CODE
LOW⚡tests/test_coerce.py54 def test_int_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py58 def test_dict_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py62 def test_int_list_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py67 def test_dict_list_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py71 def test_mixed_list_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py76 def test_json_array_string_with_int_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py81 def test_json_array_string_with_dict_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py85 def test_json_array_string_mixed_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py90 def test_json_array_string_all_strings_still_parses(self):CODE
LOW⚡tests/test_coerce.py100 def test_native_dict_passthrough(self):CODE
LOW⚡tests/test_coerce.py106 def test_non_json_string_passthrough(self):CODE
LOW⚡tests/test_coerce.py110 def test_json_array_string_passthrough(self):CODE
LOW⚡tests/test_coerce.py123 def test_none_returns_empty_list(self):CODE
LOW⚡tests/test_coerce.py128 def test_single_string_wraps_as_one_element(self):CODE
LOW⚡tests/test_coerce.py135 def test_comma_string_with_spaces_strips(self):CODE
LOW⚡tests/test_coerce.py143 def test_json_array_string_single_element(self):CODE
LOW⚡tests/test_coerce.py146 def test_json_array_string_with_comma_elements(self):CODE
LOW⚡tests/test_coerce.py152 def test_plain_list_passthrough(self):CODE
LOW⚡tests/test_coerce.py155 def test_list_with_comma_element_splits(self):CODE
LOW⚡tests/test_coerce.py159 def test_list_with_multiple_comma_elements(self):CODE
LOW⚡tests/test_coerce.py164 def test_hash_prefix_preserved(self):CODE
LOW⚡tests/test_coerce.py168 def test_hash_prefix_in_comma_string_preserved(self):CODE
LOW⚡tests/test_coerce.py173 def test_int_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py176 def test_dict_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py182 def test_int_list_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py187 def test_mixed_list_passthrough_for_pydantic_rejection(self):CODE
LOW⚡tests/test_coerce.py192 def test_dict_list_passthrough_for_pydantic_rejection(self):CODE
LOWtests/conftest.py110def _configured_postgres_sync_url() -> str | None:CODE
LOWtests/conftest.py151def _resolve_postgres_sync_url(postgres_container) -> str:CODE
LOWtests/conftest.py160async def _reset_postgres_test_schema(engine: AsyncEngine, async_url: str) -> None:CODE
LOWtests/conftest.py235def suppress_logfire_no_config_warning(monkeypatch) -> None:CODE
LOWtests/conftest.py262async 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
8783 more matches not shown…
Unused Imports958 hits · 844 pts
SeverityFileLineSnippetContext
LOWtests/test_man_pages.py3CODE
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
LOWtests/repository/test_project_partition_repository.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
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_project_partition.py3CODE
LOWtests/runtime/test_deleted_note_response.py1CODE
LOWtests/document_ingestion/test_markitdown_worker.py3CODE
LOWtests/document_ingestion/test_csv_extractor.py3CODE
LOWtests/document_ingestion/test_raw_document.py3CODE
LOWtests/document_ingestion/test_pdf_inspector_worker.py3CODE
LOWtests/document_ingestion/office_fixtures.py8CODE
LOWtests/document_ingestion/test_local_runtime.py3CODE
LOWtests/document_ingestion/test_markitdown_extractor.py3CODE
LOWtests/document_ingestion/test_legacy_sidecars.py9CODE
LOWtests/document_ingestion/test_pdf_inspector.py3CODE
LOWtests/document_ingestion/test_document_extractors.py3CODE
LOWtests/document_ingestion/process_fakes.py3CODE
LOWtests/mcp/test_client_info.py3CODE
LOWtests/mcp/test_project_context.py7CODE
LOWtests/mcp/test_project_context_telemetry.py3CODE
LOWtests/mcp/test_note_resources.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/mcp/test_man_resources.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_document.py3CODE
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
898 more matches not shown…
Decorative Section Separators205 hits · 767 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py61# =============================================================================COMMENT
MEDIUMtests/conftest.py63# =============================================================================COMMENT
MEDIUM⚡tests/repository/test_relation_repository.py456# -------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/repository/test_relation_repository.py458# -------------------------------------------------------------------------COMMENT
MEDIUMtests/repository/test_entity_repository.py969# -------------------------------------------------------------------------COMMENT
MEDIUMtests/repository/test_entity_repository.py971# -------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/utils/test_file_utils.py339# =============================================================================COMMENT
MEDIUM⚡tests/utils/test_file_utils.py341# =============================================================================COMMENT
MEDIUM⚡tests/utils/test_file_utils.py547# =============================================================================COMMENT
MEDIUM⚡tests/utils/test_file_utils.py549# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py627# =============================================================================COMMENT
MEDIUMtests/utils/test_file_utils.py629# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py24# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py26# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py141# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py143# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py396# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py398# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py471# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py473# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py506# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py508# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py550# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_basic_memory_diagnostics.py552# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py22# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py24# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py91# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py93# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py132# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py134# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py185# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py187# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py223# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py225# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py260# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py262# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py298# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py300# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py353# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note_kebab_filenames.py355# =============================================================================COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note.py33# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/mcp/test_tool_write_note.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_write_note.py1704# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/mcp/test_tool_write_note.py1706# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py54# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py56# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py77# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py79# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py153# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py155# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py262# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py264# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py288# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py290# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py462# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_config_command.py464# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_cli_posix_verbs.py371# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_cli_posix_verbs.py373# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_cli_posix_verbs.py407# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/cli/test_cli_posix_verbs.py409# ---------------------------------------------------------------------------COMMENT
145 more matches not shown…
Self-Referential Comments176 hits · 547 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py329 # Create a new ConfigManager that uses the test home directoryCOMMENT
MEDIUMtests/test_config.py544 # Create a test ConfigManager instanceCOMMENT
MEDIUMtests/test_config.py1057 # Create a project pathCOMMENT
MEDIUMtests/repository/test_search_repository.py584 # Create a search index row with project_idCOMMENT
MEDIUMtests/repository/test_observation_repository.py400 # Create a test observationCOMMENT
MEDIUM⚡tests/repository/test_project_info_repository.py14 # Create a ProjectInfoRepositoryCOMMENT
MEDIUM⚡tests/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
MEDIUM⚡tests/repository/test_search_repository_edit_bug_fix.py191 # Create a separate in-memory database for this testCOMMENT
MEDIUM⚡tests/repository/test_search_repository_edit_bug_fix.py195 # Create the database schemaCOMMENT
MEDIUMtests/repository/test_entity_repository.py203 # Create a target entity and relationCOMMENT
MEDIUMtests/repository/test_entity_repository.py941 # Create a second projectCOMMENT
MEDIUMtests/repository/test_entity_repository.py1007 # 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.py89 # Create a file without note_type in frontmatterCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py116 # Create a file with empty frontmatterCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py142 # Create a file with no frontmatter at allCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py167 # Create a file with null/None note_typeCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py193 # Create a file with null titleCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py219 # Create a file with empty titleCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py245 # Create a file with string "None" as title (common in templates)COMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py271 # Create a valid fileCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py312 # Create a file with completely broken YAML that will trigger the fallback pathCOMMENT
MEDIUMtests/markdown/test_entity_parser_error_handling.py354 # Create a file with user's custom frontmatter (like the bug report)COMMENT
MEDIUMtests/markdown/test_entity_parser.py241 # Create a test file in the project directorySTRING
MEDIUM⚡tests/utils/test_validate_project_path.py443 # Create a more complex directory structureCOMMENT
MEDIUM⚡tests/utils/test_validate_project_path.py452 # Create a sensitive file in the sibling directoryCOMMENT
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_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.py142 # Create a note to deleteCOMMENT
MEDIUMtests/mcp/test_tool_search.py27 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py61 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py92 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py126 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_search.py291 # Create a test noteCOMMENT
MEDIUMtests/mcp/test_tool_view_note.py195 # Create a note with no clear title structureCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py489 # Create the note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py514 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py536 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py558 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py638 # Create a noteCOMMENT
MEDIUMtests/mcp/test_tool_edit_note.py1044 # Create a note firstCOMMENT
MEDIUMtests/mcp/test_tool_move_note.py829 # Create a note to test different identifier formatsCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py356 # Create a note with custom permalink in frontmatterCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py1259 # Create a note with all features to ensure security validation doesn't interfereCOMMENT
MEDIUMtests/mcp/test_tool_write_note.py1330 # Create a very long path traversal attackCOMMENT
MEDIUM⚡tests/mcp/test_tool_project_management.py120 # Create a project through the tool (exercises POST + response formatting).COMMENT
116 more matches not shown…
Docstring Block Structure98 hits · 490 pts
SeverityFileLineSnippetContext
HIGHsrc/basic_memory/utils.py23Normalize project path by stripping mount point prefix. In cloud deployments, the S3 bucket is mounted at /app/dataSTRING
HIGHsrc/basic_memory/utils.py80Generate a stable permalink from a file path. Args: file_path: Original file path (str, Path, or PathLike) STRING
HIGHsrc/basic_memory/file_utils.py59 Compute SHA-256 checksum of content. Args: content: Content to hash (either text string or bytes) STRING
HIGHsrc/basic_memory/file_utils.py431 Parse YAML frontmatter from content. Args: content: Content with YAML frontmatter Returns: STRING
HIGHsrc/basic_memory/file_utils.py472 Remove YAML frontmatter from content. Args: content: Content with frontmatter strip: When TrueSTRING
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.py24 Convert markdown entity to model. Does not include relations. Args: file_path: Path to the markdown fiSTRING
HIGHsrc/basic_memory/mcp/project_context.py730Get and validate project, setting it in context if available. Args: client: HTTP client for API calls STRING
HIGHsrc/basic_memory/mcp/project_context.py809Resolve project and normalized path for memory:// identifiers. Args: strict_project_routing: Reject a memorSTRING
HIGHsrc/basic_memory/mcp/project_context.py1813Resolve project, create correctly-routed client, and validate project. Solves the bootstrap problem: we need to knoSTRING
HIGHsrc/basic_memory/mcp/clients/memory.py58Build context from a memory path. Args: path: The path to build context for (without memory:// prefSTRING
HIGHsrc/basic_memory/mcp/clients/memory.py114Get 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.py121Search 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.py90Create a new entity. Args: entity_data: Entity data including title, content, folder, etc. STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py127Update an existing entity (full replacement). Args: entity_id: Entity external_id (UUID) STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py165Get an entity by ID, optionally sliced server-side. Args: entity_id: Entity external_id (UUID) STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py237Partially update an entity. Args: entity_id: Entity external_id (UUID) patch_data: PartSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py275Delete an entity. Args: entity_id: Entity external_id (UUID) Returns: DeleteEnSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py303Move an entity to a new location. Args: entity_id: Entity external_id (UUID) destinatioSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py335Move all entities in a directory to a new location. Args: source_directory: Source directory path (STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py368Delete all entities in a directory. Args: directory: Directory path to delete (relative to project STRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py399Index a markdown file that exists on disk but is not indexed yet. Args: file_path: Markdown file paSTRING
HIGHsrc/basic_memory/mcp/clients/knowledge.py480Resolve 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.py183Read 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.py35View 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.py507Edit an existing markdown note in the knowledge base. Makes targeted changes to existing notes without rewriting thSTRING
HIGHsrc/basic_memory/mcp/tools/delete_note.py164Delete a note or directory from the knowledge base. Permanently removes a note or directory from the specified projSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py372Make a GET request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use url:STRING
HIGHsrc/basic_memory/mcp/tools/utils.py480Make a PUT request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use url:STRING
HIGHsrc/basic_memory/mcp/tools/utils.py597Make a PATCH request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use urSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py719Make a POST request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use urlSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py907Resolve a string identifier to an entity external_id using the v2 API. Resolution is strict: only an exact externalSTRING
HIGHsrc/basic_memory/mcp/tools/utils.py958Make a DELETE request and handle errors appropriately. Args: client: The HTTPX AsyncClient to use uSTRING
HIGHsrc/basic_memory/mcp/tools/write_note.py297Write a markdown note to the knowledge base. Creates a markdown note with semantic observations and relations. STRING
HIGHsrc/basic_memory/mcp/tools/search.py1194Search across all content in the knowledge base with comprehensive syntax support. This tool searches the knowledgeSTRING
HIGHsrc/basic_memory/mcp/tools/read_note.py113Return 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.py80Get recent activity for one project. Project Resolution: The server resolves projects in this order: 1. SinSTRING
HIGHsrc/basic_memory/mcp/tools/move_note.py460Move 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.py243Get context needed to continue a discussion within a specific project. This tool enables natural continuation of diSTRING
HIGHsrc/basic_memory/mcp/tools/project_management.py790Delete a Basic Memory project. Removes a project from Basic Memory's configuration and database records. Local STRING
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.py262Validate notes against their resolved schema. Validates a specific note (by identifier), all notes of a given type,STRING
HIGHsrc/basic_memory/mcp/tools/schema.py404Analyze existing notes and suggest a schema definition. Examines observation categories and relation types across aSTRING
HIGHsrc/basic_memory/mcp/tools/schema.py534Detect 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.py309One-way sync: local → cloud. Makes cloud identical to local using rclone sync. Cloud files matching the .bmignoSTRING
HIGHsrc/basic_memory/cli/commands/cloud/rclone_commands.py717Two-way sync: local ↔ cloud. Uses rclone bisync with balanced defaults: - conflict_resolve: newer (auto-resolveSTRING
38 more matches not shown…
Empty Error Handlers70 hits · 350 pts
SeverityFileLineSnippetContext
HIGHplugins/claude-code/hooks/session_start.py66except BaseException: # noqa: BLE001 - the documented fail-open boundaryCODE
HIGHplugins/claude-code/hooks/pre_compact.py66except BaseException: # noqa: BLE001 - the documented fail-open boundaryCODE
HIGHplugins/codex/hooks/session_start.py40except BaseException: # noqa: BLE001 - the documented fail-open boundaryCODE
HIGHplugins/codex/hooks/pre_compact.py40except BaseException: # noqa: BLE001 - the documented fail-open boundaryCODE
HIGHtests/utils/test_validate_project_path.py283except (ValueError, OSError):CODE
HIGHtests/utils/test_validate_project_path.py266except (ValueError, OSError):CODE
HIGHtests/utils/test_validate_project_path.py316except (UnicodeError, OSError):CODE
HIGHtests/mcp/test_tool_build_context.py200except ToolError:CODE
HIGHtests/mcp/test_tool_move_note.py322except Exception:CODE
HIGHtests/mcp/test_tool_move_note.py630except Exception:CODE
HIGHtests/mcp/test_tool_move_note.py712except Exception:CODE
HIGHtests/mcp/test_tool_read_content.py291except ToolError:CODE
HIGHtests/cli/test_routing.py124except RuntimeError:CODE
HIGHtests/services/test_project_service.py1265except ValueError:CODE
HIGHtests/services/test_project_service.py1688except (ValueError, KeyError):CODE
HIGHtests/services/test_project_service.py1747except (ValueError, KeyError):CODE
HIGHtests/services/test_project_service.py1120except ValueError:CODE
HIGHtests/services/test_project_service.py1632except Exception:CODE
HIGHtests/services/test_project_service.py1815except Exception:CODE
HIGHtests/services/test_project_service.py144except Exception:CODE
HIGHtests/services/test_project_service.py800except Exception:CODE
HIGHtests/services/test_project_service.py991except Exception:CODE
HIGHtests/services/test_project_removal_bug.py150except Exception:CODE
HIGHintegrations/hermes/__init__.py592except Exception:CODE
HIGHintegrations/hermes/__init__.py1976except Exception:CODE
HIGHintegrations/hermes/__init__.py679except Exception:CODE
HIGHintegrations/hermes/__init__.py760except Exception:CODE
HIGHintegrations/hermes/__init__.py766except Exception:CODE
HIGHintegrations/hermes/__init__.py1457except Exception:CODE
HIGHintegrations/hermes/__init__.py582except Exception:CODE
HIGHintegrations/hermes/__init__.py1946except Exception:CODE
HIGHbenchmarks/tests/providers/test_mem0_normalization.py90except Exception:CODE
HIGHbenchmarks/src/basic_memory_benchmarks/runner.py83except Exception:CODE
HIGHbenchmarks/src/basic_memory_benchmarks/runner.py164except Exception:CODE
HIGHbenchmarks/src/basic_memory_benchmarks/bm_runtime.py126except asyncio.CancelledError:CODE
HIGH…ks/src/basic_memory_benchmarks/providers/mem0_local.py186except Exception:CODE
HIGH…ks/src/basic_memory_benchmarks/providers/mem0_local.py211except Exception:CODE
HIGH…ks/src/basic_memory_benchmarks/providers/mem0_local.py197except Exception:CODE
HIGH…basic_memory_benchmarks/providers/supermemory_local.py187except Exception:CODE
HIGH…arks/src/basic_memory_benchmarks/providers/bm_local.py301except Exception:CODE
HIGHsrc/basic_memory/utils.py754except (json.JSONDecodeError, TypeError):CODE
HIGHsrc/basic_memory/utils.py770except (json.JSONDecodeError, TypeError):CODE
HIGHsrc/basic_memory/utils.py642except json.JSONDecodeError:CODE
HIGHsrc/basic_memory/utils.py735except json.JSONDecodeError:CODE
HIGHsrc/basic_memory/ignore_utils.py254except Exception:CODE
HIGHsrc/basic_memory/repository/sqlite_search_repository.py214except SAOperationalError:CODE
HIGHsrc/basic_memory/repository/sqlite_search_repository.py236except SAOperationalError:CODE
HIGHsrc/basic_memory/repository/project_repository.py37except OperationalError:CODE
HIGHsrc/basic_memory/repository/sqlite_vec_index.py54except SAOperationalError:CODE
HIGHsrc/basic_memory/repository/sqlite_vec_index.py69except SAOperationalError:CODE
HIGHsrc/basic_memory/runtime/process.py31except OSError:CODE
HIGHsrc/basic_memory/document_ingestion/bounded_process.py160except (BrokenPipeError, ConnectionResetError):CODE
HIGHsrc/basic_memory/document_ingestion/bounded_process.py107except ProcessLookupError:CODE
HIGHsrc/basic_memory/mcp/workspace_project_index.py339except ValueError:CODE
HIGHsrc/basic_memory/mcp/project_context.py135except Exception:CODE
HIGHsrc/basic_memory/mcp/project_context.py1943except ValueError:CODE
HIGHsrc/basic_memory/cli/auth.py117except Exception:CODE
HIGHsrc/basic_memory/cli/app.py126except (Exception, SystemExit):CODE
HIGHsrc/basic_memory/cli/analytics.py108except Exception:CODE
HIGHsrc/basic_memory/cli/commands/cloud/project_sync.py1061except Exception:CODE
10 more matches not shown…
Excessive Try-Catch Wrapping347 hits · 330 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.py115 except Exception:CODE
LOW⚡tests/repository/test_postgres_search_repository.py129 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.py322 except Exception:CODE
LOWtests/mcp/test_tool_move_note.py630 except Exception:CODE
LOWtests/mcp/test_tool_move_note.py712 except Exception:CODE
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py95 except Exception as e:CODE
LOWtests/services/test_semantic_search.py558 except Exception:CODE
LOW⚡tests/services/test_project_service.py987 except Exception:CODE
LOW⚡tests/services/test_project_service.py991 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.py796 except Exception:CODE
LOWtests/services/test_project_service.py800 except Exception:CODE
LOWtests/services/test_project_service.py1632 except Exception:CODE
LOWtests/services/test_project_service.py1815 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__.py1221def _bg() -> None:CODE
MEDIUMintegrations/hermes/__init__.py1287def _bg() -> None:CODE
LOW⚡integrations/hermes/__init__.py58except Exception as _e: # pragma: no coverCODE
LOW⚡integrations/hermes/__init__.py760 except Exception:CODE
LOW⚡integrations/hermes/__init__.py766 except Exception:CODE
LOW⚡integrations/hermes/__init__.py1239 except Exception as e:CODE
LOW⚡integrations/hermes/__init__.py1249 except Exception:CODE
LOW⚡integrations/hermes/__init__.py1255 except Exception:CODE
LOW⚡integrations/hermes/__init__.py1905 except Exception as e:CODE
LOW⚡integrations/hermes/__init__.py1914 except Exception as e:CODE
LOW⚡integrations/hermes/__init__.py1923 except Exception:CODE
LOW⚡integrations/hermes/__init__.py1976 except Exception:CODE
LOWintegrations/hermes/__init__.py415 except Exception as e:CODE
LOWintegrations/hermes/__init__.py469 except Exception:CODE
LOWintegrations/hermes/__init__.py483 except Exception as e:CODE
LOWintegrations/hermes/__init__.py548 except Exception:CODE
LOWintegrations/hermes/__init__.py582 except Exception:CODE
LOWintegrations/hermes/__init__.py592 except Exception:CODE
LOWintegrations/hermes/__init__.py679 except Exception:CODE
LOWintegrations/hermes/__init__.py706 except Exception as e:CODE
LOWintegrations/hermes/__init__.py995 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1001 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1015 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1018 except Exception as shutdown_error:CODE
LOWintegrations/hermes/__init__.py1029 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1080 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1122 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1177 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1211 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1290 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1349 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1404 except Exception as e:CODE
LOWintegrations/hermes/__init__.py1457 except Exception:CODE
LOWintegrations/hermes/__init__.py1522 except Exception:CODE
287 more matches not shown…
Cross-File Repetition65 hits · 325 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
HIGH…epository/test_vector_manifest_generation_ownership.py0build one heading section sized to be its own vector chunk. vector chunks split on headings and the size budget, not perSTRING
HIGHtests/repository/test_postgres_search_repository.py0build one heading section sized to be its own vector chunk. vector chunks split on headings and the size budget, not perSTRING
HIGH…sts/repository/test_sqlite_vector_search_repository.py0build one heading section sized to be its own vector chunk. vector chunks split on headings and the size budget, not perSTRING
HIGH…repository/test_vector_filter_candidate_restriction.py0insert into search_index ( id, title, content_stems, content_snippet, script_ngrams, permalink, file_path, type, metadatSTRING
HIGHsrc/basic_memory/repository/search_repository_base.py0insert into search_index ( id, title, content_stems, content_snippet, script_ngrams, permalink, file_path, type, metadatSTRING
HIGH…c_memory/repository/accepted_note_search_repository.py0insert into search_index ( id, title, content_stems, content_snippet, script_ngrams, permalink, file_path, type, metadatSTRING
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/mcp/test_tool_search_temporal.py0# cache layer ## observations - [decision] @effective[2026-06-10,2026-07-27) the cache layer will use redis. - [decisionSTRING
HIGHtests/api/v2/test_search_router_temporal.py0# cache layer ## observations - [decision] @effective[2026-06-10,2026-07-27) the cache layer will use redis. - [decisionSTRING
HIGHtests/services/test_search_service_temporal.py0# cache layer ## observations - [decision] @effective[2026-06-10,2026-07-27) the cache layer will use redis. - [decisionSTRING
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
HIGH…asic_memory/repository/memory_time_index_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
HIGHsrc/basic_memory/repository/note_section_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/mcp/tools/edit_note.py0report a failed move as a tool error, keeping the guidance for the caller. a returned "move failed" string reads as succSTRING
HIGHsrc/basic_memory/mcp/tools/delete_note.py0report a failed move as a tool error, keeping the guidance for the caller. a returned "move failed" string reads as succSTRING
HIGHsrc/basic_memory/mcp/tools/move_note.py0report a failed move as a tool error, keeping the guidance for the caller. a returned "move failed" string reads as succSTRING
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
5 more matches not shown…
Cross-Language Confusion45 hits · 260 pts
SeverityFileLineSnippetContext
HIGH⚡tests/test_man_pages.py252 == "- **sort** (string | null, optional, default: None) — ordering"CODE
HIGH⚡tests/test_man_pages.py259 assert render_parameters("demo", unresolved_ref) == "- **sort** (null, optional)"CODE
HIGHtests/test_man_pages.py220 "- **alpha** (string | null, optional) — a union\n"CODE
HIGHtests/test_man_pages.py236 render_parameters("demo", list_type) == "- **kind** (string | null, optional) — one of a b"CODE
HIGH⚡tests/test_config.py1326 "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.py29# 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
HIGH⚡tests/mcp/test_tool_posix.py863 "priority in null,high",CODE
HIGH⚡tests/mcp/test_tool_posix.py865 "score between null,0.8",CODE
HIGHtests/mcp/test_tool_edit_note.py818 # Call edit_note with explicit None for all optional fields (simulates MCP null)COMMENT
HIGHtests/mcp/test_async_client_modes.py507 '{"access_token":"oauth-token-456","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGHtests/mcp/test_async_client_modes.py571 '{"access_token":"oauth-control-123","refresh_token":null,"expires_at":9999999999,"token_type":"Bearer"}',CODE
HIGH⚡tests/cli/test_cli_posix_verbs.py889 '"approved":true,"missing":null}\n'CODE
HIGH⚡tests/cli/test_cli_posix_verbs.py890 'notes/Another Note.md\t{"title":"Another Note","priority":null,'CODE
HIGH⚡tests/cli/test_cli_posix_verbs.py891 '"approved":false,"missing":null}\n'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⚡tests/okf/test_okf.py914 ["!!set {alpha: null, beta: null}", "[!!set {alpha: null}]", "{nested: !!set {a: null}}"],CODE
HIGHtests/okf/test_okf.py818 source = b"---\ntype: note\ncustom: !!set {alpha: null, beta: null, gamma: null}\n---\n"CODE
HIGHbenchmarks/tests/agent_tasks/test_models.py69 assert dumped == '{"model_temperature":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.py620 # Skip None entries (e.g. a YAML `tags: [alpha, null]`) so they are not revived asCOMMENT
HIGHsrc/basic_memory/repository/metadata_filters.py151 (IS NULL: the key is absent or explicitly null).STRING
HIGHsrc/basic_memory/repository/sqlite_search_query.py357 # JSON null, and the generated frontmatter_* columns are that sameCOMMENT
HIGHsrc/basic_memory/repository/postgres_search_query.py583 # an explicit JSON null, the same two cases SQLite's json_extractSTRING
HIGHsrc/basic_memory/markdown/plugins.py64 # if it's a markdown_task, return falseCOMMENT
HIGHsrc/basic_memory/mcp/tools/write_note.py607 # so checksum is null; currentChecksum is the revision to retryCOMMENT
HIGHsrc/basic_memory/mcp/tools/search.py59 'for absent-or-null ({"owner": null}); a list for array-contains-all ({"tags": ["a", "b"]}); 'CODE
HIGHsrc/basic_memory/mcp/tools/posix_tools.py786 'score>null' or 'priority in null,high' would answer zero rows forSTRING
HIGHsrc/basic_memory/mcp/tools/posix_tools.py1079 # Why: projection answers a missing field with null, so an empty segmentCOMMENT
HIGHsrc/basic_memory/mcp/resources/project_info.py84 # (precedence between overlapping template matches is undefined), so aCOMMENT
HIGHsrc/basic_memory/cli/commands/posix.py803 "'owner=null' (key missing or null). "CODE
HIGHsrc/basic_memory/okf/render.py177 state.push("text", "", 0).content = rawCODE
HIGHsrc/basic_memory/okf/render.py220 state.push("text", "", 0).content = rawCODE
HIGHsrc/basic_memory/api/v2/routers/knowledge_router.py207 Only includes resolved relations (where to_id is not null).STRING
HIGHsrc/basic_memory/api/v2/routers/knowledge_router.py229 # Fetch all resolved relations (to_id is not null) with eager-loaded entitiesCOMMENT
HIGH…basic_memory/indexing/accepted_note_mutation_runner.py110 (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
Structural Annotation Overuse94 hits · 149 pts
SeverityFileLineSnippetContext
LOW⚡tests/mcp/test_tool_write_note.py723 # Step 2: Create second note with different titleCOMMENT
LOW⚡tests/mcp/test_tool_write_note.py731 # Step 3: Try to create/replace first note againCOMMENT
LOWtests/mcp/test_tool_write_note.py388 # Step 1: Create initial note (auto-generated permalink)COMMENT
LOWtests/mcp/test_tool_write_note.py409 # Step 2: Update with content that includes custom permalink in frontmatterCOMMENT
LOWtests/mcp/test_tool_write_note.py712 # Step 1: Create first noteCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py46 # Step 1: Create test projectCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py51 # Step 2: Create related entities that would cause foreign key constraint issuesCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py91 # Step 3: Attempt to remove the projectCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py106 # Step 4: Verify project was successfully removedCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py110 # Step 5: Verify related data was cascade deletedCOMMENT
LOW⚡tests/services/test_project_removal_bug.py52 # Step 1: Add the test projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py60 # Step 2: Create related entities for this projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py76 # Step 3: Create observations for the entityCOMMENT
LOW⚡tests/services/test_project_removal_bug.py81 # Step 4: Create relations involving the entityCOMMENT
LOW⚡tests/services/test_project_removal_bug.py106 # Step 5: Attempt to remove the projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py110 # Step 6: Verify everything was properly deletedCOMMENT
LOWtests/services/test_entity_service.py2132 # Step 1: Create first entity "Node A"STRING
LOWtests/services/test_entity_service.py2156 # Step 2: Create Node B to match live test scenarioSTRING
LOWtests/services/test_entity_service.py2168 # 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
LOW⚡test-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
LOW⚡test-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
LOW⚡test-int/mcp/test_project_state_sync_integration.py52 # Step 3: Test that we can read the note we just createdCOMMENT
LOW⚡test-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.md600### Step 1: Create BM worktrees for target refsCOMMENT
LOWbenchmarks/docs/benchmarks.md615### Step 2: Prepare benchmark datasets onceCOMMENT
LOWbenchmarks/docs/benchmarks.md624### Step 3: Run BM for each revision with deterministic run IDsCOMMENT
LOWbenchmarks/docs/benchmarks.md667### Step 4: Run mem0 anchor once per dataset (optional but recommended)COMMENT
LOWbenchmarks/docs/benchmarks.md695### Step 5: Compare runsCOMMENT
LOWbenchmarks/docs/benchmarks.md713### 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
LOWskills/memory-ingest/SKILL.md195## Step 7: Create Approved EntitiesSTRING
LOWskills/memory-ingest/SKILL.md284## Step 8: Extract Action ItemsSTRING
34 more matches not shown…
Deep Nesting162 hits · 142 pts
SeverityFileLineSnippetContext
LOWtests/test_codex_plugin_package.py62CODE
LOWtests/mcp/test_model_facing_call_examples.py47CODE
LOWtests/mcp/test_model_facing_call_examples.py73CODE
LOWtests/mcp/test_model_facing_call_examples.py93CODE
LOWtests/cli/test_ignore_utils.py100CODE
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/cli/test_man_command.py183CODE
LOWtests/services/test_project_service.py102CODE
LOWtests/services/test_project_service.py353CODE
LOWtests/services/test_project_service.py463CODE
LOWtests/services/test_project_service.py743CODE
LOWtests/services/test_project_service.py936CODE
LOWtests/services/test_project_service.py1752CODE
LOWtests/services/test_project_removal_bug.py34CODE
LOWintegrations/hermes/__init__.py496CODE
LOWintegrations/hermes/__init__.py556CODE
LOWintegrations/hermes/__init__.py810CODE
LOWintegrations/hermes/__init__.py1599CODE
LOWintegrations/hermes/__init__.py1888CODE
LOWintegrations/hermes/__init__.py743CODE
LOWintegrations/hermes/__init__.py1672CODE
LOWintegrations/tau/continuity.py207CODE
LOWintegrations/tau/continuity.py465CODE
LOW…-int/test_project_index_delete_materialization_race.py157CODE
LOWtest-int/test_search_performance_benchmark.py432CODE
LOWtest-int/compare_search_benchmarks.py73CODE
LOWbenchmarks/tests/agent_tasks/test_task_fixture.py99CODE
LOWbenchmarks/src/basic_memory_benchmarks/runner.py89CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py93CODE
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…c/basic_memory_benchmarks/converters/beam_to_corpus.py89CODE
LOW…c/basic_memory_benchmarks/converters/xafs_to_corpus.py213CODE
LOW…sic_memory_benchmarks/converters/convomem_to_corpus.py55CODE
LOW…hmarks/src/basic_memory_benchmarks/agent_tasks/loop.py95CODE
LOW…arks/src/basic_memory_benchmarks/agent_tasks/driver.py686CODE
LOWbenchmarks/src/basic_memory_benchmarks/scoring/beam.py209CODE
LOWscripts/sync_memory_schemas.py16CODE
LOWsrc/basic_memory/config.py61CODE
LOWsrc/basic_memory/config_migrations.py27CODE
LOWsrc/basic_memory/utils.py79CODE
LOWsrc/basic_memory/utils.py597CODE
LOWsrc/basic_memory/utils.py689CODE
LOWsrc/basic_memory/ignore_utils.py174CODE
LOWsrc/basic_memory/ignore_utils.py205CODE
LOWsrc/basic_memory/ignore_utils.py261CODE
LOWsrc/basic_memory/man/__init__.py238CODE
LOWsrc/basic_memory/repository/milvus_repository.py344CODE
LOWsrc/basic_memory/repository/search_reader.py399CODE
LOWsrc/basic_memory/repository/search_reader.py975CODE
LOWsrc/basic_memory/repository/search_trace.py548CODE
LOW…/basic_memory/repository/embedding_provider_factory.py148CODE
102 more matches not shown…
AI Slop Vocabulary40 hits · 107 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_claude_plugin_hooks.py28# (plugin hooks dir, plugin-root template variable the harness substitutes)COMMENT
MEDIUM⚡tests/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
MEDIUM⚡tests/cli/test_hook_command.py1499 # The operator verb `bm hook install` writes harness config and needs noCOMMENT
MEDIUM⚡tests/cli/test_hook_command.py1502 # hook, so install still runs and actually writes the harness entries.COMMENT
MEDIUMtests/cli/test_hook_command.py1460 # must catch it — a hook still exits 0, never a non-zero status to the harness.COMMENT
MEDIUMtests/cli/test_hook_command.py1547 # run before the hook's own guard (it could return non-zero to the harness)COMMENT
MEDIUMtests/cli/test_hook_command.py1794 # The settings file is the user's whole harness config, not just ourCOMMENT
MEDIUMtests/cli/test_hook_command.py1862 # 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.py1227 # 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
MEDIUMbenchmarks/tests/llm/test_tool_agent.py536 # The summary half is harness-authored, so the operator still learns whichCOMMENT
MEDIUMbenchmarks/tests/converters/test_xafs_converter.py169 # breakdown; every question routes to the agent harness as judge-graded.COMMENT
MEDIUM…nchmarks/src/basic_memory_benchmarks/llm/tool_agent.py447 # No detail: the whole message is harness-authored, so there isCOMMENT
MEDIUMbenchmarks/src/basic_memory_benchmarks/datasets/xafs.py33# Exact upstream family keys; the harness maps family -> task "skill" so theCOMMENT
MEDIUM…rks/src/basic_memory_benchmarks/agent_tasks/grading.py360 # reaching here is a harness bug, not a task outcome.COMMENT
MEDIUM…arks/src/basic_memory_benchmarks/agent_tasks/driver.py87# harness does NOT inject the project argument into tool calls — naming theCOMMENT
MEDIUM…arks/src/basic_memory_benchmarks/agent_tasks/driver.py884 # handling. Anything else is a harness bug: abort loudly.COMMENT
MEDIUMscripts/validate_claude_plugin.py67 # Claude harness (settings-based config, session/coding_session types).COMMENT
LOW⚡scripts/update_versions.py107# package release. Codex hook refs are managed by `just set-codex-hook-version`.COMMENT
LOWsrc/basic_memory/file_utils.py545 # No frontmatter, just return contentCOMMENT
LOWsrc/basic_memory/ignore_utils.py255 # 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.py1194 """Search across all content in the knowledge base with comprehensive syntax support.STRING
MEDIUMsrc/basic_memory/mcp/tools/move_note.py1038 # misleading the agent (#881 Gap 2). This is the robust backstop behindSTRING
MEDIUMsrc/basic_memory/mcp/resources/project_info.py24 """Get comprehensive information about a workspace-qualified Basic Memory project.STRING
MEDIUMsrc/basic_memory/cli/app.py92 # Trigger: a `hook` invocation (the advisory harness front door, SPEC-55).COMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py123 session_note_type: str # type stamped on this harness's checkpoint notesCODE
MEDIUMsrc/basic_memory/cli/commands/hook.py519 # --project-dir wins (the shim passes the harness's project directory soCOMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py1368# ``hook <verb> --harness <harness>`` suffix (rather than the launcher prefix)COMMENT
MEDIUMsrc/basic_memory/cli/commands/hook.py1449 # 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.py741 # Update in database using robust lookupCOMMENT
MEDIUMsrc/basic_memory/services/project_service.py776 # Get project from database using robust lookupCOMMENT
MEDIUMsrc/basic_memory/services/project_service.py818 """Get comprehensive information about the specified Basic Memory project.STRING
Over-Commented Block102 hits · 92 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.py461 messages = [record["message"] for record in records]COMMENT
LOWtests/markdown/test_entity_parser.py481#COMMENT
LOWtests/mcp/test_tool_resource.py241# Skip testing the large document size handling since it would requireCOMMENT
LOWtests/mcp/test_tool_contracts.py201 "delete_project": {"readOnlyHint": False, "destructiveHint": True},COMMENT
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__.py1861#COMMENT
LOWintegrations/hermes/.github/workflows/release.yml1name: releaseCOMMENT
LOW…nchmarks/src/basic_memory_benchmarks/llm/tool_agent.py201 if not secrets:COMMENT
LOW…arks/src/basic_memory_benchmarks/providers/bm_local.py41 def _isolated_bm_env(self) -> dict[str, str]:COMMENT
LOW.github/workflows/claude.yml1name: Claude CodeCOMMENT
LOWsrc/basic_memory/db.py21)COMMENT
LOWsrc/basic_memory/db.py341 Args:COMMENT
LOWsrc/basic_memory/db.py601 finally:COMMENT
LOWsrc/basic_memory/temporal.py641# same span whenever it is asked, which is what refuses `yesterday` further down.COMMENT
LOWsrc/basic_memory/temporal.py661COMMENT
LOWsrc/basic_memory/temporal.py681# rest of it was too broken to parse. A bare `2026` carries no hyphen and is untouched.COMMENT
LOWsrc/basic_memory/temporal.py821 # malformed.COMMENT
LOWsrc/basic_memory/temporal.py881 if moment is None or date_data.period != "time" or moment.date() != iso.day:COMMENT
LOWsrc/basic_memory/temporal.py961 if moment is None:COMMENT
LOWsrc/basic_memory/temporal.py1001 case _:COMMENT
LOWsrc/basic_memory/temporal.py1021# entity's `created_at` anchors to derived metadata that can shift on re-import or clone.COMMENT
LOWsrc/basic_memory/temporal.py1041# `sys.get_int_max_str_digits()` -- 4300 by default, and never settable below 640 -- into anCOMMENT
LOWsrc/basic_memory/config_models.py921 # Skip default-project seeding only for cloud/stateless deployments, whereCOMMENT
LOWsrc/basic_memory/utils.py501 if env == "test":COMMENT
LOWsrc/basic_memory/man/__init__.py301 if "default" in prop:COMMENT
LOW…c/basic_memory/man/man3/basic-memory-diagnostics(3).md41# → "# Basic Memory DiagnosticsCOMMENT
LOWsrc/basic_memory/repository/search_query.py81RELAXATION_EDGE_PUNCTUATION = "?!.,;:,。!?;:、"COMMENT
LOWsrc/basic_memory/repository/search_query.py101RELAXATION_ORTHOGRAPHIC_JOINERS = "\u200c\u200d"COMMENT
LOWsrc/basic_memory/repository/search_reader.py61# The shared bind-parameter bound for any statement that carries a list of vectorCOMMENT
LOWsrc/basic_memory/repository/search_reader.py1081 else:COMMENT
LOWsrc/basic_memory/repository/search_index_row.py161# Entity, observation, and relation rows carry ids from independent auto-incrementCOMMENT
LOWsrc/basic_memory/repository/search_repository_base.py441COMMENT
LOWsrc/basic_memory/repository/search_repository_base.py1621 entity_ids,COMMENT
LOWsrc/basic_memory/repository/note_content_repository.py301 # write is the single conditional UPDATE whose rowcount decides theCOMMENT
LOWsrc/basic_memory/repository/observation_repository.py141 # Outcome: leave every existing observation untouched and let the current writer publish.COMMENT
LOWsrc/basic_memory/repository/fastembed_provider.py241 # snapshot dir exists but the model artifact file is missing — theCOMMENT
LOWsrc/basic_memory/markdown/sections.py201 )COMMENT
LOWsrc/basic_memory/runtime/note_object_metadata.py41 }COMMENT
LOWsrc/basic_memory/mcp/project_context.py901 # 'research', answered with that one, returned it as the activeCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1121 # rule 1 just claimed against with this same splitter, so asking againCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1161 # re-resolved against a workspace holding a project literally namedCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1181# workspace-qualified '<workspace>/<project>/<path>' parsing. A project permalinkCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1201# looks workspace-shaped ('notes/2026/foo') matches nothing and staysCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1281 external_id: Optional[str] = NoneCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1301# its miss is terminal: an explicitly named project that must resolve or raise,COMMENT
LOWsrc/basic_memory/mcp/project_context.py1681 # ('ls research') or a path under one.COMMENT
LOWsrc/basic_memory/mcp/project_context.py1701 # Trigger: a project was named, no mount claimed the segments, and the pathCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1721 )COMMENT
LOWsrc/basic_memory/mcp/tools/edit_note.py101 # 'notes/foo.markdown.md' and a stem identifier still reaches 'notes/foo.markdown'.COMMENT
LOWsrc/basic_memory/mcp/tools/write_note.py61COMMENT
LOWsrc/basic_memory/mcp/tools/search.py1481 # Why: SearchQuery rejects the pair too, but the tool assigns its fields afterCOMMENT
42 more matches not shown…
Verbosity Indicators55 hits · 90 pts
SeverityFileLineSnippetContext
LOW⚡tests/mcp/test_tool_write_note.py723 # Step 2: Create second note with different titleCOMMENT
LOW⚡tests/mcp/test_tool_write_note.py731 # Step 3: Try to create/replace first note againCOMMENT
LOWtests/mcp/test_tool_write_note.py388 # Step 1: Create initial note (auto-generated permalink)COMMENT
LOWtests/mcp/test_tool_write_note.py409 # Step 2: Update with content that includes custom permalink in frontmatterCOMMENT
LOWtests/mcp/test_tool_write_note.py712 # Step 1: Create first noteCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py46 # Step 1: Create test projectCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py51 # Step 2: Create related entities that would cause foreign key constraint issuesCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py91 # Step 3: Attempt to remove the projectCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py106 # Step 4: Verify project was successfully removedCOMMENT
LOW⚡tests/db/test_issue_254_foreign_key_constraints.py110 # Step 5: Verify related data was cascade deletedCOMMENT
LOW⚡tests/services/test_project_removal_bug.py52 # Step 1: Add the test projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py60 # Step 2: Create related entities for this projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py76 # Step 3: Create observations for the entityCOMMENT
LOW⚡tests/services/test_project_removal_bug.py81 # Step 4: Create relations involving the entityCOMMENT
LOW⚡tests/services/test_project_removal_bug.py106 # Step 5: Attempt to remove the projectCOMMENT
LOW⚡tests/services/test_project_removal_bug.py110 # Step 6: Verify everything was properly deletedCOMMENT
LOWtests/services/test_entity_service.py2132 # Step 1: Create first entity "Node A"STRING
LOWtests/services/test_entity_service.py2156 # Step 2: Create Node B to match live test scenarioSTRING
LOWtests/services/test_entity_service.py2168 # Step 3: Create Node C - this is where the bug occurs in live testingSTRING
LOW⚡test-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
LOW⚡test-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
LOW⚡test-int/mcp/test_project_state_sync_integration.py52 # Step 3: Test that we can read the note we just createdCOMMENT
LOW⚡test-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.py1856 # Step 1: Resolve project name from config (no network call)COMMENT
LOWsrc/basic_memory/mcp/project_context.py1887 # Step 2: Check explicit routing BEFORE workspace resolutionCOMMENT
LOWsrc/basic_memory/mcp/project_context.py1905 # Step 3: Determine if cloud routing is neededCOMMENT
LOWsrc/basic_memory/mcp/project_context.py2029 # Step 4: Local routing (default)COMMENT
LOW⚡src/basic_memory/cli/auth.py273 # Step 1: Request device authorizationCOMMENT
LOW⚡src/basic_memory/cli/auth.py278 # Step 2: Display user instructionsCOMMENT
LOW⚡src/basic_memory/cli/auth.py281 # Step 3: Poll for tokenCOMMENT
LOW⚡src/basic_memory/cli/auth.py289 # Step 4: Save tokensCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/core_commands.py234 # Step 1: Install rcloneCOMMENT
LOW⚡src/basic_memory/cli/commands/cloud/core_commands.py267 # Step 2: Get tenant info (scoped to the target workspace when given)COMMENT
LOW⚡src/basic_memory/cli/commands/cloud/core_commands.py272 # Step 3: Generate credentials for that tenant's bucketCOMMENT
LOW⚡src/basic_memory/cli/commands/cloud/core_commands.py277 # 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
Redundant / Tautological Comments57 hits · 82 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py286 # Set BASIC_MEMORY_HOME to the test directoryCOMMENT
LOWtests/conftest.py822 # Write fileCOMMENT
LOW⚡tests/test_config.py570 # 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.py1607 # Set config to allow overwrites by defaultCOMMENT
LOWtests/mcp/test_tool_write_note.py579 # 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
LOW⚡tests/services/test_file_service.py237 # Write fileCOMMENT
LOWtest-int/conftest.py397 # Set BASIC_MEMORY_HOME to the test directoryCOMMENT
LOWtest-int/semantic/test_search_diagnostics.py229 # Check if the database entity outranks irrelevant observationsCOMMENT
LOWsrc/basic_memory/db.py129 # Check if Postgres backend is configured (for backward compatibility)COMMENT
LOWsrc/basic_memory/utils.py47 # Check if this is a Windows absolute path (e.g., C:\Users\...)COMMENT
LOWsrc/basic_memory/utils.py123 # Check if we have CJK characters that should be preservedCOMMENT
LOWsrc/basic_memory/utils.py632 # Check if it's a JSON array string (common issue from AI assistants)COMMENT
LOWsrc/basic_memory/ignore_utils.py287 # Check if the first part of the path matches the directory nameSTRING
LOWsrc/basic_memory/ignore_utils.py299 # Check if any path part matches the directory nameSTRING
LOWsrc/basic_memory/ignore_utils.py308 # Check if any individual path part matches the glob patternSTRING
LOWsrc/basic_memory/repository/entity_repository.py594 # Check if this is a FOREIGN KEY constraint failureCOMMENT
LOWsrc/basic_memory/repository/entity_repository.py779 # Check if this is a FOREIGN KEY constraint failureCOMMENT
LOW⚡src/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.py230 # Check if the path is already absoluteCOMMENT
LOWsrc/basic_memory/mcp/tools/view_note.py79 # Check if this is an error message (note not found)COMMENT
LOWsrc/basic_memory/mcp/tools/move_note.py335# Check if note exists in Basic MemoryCOMMENT
LOWsrc/basic_memory/mcp/tools/move_note.py993 # Check if extensions matchSTRING
LOWsrc/basic_memory/cli/commands/db.py407 # Check if it's a cloud-only project — those can't be reindexed locallyCOMMENT
LOWsrc/basic_memory/cli/commands/format.py93 # 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.py93 # Check if project existsCOMMENT
LOWsrc/basic_memory/cli/commands/cloud/rclone_commands.py786 # Check if first run requires resyncCOMMENT
LOWsrc/basic_memory/api/v2/routers/project_router.py166 # Check if project already exists before attempting to addCOMMENT
LOWsrc/basic_memory/api/v2/routers/project_router.py579 # Check if trying to delete the default projectCOMMENT
LOWsrc/basic_memory/alembic/env.py198 # Check if a connection/engine was provided (e.g., from run_migrations)COMMENT
LOWsrc/basic_memory/alembic/env.py205 # 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
LOW⚡src/basic_memory/services/project_service.py245 # Check if either path is a parent of the otherCOMMENT
LOW⚡src/basic_memory/services/project_service.py247 # Check if p2 is under p1COMMENT
LOW⚡src/basic_memory/services/project_service.py253 # Check if p1 is under p2COMMENT
LOWsrc/basic_memory/services/project_service.py458 # Check if project is defaultCOMMENT
Modern Structural Boilerplate67 hits · 72 pts
SeverityFileLineSnippetContext
LOWtests/test_alembic_env.py24 def set_main_option(self, name: str, value: str) -> None:CODE
LOW⚡tests/test_read_cache_telemetry.py46 def set_attribute(self, name: str, value: object) -> None:CODE
LOW⚡tests/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.py37 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
LOW⚡tests/mcp/test_client_telemetry.py27 def set_attribute(self, key: str, value) -> None:CODE
LOW⚡tests/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
LOWintegrations/tau/extension.py19__all__ = ["MemoryLifecycle", "confirm_write", "execute_tool", "make_tool", "setup", "tool_result"]CODE
LOWintegrations/tau/Basic Memory.py10__all__ = ["setup"]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__.py26__all__ = [CODE
LOW…ks/src/basic_memory_benchmarks/agent_tasks/__init__.py40__all__ = [CODE
LOW⚡scripts/update_versions.py80def set_server_version(data: dict[str, Any], version: str) -> None:CODE
LOW⚡scripts/update_versions.py87def set_claude_marketplace_version(data: dict[str, Any], version: str) -> None:CODE
LOW⚡scripts/update_versions.py95def set_package_version(data: dict[str, Any], version: str) -> None:CODE
LOW⚡scripts/update_versions.py99def set_npm_lock_version(data: dict[str, Any], version: str) -> None:CODE
LOWscripts/update_versions.py122def _update_core(version: str, *, dry_run: bool) -> None:CODE
LOWscripts/update_versions.py136def _update_packages(version: str, *, dry_run: bool) -> None:CODE
LOWscripts/update_versions.py197def update_versions(raw_version: str, *, scope: str = "all", dry_run: bool) -> None:CODE
LOWsrc/basic_memory/config.py213 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.py863 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__.py16__all__ = [CODE
LOWsrc/basic_memory/repository/search_repository.py325__all__ = [CODE
LOW⚡src/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__.py24__all__ = [CODE
LOWsrc/basic_memory/runtime/note_content.py88__all__ = [CODE
LOWsrc/basic_memory/document_ingestion/__init__.py20__all__ = [CODE
LOWsrc/basic_memory/mcp/server.py34def set_posix_tools_visibility(server: FastMCP, enabled: bool) -> None:CODE
LOWsrc/basic_memory/mcp/container.py107def set_container(container: McpContainer) -> None:CODE
LOWsrc/basic_memory/mcp/async_client.py343def set_client_factory(factory: Callable[..., AbstractAsyncContextManager[AsyncClient]]) -> None:CODE
LOWsrc/basic_memory/mcp/project_context.py111def 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__.py40__all__ = [CODE
LOWsrc/basic_memory/mcp/resources/__init__.py7__all__ = ["manual_index", "manual_page", "note_resource", "project_info"]CODE
LOWsrc/basic_memory/mcp/prompts/__init__.py15__all__ = [CODE
LOWsrc/basic_memory/models/__init__.py17__all__ = [CODE
LOWsrc/basic_memory/cli/container.py68def set_container(container: CliContainer) -> None:CODE
LOWsrc/basic_memory/cli/commands/__init__.py21__all__ = [CODE
LOWsrc/basic_memory/schemas/__init__.py96__all__ = [CODE
LOWsrc/basic_memory/schemas/v2/__init__.py27__all__ = [CODE
LOWsrc/basic_memory/picoschema/__init__.py39__all__ = [CODE
LOWsrc/basic_memory/hooks/adapters/__init__.py29__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__.py21__all__ = [CODE
LOWsrc/basic_memory/api/v2/routers/importer_router.py30logger = logging.getLogger(__name__)CODE
7 more matches not shown…
AI Structural Patterns50 hits · 44 pts
SeverityFileLineSnippetContext
LOWtests/repository/test_pgvector_index.py65CODE
LOWtests/repository/test_semantic_vector_sync.py52CODE
LOWtests/repository/test_semantic_search_base.py94CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py361CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py418CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py483CODE
LOWbenchmarks/src/basic_memory_benchmarks/cli.py784CODE
LOWsrc/basic_memory/repository/search_trace.py248CODE
LOWsrc/basic_memory/repository/search_repository.py88CODE
LOWsrc/basic_memory/repository/search_repository.py114CODE
LOWsrc/basic_memory/repository/search_repository_base.py275CODE
LOWsrc/basic_memory/repository/search_repository_base.py330CODE
LOWsrc/basic_memory/repository/litellm_provider.py109CODE
LOWsrc/basic_memory/repository/repository.py412CODE
LOWsrc/basic_memory/mcp/tools/edit_note.py469CODE
LOWsrc/basic_memory/mcp/tools/ui_sdk.py32CODE
LOWsrc/basic_memory/mcp/tools/utils.py357CODE
LOWsrc/basic_memory/mcp/tools/utils.py461CODE
LOWsrc/basic_memory/mcp/tools/utils.py578CODE
LOWsrc/basic_memory/mcp/tools/utils.py700CODE
LOWsrc/basic_memory/mcp/tools/utils.py817CODE
LOWsrc/basic_memory/mcp/tools/utils.py943CODE
LOWsrc/basic_memory/mcp/tools/write_note.py278CODE
LOWsrc/basic_memory/mcp/tools/search.py1059CODE
LOWsrc/basic_memory/mcp/tools/read_note.py87CODE
LOWsrc/basic_memory/mcp/tools/recent_activity.py52CODE
LOWsrc/basic_memory/mcp/tools/posix_tools.py203CODE
LOWsrc/basic_memory/mcp/tools/posix_tools.py355CODE
LOWsrc/basic_memory/mcp/tools/posix_tools.py581CODE
LOWsrc/basic_memory/mcp/tools/posix_tools.py966CODE
LOWsrc/basic_memory/mcp/tools/build_context.py199CODE
LOWsrc/basic_memory/mcp/tools/list_directory.py29CODE
LOWsrc/basic_memory/cli/commands/ci.py50CODE
LOWsrc/basic_memory/cli/commands/inspect.py535CODE
LOWsrc/basic_memory/cli/commands/posix.py497CODE
LOWsrc/basic_memory/cli/commands/posix.py582CODE
LOWsrc/basic_memory/cli/commands/posix.py642CODE
LOWsrc/basic_memory/cli/commands/posix.py726CODE
LOWsrc/basic_memory/cli/commands/posix.py784CODE
LOWsrc/basic_memory/cli/commands/posix.py893CODE
LOWsrc/basic_memory/cli/commands/posix.py950CODE
LOWsrc/basic_memory/cli/commands/tool.py591CODE
LOWsrc/basic_memory/cli/commands/tool.py720CODE
LOWsrc/basic_memory/cli/commands/tool.py908CODE
LOWsrc/basic_memory/cli/commands/tool.py1022CODE
LOWsrc/basic_memory/cli/commands/tool.py1112CODE
LOWsrc/basic_memory/cli/commands/tool.py1199CODE
LOWsrc/basic_memory/cli/commands/project.py845CODE
LOWsrc/basic_memory/cli/commands/cloud/rclone_commands.py703CODE
LOWsrc/basic_memory/services/context_service.py110CODE
Fake / Example Data32 hits · 36 pts
SeverityFileLineSnippetContext
LOWtests/utils/test_frontmatter_obsidian_compatible.py110 post.metadata["authors"] = ["John Doe", "Jane Smith"]CODE
LOWtests/mcp/test_project_context.py869 name="Acme Corp",CODE
LOWtests/mcp/test_tool_project_management.py1128 cloud_workspace_name="Acme Corp",CODE
LOWtests/mcp/test_tool_project_management.py1139 assert merged[0]["workspace_name"] == "Acme Corp"CODE
LOW⚡tests/picoschema/test_diff.py143 notes[0] = _note("n0", observations=[Obs("name", "P0"), Obs("fax", "555-1234")])CODE
LOW⚡tests/picoschema/test_validator.py167 result = validate_note("test-note", schema, [], [Rel("works_at", "Acme Corp")])CODE
LOW⚡tests/picoschema/test_validator.py171 assert result.field_results[0].values == ["Acme Corp"]CODE
LOW⚡tests/picoschema/test_validator.py265 relations = [Rel("works_at", "Acme Corp"), Rel("friends_with", "Bob")]CODE
LOWtests/api/v2/test_knowledge_router.py2494 json={"title": title, "directory": "test", "content": "placeholder"},CODE
LOWtests/api/v2/test_overlapping_saves.py28 f"version {version} paragraph {paragraph} " + "lorem ipsum dolor sit amet " * 40CODE
LOWtests/api/v2/test_overlapping_saves.py28 f"version {version} paragraph {paragraph} " + "lorem ipsum dolor sit amet " * 40CODE
LOWdocs/ai-assistant-guide-extended.md676 "email": "user@example.com",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json39 "placeholder": "my-agent",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json44 "placeholder": "memory/",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json49 "placeholder": "MEMORY.md",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json54 "placeholder": "bm",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json64 "placeholder": "10",CODE
LOW⚡integrations/openclaw/openclaw.plugin.json74 "placeholder": "Check for active tasks and recent activity...",CODE
LOWintegrations/openclaw/openclaw.plugin.json85 "placeholder": ".",CODE
LOWintegrations/openclaw/tools/list-workspaces.test.ts64 name: "Acme Corp",CODE
LOWintegrations/openclaw/tools/list-workspaces.test.ts94 name: "Acme Corp",CODE
LOWtest-int/mcp/test_param_aliases_integration.py148 "find_text": "placeholder",CODE
LOW⚡test-int/mcp/test_read_content_integration.py302This is section {i + 1} with substantial content. Lorem ipsum dolor sit amet,CODE
LOW⚡test-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
LOW⚡test-int/mcp/test_long_relation_type_integration.py30 "**Lorem ipsum dolor sit amet** — consectetur adipiscing elit, sed do eiusmod "CODE
LOW⚡test-int/mcp/test_long_relation_type_integration.py30 "**Lorem ipsum dolor sit amet** — consectetur adipiscing elit, sed do eiusmod "CODE
LOWskills/memory-research/SKILL.md39search_notes(query="Acme Corp")CODE
LOWskills/memory-research/SKILL.md111 title="Acme Corp",CODE
LOWskills/memory-research/SKILL.md206 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-Vocabulary9 hits · 29 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml232 "*/services/initialization.py", # Startup orchestration + background tasks (watchers); exercised indirectly in entryCODE
MEDIUM⚡tests/cli/test_cli_posix_verbs.py1150# Errors and routing (shared command scaffold, exercised per verb)COMMENT
MEDIUMtest-int/BENCHMARKS.md39### Multilingual embedding model comparisonCOMMENT
MEDIUMtest-int/BENCHMARKS.md94### 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
MEDIUM⚡src/basic_memory/repository/search_repository_base.py1575 # Shared semantic search: sync_entity_vectors orchestrationCOMMENT
MEDIUMsrc/basic_memory/repository/search_repository_base.py508 # Compatibility: focused orchestration tests and third-party subclassesCOMMENT
MEDIUMsrc/basic_memory/mcp/async_client.py336# Optional factory override for dependency injection.COMMENT
MEDIUMsrc/basic_memory/services/project_readiness.py309 # provider, and building one here would load the embedding model. TheCOMMENT
Hallucination Indicators1 hit · 15 pts
SeverityFileLineSnippetContext
CRITICAL⚡integrations/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.py3564CODE
MEDIUMtests/mcp/test_tool_edit_note.py1116CODE
MEDIUMtests/mcp/test_tool_edit_note.py1320CODE
MEDIUMtests/mcp/tools/test_search_notes_multi_project.py391CODE
MEDIUMtests/indexing/test_forward_reference_resolution.py427CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHsrc/basic_memory/utils.py890 # once a parent segment stays ambiguous (kept as requested), a deeperCOMMENT
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOW⚡test-int/mcp/test_edit_note_integration.py955 assert "def test_function():" in contentCODE
LOWtest-int/mcp/test_edit_note_integration.py913def test_function():CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdocker-compose-postgres.yml7# Usage:COMMENT