Repository Analysis

MemPalace/mempalace

The best-benchmarked open-source AI memory system. And it's free.

27.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of MemPalace/mempalace, a Python project with 58,702 GitHub stars. SynthScan v2.0 examined 281,060 lines of code across 484 source files, recording 6162 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 27.8 places this repository in the Moderate AI signal band.

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

27.8
Adjusted Score
27.8
Raw Score
100%
Time Factor
2026-08-28
Last Push
58.7K
Stars
Python
Language
281.1K
Lines of Code
484
Files
6.2K
Pattern Hits
2026-08-29
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

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

Score History

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

Severity Breakdown

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

CRITICAL 0HIGH 15MEDIUM 1090LOW 5057

Directory Score Breakdown

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

Pattern Findings

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

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

Decorative Section Separators1016 hits · 3409 pts
SeverityFileLineSnippetContext
MEDIUMtools/find_orphan_claude_jsonls.sh3# -----------------------------------------------------------------------------COMMENT
MEDIUMtools/find_orphan_claude_jsonls.sh14# -----------------------------------------------------------------------------COMMENT
MEDIUMtests/test_closets.py222 # ── Tier 6a — date + line-range pointer segment ────────────────────────COMMENT
MEDIUMtests/test_closets.py506# ── _extract_drawer_ids_from_closet ───────────────────────────────────COMMENT
MEDIUMtests/test_closets.py526# ── search_memories closet-first path ────────────────────────────────COMMENT
MEDIUMtests/test_closets.py586# ── entity metadata ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py699# ── BM25 hybrid search (real IDF over candidate corpus) ──────────────COMMENT
MEDIUMtests/test_closets.py66# ── mine_lock ────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py149# ── build_closet_lines ─────────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py350# ── upsert_closet_lines ───────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py389# ── purge_file_closets ────────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py409# ── project miner: closet rebuild end-to-end ──────────────────────────COMMENT
MEDIUMtests/test_closets.py761# ── diary ingest ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py939 # ── #1539: per-entry drawers, oversized-entry chunking ─────────COMMENT
MEDIUMtests/test_closets.py1218# ── cross-wing tunnels ───────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py1292 # ── regression: symmetry, durability, validation, concurrency ─────COMMENT
MEDIUMtests/test_closets.py1392# ── drawer-grep neighbor expansion ────────────────────────────────────COMMENT
MEDIUMtests/test_hallways_palace_scoped.py24# =============================================================================COMMENT
MEDIUMtests/test_hallways_palace_scoped.py26# =============================================================================COMMENT
MEDIUMtests/test_hallways_palace_scoped.py53# =============================================================================COMMENT
MEDIUMtests/test_hallways_palace_scoped.py55# =============================================================================COMMENT
MEDIUMtests/test_hallways_palace_scoped.py101# =============================================================================COMMENT
MEDIUMtests/test_hallways_palace_scoped.py103# =============================================================================COMMENT
MEDIUMtests/test_searcher.py69# ── search_memories (API) ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py728# ── _tokenize stop-word filter ─────────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py1071# ── _result_drawer_id logical-id resolution (#2185) ────────────────────COMMENT
MEDIUMtests/test_searcher.py1100# ── since/before date window (#463) ────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py27# ── build_where_filter (unit) ──────────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py319# ── BM25 internals: None / empty document safety ─────────────────────COMMENT
MEDIUMtests/test_searcher.py357# ── search() (CLI print function) ─────────────────────────────────────COMMENT
MEDIUMtests/test_backups.py244# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_backups.py246# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_miner_fts5_validation.py124# ── 1. Helper returns silently on a clean palace ────────────────────COMMENT
MEDIUMtests/test_miner_fts5_validation.py135# ── 2. Helper raises MineValidationError on corrupt sqlite ──────────COMMENT
MEDIUMtests/test_miner_fts5_validation.py174# ── 3. cmd_mine surfaces MineValidationError as exit-1 + banner ─────COMMENT
MEDIUMtests/test_miner_fts5_validation.py222# ── 4. Dry-run skips validation ─────────────────────────────────────COMMENT
MEDIUMtests/test_miner_fts5_validation.py24# ── Helpers ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py6# ── Config loading ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py61# ── Config: force_reload and invalid JSON ──────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py101# ── is_true_session_start ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py182# ── extract_timestamp ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py205# ── extract_subject ────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py238# ── split_file ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py133# ── find_session_boundaries ────────────────────────────────────────────COMMENT
MEDIUMtests/test_palace_graph_tunnels.py517# =============================================================================COMMENT
MEDIUMtests/test_palace_graph_tunnels.py519# =============================================================================COMMENT
MEDIUMtests/test_palace_graph_tunnels.py590# =============================================================================COMMENT
MEDIUMtests/test_palace_graph_tunnels.py592# =============================================================================COMMENT
MEDIUMtests/test_logstream_sync.py90# ── HLC ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_logstream_sync.py140# ── Replica identity ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_logstream_sync.py173# ── Migration / backfill ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_logstream_sync.py368# ── HTTP endpoints + CLI (real wire) ─────────────────────────────────────COMMENT
MEDIUMtests/test_logstream_sync.py225# ── Sync primitives ───────────────────────────────────────────────────────STRING
MEDIUMtests/test_logstream_sync.py315# ── Convergence (engine over simulated wire) ─────────────────────────────STRING
MEDIUMtests/test_corpus_origin_integration.py1049# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py1056# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py1721# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py1730# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py114# ── Baseline test: pin v3.3.3 behavior ────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py152# ── corpus-origin test: with corpus_origin, personas reclassify ───────────COMMENT
956 more matches not shown…
Hyper-Verbose Identifiers4041 hits · 3285 pts
SeverityFileLineSnippetContext
LOWCONTRIBUTING.md46def test_function_never_fabricates_output_on_random_input(s):CODE
LOWtests/test_closets.py210 def test_emits_fallback_line_when_nothing_extractable(self):CODE
LOWtests/test_closets.py217 def test_pointer_references_first_three_drawers(self):CODE
LOWtests/test_closets.py224 def test_includes_date_line_segment_when_metas_provided(self):CODE
LOWtests/test_closets.py510 def test_parses_single_pointer(self):CODE
LOWtests/test_closets.py513 def test_parses_multiple_pointers_per_line(self):CODE
LOWtests/test_closets.py517 def test_dedupes_across_lines(self):CODE
LOWtests/test_closets.py521 def test_empty_doc_returns_empty(self):CODE
LOWtests/test_closets.py530 def test_pure_drawer_when_no_closets(self, palace_path, seeded_collection):CODE
LOWtests/test_closets.py540 def test_closet_boost_marks_hit_as_drawer_plus_closet(self, palace_path, seeded_collection):CODE
LOWtests/test_closets.py590 def test_extracts_capitalized_names(self):CODE
LOWtests/test_closets.py596 def test_empty_for_no_entities(self):CODE
LOWtests/test_closets.py605 def test_stoplist_filters_sentence_starters(self):CODE
LOWtests/test_closets.py703 def test_scores_positive_for_matching_doc(self):CODE
LOWtests/test_closets.py711 def test_scores_zero_when_no_overlap(self):CODE
LOWtests/test_closets.py715 def test_idf_downweights_terms_present_in_every_doc(self):CODE
LOWtests/test_closets.py88 def test_lock_acquires_and_releases(self, tmp_path):CODE
LOWtests/test_closets.py99 def test_lock_blocks_concurrent_access(self, tmp_path):CODE
LOWtests/test_closets.py153 def test_emits_pointer_line_shape(self):CODE
LOWtests/test_closets.py174 def test_extracts_section_headers_as_topics(self):CODE
LOWtests/test_closets.py181 def test_entity_stoplist_filters_sentence_starters(self):CODE
LOWtests/test_closets.py199 def test_real_proper_nouns_survive_stoplist(self):CODE
LOWtests/test_closets.py299 def test_date_segment_uses_filed_at_date_portion_only(self):CODE
LOWtests/test_closets.py320 def test_content_date_preferred_over_filed_at(self):CODE
LOWtests/test_closets.py354 def test_overwrites_existing_closet_does_not_append(self, palace_path):CODE
LOWtests/test_closets.py372 def test_packs_into_multiple_closets_without_splitting_lines(self, palace_path):CODE
LOWtests/test_closets.py393 def test_deletes_only_the_targeted_source(self, palace_path):CODE
LOWtests/test_closets.py413 def test_remine_replaces_closets_completely(self, tmp_path):CODE
LOWtests/test_closets.py570 def test_max_distance_filters_hybrid_hits(self, palace_path, seeded_collection):CODE
LOWtests/test_closets.py620 def test_capped_list_never_truncates_a_name(self):CODE
LOWtests/test_closets.py664 def test_known_registry_is_cached_by_mtime(self, monkeypatch, tmp_path):CODE
LOWtests/test_closets.py728 def test_empty_inputs_return_zeros(self):CODE
LOWtests/test_closets.py733 def test_hybrid_rank_promotes_keyword_match(self):CODE
LOWtests/test_closets.py746 def test_hybrid_rank_absolute_normalization(self):CODE
LOWtests/test_closets.py765 def test_ingest_creates_drawers_and_closets(self, tmp_path):CODE
LOWtests/test_closets.py779 def test_ingest_skips_unchanged_on_second_run(self, tmp_path):CODE
LOWtests/test_closets.py793 def test_ingest_detects_same_size_content_edit(self, tmp_path):CODE
LOWtests/test_closets.py830 def test_legacy_state_backfills_content_hash(self, tmp_path):CODE
LOWtests/test_closets.py871 def test_state_file_lives_outside_diary_dir(self, tmp_path):CODE
LOWtests/test_closets.py901 def test_wing_prefixed_drawer_id_prevents_cross_diary_collision(self, tmp_path):CODE
LOWtests/test_closets.py941 def test_diary_multiple_entries_one_drawer_each(self, tmp_path):CODE
LOWtests/test_closets.py962 def test_large_diary_with_oversized_entry_chunks_within_entry(self, tmp_path):CODE
LOWtests/test_closets.py997 def test_incremental_appends_new_entry_only(self, tmp_path):CODE
LOWtests/test_closets.py1024 def test_entry_count_watermark_matches_drawer_count(self, tmp_path):CODE
LOWtests/test_closets.py1051 def test_diary_chunk_index_is_global_across_entries(self, tmp_path):CODE
LOWtests/test_closets.py1088 def test_diary_entry_deletion_purges_orphan_drawers(self, tmp_path):CODE
LOWtests/test_closets.py1123 def test_diary_header_only_entry_produces_drawer(self, tmp_path):CODE
LOWtests/test_closets.py1149 def test_diary_atomic_batched_upsert_on_failure(self, tmp_path, monkeypatch):CODE
LOWtests/test_closets.py1260 def test_list_tunnels_with_and_without_filter(self):CODE
LOWtests/test_closets.py1274 def test_dedup_same_endpoints_updates_label(self):CODE
LOWtests/test_closets.py1281 def test_follow_tunnels_returns_connected_endpoints(self):CODE
LOWtests/test_closets.py1304 def test_follow_tunnels_works_from_either_endpoint(self):CODE
LOWtests/test_closets.py1317 def test_empty_endpoint_fields_rejected(self):CODE
LOWtests/test_closets.py1332 def test_corrupt_tunnel_file_does_not_lose_new_writes(self):CODE
LOWtests/test_closets.py1350 def test_atomic_write_leaves_no_stray_tmp_file(self):CODE
LOWtests/test_closets.py1359 def test_concurrent_creates_preserve_all_tunnels(self):CODE
LOWtests/test_closets.py1385 def test_created_at_is_timezone_aware(self):CODE
LOWtests/test_closets.py1421 def test_expand_returns_matched_plus_neighbors(self, palace_path):CODE
LOWtests/test_closets.py1440 def test_expand_at_start_of_file_only_has_next_neighbor(self, palace_path):CODE
LOWtests/test_closets.py1454 def test_expand_at_end_of_file_only_has_prev_neighbor(self, palace_path):CODE
3981 more matches not shown…
Excessive Try-Catch Wrapping418 hits · 358 pts
SeverityFileLineSnippetContext
LOWtools/find_orphan_claude_jsonls.sh55 except Exception:CODE
LOWtools/find_orphan_claude_jsonls.sh89except Exception:CODE
MEDIUMtests/test_closets.py1366def worker(i):CODE
LOWtests/test_closets.py1370 except Exception as e:CODE
LOWtests/test_hybrid_search.py29 except Exception:CODE
LOWtests/conftest.py165 except Exception:CODE
LOWtests/conftest.py180 except Exception:CODE
LOWtests/conftest.py224 except Exception:CODE
LOWtests/test_milvus_backend.py368 except Exception:CODE
LOWtests/test_mine_lock_lifecycle.py217 except Exception:CODE
LOWtests/test_mine_lock_lifecycle.py223 except Exception:CODE
LOWtests/test_mcp_server.py1097 except Exception:CODE
MEDIUMtests/test_sqlite_exact_backend.py711def owner_a():CODE
LOWtests/test_sqlite_exact_backend.py1056 except Exception as exc:STRING
LOWtests/test_live_pgvector_conformance.py61 except Exception:CODE
LOWtests/test_live_pgvector_conformance.py278 except Exception as exc: # noqa: BLE001 - collected for the reportCODE
LOWtests/test_live_pgvector_conformance.py315 except Exception as exc: # noqa: BLE001 - collected for the reportCODE
LOWtests/test_hooks_cli.py904 except Exception:CODE
LOWtests/test_daemon.py257 except Exception: # noqa: BLE001 - best-effort; we force-shutdown belowCODE
LOWtests/test_daemon.py264 except Exception: # noqa: BLE001CODE
LOWtests/test_daemon.py268 except Exception: # noqa: BLE001CODE
LOWtests/test_repair.py3027 except Exception:CODE
MEDIUMtests/test_pgvector_backend.py781def racing_connect(dsn):CODE
LOWtests/test_pgvector_backend.py728 except Exception:CODE
LOWtests/test_pgvector_backend.py799 except Exception as exc:CODE
LOWtests/test_migrate.py314 except Exception:CODE
LOWtests/test_migrate.py360 except Exception:CODE
LOWtests/test_encoding_repair.py923 except Exception:CODE
LOWtests/test_qdrant_backend.py557 except Exception:CODE
LOWtests/test_service_palace_env.py38 except Exception: # noqa: BLE001 - the call's outcome is not what this assertsCODE
LOWtests/test_service_palace_env.py51 except Exception: # noqa: BLE001CODE
LOWtests/benchmarks/conftest.py107 except Exception:CODE
LOWtests/benchmarks/conftest.py114 except Exception:CODE
LOWtests/benchmarks/conftest.py138 except Exception:CODE
LOWtests/benchmarks/test_knowledge_graph_bench.py191 except Exception:CODE
LOWtests/benchmarks/test_knowledge_graph_bench.py233 except Exception:CODE
LOWtests/benchmarks/test_knowledge_graph_bench.py244 except Exception:CODE
LOWmempalace/repair.py387 except Exception:CODE
LOWmempalace/repair.py390 except Exception as exc:CODE
LOWmempalace/repair.py396 except Exception:CODE
LOWmempalace/repair.py95 except Exception:CODE
LOWmempalace/repair.py116 except Exception:CODE
LOWmempalace/repair.py128 except Exception:CODE
LOWmempalace/repair.py138 except Exception:CODE
LOWmempalace/repair.py167 except Exception:CODE
LOWmempalace/repair.py194 except Exception:CODE
LOWmempalace/repair.py207 except Exception:CODE
LOWmempalace/repair.py210 except Exception as fallback_exc:CODE
LOWmempalace/repair.py256 except Exception:CODE
LOWmempalace/repair.py453 except Exception:CODE
LOWmempalace/repair.py514 except Exception:CODE
LOWmempalace/repair.py522 except Exception:CODE
LOWmempalace/repair.py588 except Exception:CODE
LOWmempalace/repair.py593 except Exception:CODE
LOWmempalace/repair.py726 except Exception:CODE
LOWmempalace/repair.py1153 except Exception as exc:CODE
LOWmempalace/repair.py1233 except Exception:CODE
LOWmempalace/repair.py1373 except Exception as exc:CODE
LOWmempalace/repair.py1496 except Exception as e:CODE
LOWmempalace/repair.py1576 except Exception as promote_error:CODE
358 more matches not shown…
Unused Imports162 hits · 140 pts
SeverityFileLineSnippetContext
LOWtests/test_miner_fts5_validation.py10CODE
LOWtests/test_corpus_origin_integration.py25CODE
LOWtests/test_hook_write_routing.py1CODE
LOWtests/test_mine_lock_lifecycle.py1CODE
LOWtests/test_search_distinct_closet_results.py1CODE
LOWtests/test_sync.py1429CODE
LOWtests/test_codex_plugin_manifest.py3CODE
LOWtests/test_repair_lock_safety.py16CODE
LOWtests/test_hooks_shell.py20CODE
LOWtests/test_cursor_plugin_manifest.py29CODE
LOWtests/test_vector_write_gate.py14CODE
LOWtests/test_format_miner.py12CODE
LOWtests/test_format_miner.py610CODE
LOWtests/test_hermes_integration.py12CODE
LOWtests/test_hnsw_capacity.py9CODE
LOWtests/test_cursor_hooks_install.py16CODE
LOWtests/test_write_routing.py1CODE
LOWtests/test_collision_scan.py16CODE
LOWtests/test_ids.py11CODE
LOWtests/test_antigravity_hooks_install.py15CODE
LOWtests/test_chroma_collection_lock.py26CODE
LOWtests/test_antigravity_hooks_shell.py20CODE
LOWtests/test_cursor_hooks_shell.py28CODE
LOWtests/test_hooks_bash_compat.py17CODE
LOWtests/test_dynamics.py10CODE
LOWtests/test_fact_checker.py19CODE
LOWtests/test_palace_locks.py10CODE
LOWtests/test_qdrant_bulk_metadata_scroll.py72CODE
LOWtests/test_service_palace_env.py3CODE
LOWtests/benchmarks/benchmark_dialect.py1CODE
LOWtests/benchmarks/benchmark_dialect.py3CODE
LOWmempalace/sync.py22CODE
LOWmempalace/logsync.py28CODE
LOWmempalace/logsync.py28CODE
LOWmempalace/service.py9CODE
LOWmempalace/convo_scanner.py22CODE
LOWmempalace/project_scanner.py18CODE
LOWmempalace/hallways.py33CODE
LOWmempalace/palace_graph.py21CODE
LOWmempalace/embedding.py48CODE
LOWmempalace/write_routing.py11CODE
LOWmempalace/hook_shell.py9CODE
LOWmempalace/collision_scan.py24CODE
LOWmempalace/__init__.py38CODE
LOWmempalace/fact_checker.py28CODE
LOWmempalace/encoding_repair.py3CODE
LOWmempalace/wal.py13CODE
LOWmempalace/llm_refine.py21CODE
LOWmempalace/server_registry.py25CODE
LOWmempalace/llm_client.py24CODE
LOWmempalace/corpus_origin.py35CODE
LOWmempalace/_stdio.py25CODE
LOWmempalace/format_miner.py59CODE
LOWmempalace/sweeper.py39CODE
LOWmempalace/ids.py16CODE
LOWmempalace/daemon.py8CODE
LOWmempalace/entity_detector.py33CODE
LOWmempalace/dynamics.py29CODE
LOWmempalace/mcp_proxy.py22CODE
LOWmempalace/backends/milvus.py11CODE
102 more matches not shown…
Deep Nesting182 hits · 124 pts
SeverityFileLineSnippetContext
LOWtools/render_jsonl.py20CODE
LOWtests/test_corpus_origin_integration.py1334CODE
LOWtests/conftest.py146CODE
LOWtests/conftest.py154CODE
LOWtests/test_repair_lock_safety.py39CODE
LOWtests/test_hooks_cli.py476CODE
LOWtests/test_hooks_cli.py508CODE
LOWtests/test_hooks_cli.py946CODE
LOWtests/test_hooks_cli.py962CODE
LOWtests/test_hooks_cli.py989CODE
LOWtests/test_hooks_cli.py1024CODE
LOWtests/test_hooks_cli.py1058CODE
LOWtests/test_hooks_cli.py1107CODE
LOWtests/test_hooks_cli.py1145CODE
LOWtests/test_hooks_cli.py1156CODE
LOWtests/test_hooks_cli.py1311CODE
LOWtests/test_hooks_cli.py1361CODE
LOWtests/test_hooks_cli.py1386CODE
LOWtests/test_hnsw_capacity.py361CODE
LOWtests/test_chroma_collection_lock.py80CODE
LOWtests/test_logstream_sse.py66CODE
LOWtests/test_miner.py2418CODE
LOWtests/test_palace_locks.py56CODE
LOWtests/test_palace_locks.py271CODE
LOWtests/benchmarks/report.py34CODE
LOWmempalace/repair.py199CODE
LOWmempalace/repair.py458CODE
LOWmempalace/repair.py548CODE
LOWmempalace/repair.py1042CODE
LOWmempalace/repair.py1326CODE
LOWmempalace/repair.py1747CODE
LOWmempalace/repair.py2532CODE
LOWmempalace/sync.py312CODE
LOWmempalace/logsync.py51CODE
LOWmempalace/service.py175CODE
LOWmempalace/convo_scanner.py57CODE
LOWmempalace/project_scanner.py526CODE
LOWmempalace/miner.py638CODE
LOWmempalace/miner.py786CODE
LOWmempalace/miner.py890CODE
LOWmempalace/miner.py1492CODE
LOWmempalace/miner.py1716CODE
LOWmempalace/miner.py1901CODE
LOWmempalace/palace_graph.py127CODE
LOWmempalace/palace_graph.py195CODE
LOWmempalace/palace_graph.py305CODE
LOWmempalace/palace_graph.py773CODE
LOWmempalace/room_detector_local.py100CODE
LOWmempalace/room_detector_local.py195CODE
LOWmempalace/embedding.py389CODE
LOWmempalace/dialect.py809CODE
LOWmempalace/dialect.py931CODE
LOWmempalace/knowledge_graph.py338CODE
LOWmempalace/knowledge_graph.py370CODE
LOWmempalace/knowledge_graph.py718CODE
LOWmempalace/onboarding.py113CODE
LOWmempalace/onboarding.py145CODE
LOWmempalace/onboarding.py390CODE
LOWmempalace/searcher.py853CODE
LOWmempalace/exporter.py68CODE
122 more matches not shown…
Over-Commented Block140 hits · 106 pts
SeverityFileLineSnippetContext
LOWpyproject.toml81 "pytest-rerunfailures>=12.0",COMMENT
LOWpyproject.toml101]COMMENT
LOWpyproject.toml121dml = ["onnxruntime-directml>=1.16"]COMMENT
LOWdocker-entrypoint.sh1#!/usr/bin/env shCOMMENT
LOWdocker-compose.yml1# MemPalace via Docker Compose.COMMENT
LOWdocker-compose.yml21 tty: falseCOMMENT
LOWtools/backup_claude_jsonls.sh1#!/usr/bin/env bashCOMMENT
LOWtools/find_orphan_claude_jsonls.sh1#!/usr/bin/env bashCOMMENT
LOWdeploy/docker-compose.server.yml1# MemPalace remote team server — MCP over HTTP, backed by a central Qdrant.COMMENT
LOWtests/test_corpus_origin_integration.py1321# must use feature names ("corpus_origin", "corpus-origin detection")COMMENT
LOWtests/test_sync.py1861COMMENT
LOWtests/test_format_miner.py561COMMENT
LOWtests/test_daemon.py21except MineAlreadyRunning:COMMENT
LOWtests/test_convo_miner.py301 finally:COMMENT
LOWtests/test_palace_locks.py441COMMENT
LOWtests/test_qdrant_bulk_metadata_scroll.py321 assert call_log[0]["limit"] == qdrant_mod._SCROLL_PAGE_SIZECOMMENT
LOWtests/test_qdrant_bulk_metadata_scroll.py341# automatic link between the two. (Diagnosed during review on #1832 afterCOMMENT
LOWtests/test_normalize.py461# ── _try_gemini_jsonl ──────────────────────────────────────────────────COMMENT
LOWtests/test_normalize.py2061# Pi agent stores sessions as JSONL underCOMMENT
LOWmempalace/repair.py221 f"no-offset fallback failed after collecting {len(ids)} "COMMENT
LOWmempalace/repair.py241 # HNSW-preflight-sweep work).COMMENT
LOWmempalace/repair.py941# killed-mid-write mines are the usual cause (#1596). A regex matching onlyCOMMENT
LOWmempalace/repair.py2221 ts = datetime.now().strftime("%Y%m%d-%H%M%S")COMMENT
LOWmempalace/sync.py441 if bucket == "gitignored":COMMENT
LOWmempalace/config.py41def strip_lone_surrogates(text: str) -> str:COMMENT
LOWmempalace/config.py121 raise ValueError(f"{field_name} exceeds maximum length of {MAX_NAME_LENGTH} characters")COMMENT
LOWmempalace/config.py501 tmp = str(path.with_name(f"{path.name}.tmp-{os.getpid()}"))COMMENT
LOWmempalace/config.py621 self._people_map_file = self._config_dir / "people_map.json"COMMENT
LOWmempalace/miner.py201)COMMENT
LOWmempalace/miner.py661 chunk_overlap = CHUNK_OVERLAPCOMMENT
LOWmempalace/miner.py701 # Running newline tallies for the 1-indexed (line_start, line_end)COMMENT
LOWmempalace/miner.py1101 if not matched:COMMENT
LOWmempalace/miner.py1121# 4. Filesystem mtime (os.path.getmtime)COMMENT
LOWmempalace/miner.py1141# already validated.COMMENT
LOWmempalace/miner.py1561 # both delete, and both insert — creating duplicates or losing data.COMMENT
LOWmempalace/palace_graph.py841# When two wings have one or more confirmed topics in common (e.g. bothCOMMENT
LOWmempalace/embedding.py81#COMMENT
LOWmempalace/embedding.py241COMMENT
LOWmempalace/searcher.py961 ).fetchall()COMMENT
LOWmempalace/__init__.py1"""MemPalace — Give your AI a memory. No API key required."""COMMENT
LOWmempalace/__init__.py41# warnings ("capture() takes 1 positional argument but 3 were given"). In 1.x theCOMMENT
LOWmempalace/encoding_repair.py81)COMMENT
LOWmempalace/cli.py181 if not samples:COMMENT
LOWmempalace/cli.py1661 skipped_from = cursorCOMMENT
LOWmempalace/cli.py2261COMMENT
LOWmempalace/cli.py2301 # scripts and CI gates see the failure.COMMENT
LOWmempalace/corpus_origin.py41COMMENT
LOWmempalace/palace.py61 "target",COMMENT
LOWmempalace/palace.py1141 # `_clients` dict and leave _DEFAULT_BACKEND's live handle in place,COMMENT
LOWmempalace/palace.py1161# open file description, so a second open of the lock file from the same processCOMMENT
LOWmempalace/ids.py21# Audits compare like-for-like: drawers without ``id_recipe`` are treatedCOMMENT
LOWmempalace/diary_ingest.py221 # Per-entry drawers, with character chunking inside any entryCOMMENT
LOWmempalace/migrate.py241COMMENT
LOWmempalace/migrate.py401# Wing-name normalization migration (#1675 follow-up)COMMENT
LOWmempalace/hooks_cli.py81 3. Editable install: venv/ sibling to mempalace/COMMENT
LOWmempalace/hooks_cli.py281# fire should skip rather than pile up — multiple concurrent mines against theCOMMENT
LOWmempalace/daemon.py461 #COMMENT
LOWmempalace/mcp_server.py201 # it here instead of relying on logging's default formatter. TheCOMMENT
LOWmempalace/mcp_server.py341# to 8 h), a background daemon thread exits the process once no requestCOMMENT
LOWmempalace/mcp_server.py381 "mempalace_artifact_put",COMMENT
80 more matches not shown…
AI Slop Vocabulary23 hits · 74 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_palace_graph_tunnels.py93 # instead of raising — keeps read-path filters robust to bad records.COMMENT
MEDIUMtests/test_hooks_cli.py423 # here: _count_human_messages counts both harness shapes, and we assert onlyCOMMENT
MEDIUMtests/test_hooks_cli.py424 # the harness -> agent_name routing, not transcript parsing.COMMENT
MEDIUMtests/test_hooks_bash_compat.py152 # leaks debug output here would silently break the harness contract.COMMENT
MEDIUMtests/test_hooks_bash_compat.py349 # and the bottom call supplies the ``--hook session-end --harness`` argsCOMMENT
MEDIUMtests/test_cli_logstream.py724 # a harness backgrounds this process to receive.COMMENT
MEDIUMmempalace/repair.py2226 # harness), renaming the directory fails atomically UP FRONT onCOMMENT
LOWmempalace/room_detector_local.py334 # If still nothing, just use generalCOMMENT
MEDIUMmempalace/cli.py1589 # silently, leaving a harness waiting on a watcher it believes willCOMMENT
MEDIUMmempalace/format_miner.py319 """Convert ``path`` to plain text via MarkItDown, with comprehensive fringe-case handling.STRING
MEDIUMmempalace/hooks_cli.py1517 # Validate the harness-provided transcript path before touching itCOMMENT
MEDIUMmempalace/mcp_server.py8186# this palace, a stdio server spawned by an agent harness must not open itsCOMMENT
MEDIUMmempalace/backends/base.py628 #: no-op, so a benchmark harness can trust the set. Backends MAY add theirCOMMENT
MEDIUMhooks/mempal_save_hook.sh67# Why this is nontrivial: GUI-launched Claude Code on macOS (or any harnessCOMMENT
MEDIUMhooks/mempal_save_hook.sh128# every Stop hook for users on i18n harnesses or unusual harness configs.COMMENT
MEDIUMhooks/mempal_session_end_hook.sh9# exited. All logic lives in mempalace.hooks_cli for cross-harness extensibility.COMMENT
MEDIUMhooks/mempal_session_end_hook.sh40# Return immediately so the harness never blocks on session exit.COMMENT
MEDIUMhooks/antigravity/lib/common.sh216# a hostile / malformed harness payload cannot inject command tokens.COMMENT
MEDIUMbenchmarks/model_eval/metrics.py25# the harness can land on develop independently of the model-router PR.COMMENT
MEDIUM.claude-plugin/hooks/mempal-stop-hook.sh3# All logic lives in mempalace.hooks_cli for cross-harness extensibilityCOMMENT
MEDIUM.claude-plugin/hooks/mempal-session-end-hook.sh11# mempalace.hooks_cli for cross-harness extensibility.COMMENT
MEDIUM.claude-plugin/hooks/mempal-session-end-hook.sh42# Return immediately so the harness never blocks on session exit.COMMENT
MEDIUM.claude-plugin/hooks/mempal-precompact-hook.sh3# All logic lives in mempalace.hooks_cli for cross-harness extensibilityCOMMENT
Modern AI Meta-Vocabulary22 hits · 66 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md378- **`mempalace repair` can now recover palaces whose HNSW segment writer is stuck on `apply_logs`.** Both the existing `CODE
MEDIUMpyproject.toml33 # Multilingual embedding model deps. Onboarding now offers theCOMMENT
MEDIUMpyproject.toml115# Hardware acceleration for the ONNX embedding model. Install exactly one:COMMENT
MEDIUMdocker-compose.yml11# config, and the cached embedding model across runs.COMMENT
MEDIUMwebsite/guide/antigravity.md272## Joining the shared brain (multi-agent)COMMENT
MEDIUMtests/test_closets.py970 # the embedding model's hard token limit. This trips the size-capCOMMENT
MEDIUMtests/test_mcp_server.py403 # palace scaffold on disk before the user runs ``mempalace init``.COMMENT
MEDIUMtests/test_miner.py2683 # hallucinates dates on benign inputs. These tests pin the fix: junkCOMMENT
MEDIUMtests/test_migrate_wings.py68 # Explicit embeddings keep the test hermetic (no embedding model needed) —COMMENT
MEDIUMmempalace/miner.py1137# would hallucinate dates from any digit-bearing text (Igor's reproductionsCOMMENT
MEDIUMmempalace/miner.py1151# padding from today's date, which is hallucination, not extraction.COMMENT
MEDIUMmempalace/miner.py1340 # (no fuzzy=True) — without it, dateutil hallucinates dates from anyCOMMENT
MEDIUMmempalace/mcp_server.py3177 # embedding model never sees a document above ``chunk_size``.COMMENT
MEDIUMmempalace/mcp_server.py4198 # embedding model never sees a document above ``chunk_size``.COMMENT
MEDIUMmempalace/mcp_server.py4212 # if the embedding model fails mid-loop. ``col.add`` (notCOMMENT
MEDIUMhooks/mempal_precompact_hook.sh5# gets compressed to free up context window space.COMMENT
MEDIUMbenchmarks/BENCHMARKS.md749Same purpose as #2: isolate the contribution of a better embedding model from the contribution of heuristics.CODE
MEDIUMbenchmarks/model_eval/runner.py73# Tasks that score via semantic similarity and require an embedding model.COMMENT
MEDIUMbenchmarks/model_eval/README.md34# This script reads candidates.yaml and pulls every tier-1 model + the embedding modelCOMMENT
MEDIUMbenchmarks/model_eval/reports/2026-05-10-analysis.md200### The 0.36 "hallucination rate" on qwen3:4b memory extraction is a scoring artifactCOMMENT
MEDIUMscripts/docker-smoke.sh91# First run also downloads the ~80 MB embedding model into the volume, so thisCOMMENT
MEDIUM.github/workflows/docker-publish.yml53 # Reaches Chroma's S3 once to fetch the ~80 MB embedding model, so it isCOMMENT
Modern Structural Boilerplate41 hits · 40 pts
SeverityFileLineSnippetContext
LOWtests/test_mine_lock_lifecycle.py20def _set_home(monkeypatch, tmp_path: Path) -> None:CODE
LOWtests/test_hnsw_capacity.py404def _set_drawer_created_at(palace: str, timestamps: dict[int, str]) -> None:CODE
LOWmempalace/sync.py30logger = logging.getLogger(__name__)CODE
LOWmempalace/sync.py524__all__ = [CODE
LOWmempalace/logsync.py43__all__ = ["PEERS_FILENAME", "SyncPeerError", "load_peers", "sync_all", "sync_with_peer"]CODE
LOWmempalace/config.py1137 def set_embedding_model(self, model: str) -> None:CODE
LOWmempalace/config.py1153 def set_backend(self, backend: str) -> None:CODE
LOWmempalace/hallways.py58__all__ = [CODE
LOWmempalace/miner.py858def _set_wing_topics(existing: dict, wing_key: str, topics_for_wing: list, coerce) -> None:CODE
LOWmempalace/room_detector_local.py19logger = logging.getLogger(__name__)CODE
LOWmempalace/embedding.py58logger = logging.getLogger(__name__)CODE
LOWmempalace/__init__.py60__all__ = ["__version__"]CODE
LOWmempalace/wal.py21logger = logging.getLogger(__name__)CODE
LOWmempalace/server_registry.py34logger = logging.getLogger(__name__)CODE
LOWmempalace/format_miner.py94__all__ = [CODE
LOWmempalace/sweeper.py51logger = logging.getLogger(__name__)CODE
LOWmempalace/diary_ingest.py38logger = logging.getLogger(__name__)CODE
LOWmempalace/dynamics.py245__all__ = [CODE
LOWmempalace/mcp_proxy.py31logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/milvus.py353 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/milvus.py50logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/milvus.py1055 def _set_embedder_identity(self, palace: PalaceRef, collection_name: str, identity) -> None:CODE
LOWmempalace/backends/milvus.py1325__all__ = [CODE
LOWmempalace/backends/qdrant.py49logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/qdrant.py719 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/qdrant.py1302 def _set_embedder_identity(self, palace: PalaceRef, collection_name: str, identity) -> None:CODE
LOWmempalace/backends/qdrant.py1487__all__ = ["QdrantBackend", "QdrantCollection"]CODE
LOWmempalace/backends/registry.py24logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/embedding_wrapper.py78 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/__init__.py55__all__ = [CODE
LOWmempalace/backends/pgvector.py62logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/pgvector.py859 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/pgvector.py1480 def _set_embedder_identity(self, palace: PalaceRef, collection_name: str, identity) -> None:CODE
LOWmempalace/backends/chroma.py39logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/chroma.py2450 def set_embedder_identity(self, identity) -> None:STRING
LOWmempalace/backends/base.py454 def set_embedder_identity(self, identity: EmbedderIdentity) -> None:CODE
LOWmempalace/backends/sqlite_exact.py45logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/sqlite_exact.py589 def set_embedder_identity(self, identity) -> None:STRING
LOWmempalace/backends/sqlite_exact.py1741__all__ = ["SQLiteExactBackend", "SQLiteExactCollection"]STRING
LOWmempalace/sources/registry.py29logger = logging.getLogger(__name__)CODE
LOWmempalace/sources/__init__.py48__all__ = [CODE
Structural Annotation Overuse24 hits · 39 pts
SeverityFileLineSnippetContext
LOWmempalace/onboarding.py84# Step 1: Mode selectionCOMMENT
LOWmempalace/onboarding.py268# Step 6: Ambiguity warningsCOMMENT
LOWmempalace/onboarding.py399 # Step 1: ModeCOMMENT
LOWmempalace/onboarding.py409 # Step 2: PeopleCOMMENT
LOWmempalace/onboarding.py412 # Step 3: ProjectsCOMMENT
LOWmempalace/onboarding.py415 # Step 4: Wings (stored in config, not registry — just show user)COMMENT
LOWmempalace/onboarding.py418 # Step 5: Auto-detect additional people from filesCOMMENT
LOWmempalace/onboarding.py451 # Step 6: Warn about ambiguous namesCOMMENT
LOWmempalace/onboarding.py141# Step 2: PeopleSTRING
LOWmempalace/onboarding.py196# Step 3: ProjectsSTRING
LOWmempalace/onboarding.py222# Step 4: WingsSTRING
LOWmempalace/onboarding.py244# Step 5: Auto-detect from filesSTRING
LOWmempalace/instructions/status.md5## Step 1: Gather Palace StatusCOMMENT
LOWmempalace/instructions/status.md12## Step 2: Display Wing/Room/Drawer CountsCOMMENT
LOWmempalace/instructions/status.md22## Step 3: Knowledge Graph Stats (MCP only)COMMENT
LOWmempalace/instructions/status.md32## Step 4: Suggest Next ActionsCOMMENT
LOWmempalace/instructions/init.md6## Step 1: Check Python versionCOMMENT
LOWmempalace/instructions/init.md12## Step 2: Check if mempalace is already installedCOMMENT
LOWmempalace/instructions/init.md24## Step 3: Install mempalaceCOMMENT
LOWmempalace/instructions/init.md48## Step 4: Ask for project directoryCOMMENT
LOWmempalace/instructions/init.md54## Step 5: Initialize the palaceCOMMENT
LOWmempalace/instructions/init.md60## Step 6: Configure MCP serverCOMMENT
LOWmempalace/instructions/init.md73## Step 7: Verify installationCOMMENT
LOWmempalace/instructions/init.md80## Step 8: Show next stepsCOMMENT
Self-Referential Comments10 hits · 39 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_hall_detection.py109 # Create a conversation file with technical contentCOMMENT
MEDIUMtests/test_mcp_server.py841 # Create a collection so status worksCOMMENT
MEDIUMtests/test_mcp_server.py871 # Create the DB file (init does this) but NOT the collectionCOMMENT
MEDIUMtests/test_mcp_server.py4321 # Create a real collection so _get_collection succeedsCOMMENT
MEDIUMtests/test_repair.py537 # Create a valid sqlite file so the repair preflight can run quick_check.COMMENT
MEDIUMtests/test_miner.py2816 # Create a real file with known mtime.COMMENT
MEDIUMtests/test_backends.py2125 # Create the collection using the default (minilm-based) EF.COMMENT
MEDIUMtests/benchmarks/test_knowledge_graph_bench.py58 # Create a hub entity connected to many othersCOMMENT
MEDIUMhooks/cursor/lib/common.sh26# This file is sourced, not executed, so it intentionally has noCOMMENT
MEDIUMhooks/antigravity/lib/common.sh32# This file is sourced, not executed, so it intentionally has noCOMMENT
Cross-Language Confusion8 hits · 36 pts
SeverityFileLineSnippetContext
HIGHtests/test_mcp_server.py5501 the alias only fills in when 'entry' is absent or null, not merely falsy.STRING
HIGHtests/test_hooks_cli.py769 '{"type":"x","cwd":null}\n'CODE
HIGHtests/test_hooks_cli.py764 """A cwd field that isn't a string (e.g. null, number) must be skipped."""STRING
HIGHtests/test_save_hook_mines.py115 script.write_text(f'{func_src}\nis_valid_transcript_path "$1" && echo OK || echo NO\n')CODE
HIGHtests/test_corpus_origin.py283 "primary_platform": null,CODE
HIGHtests/test_cli.py1499 Otherwise ``repair --dry-run && repair --yes`` walks into the destructiveSTRING
HIGHmempalace/mcp_server.py6710 # all (or passed it as null). An explicit entry — even "" — wins.COMMENT
HIGHbenchmarks/mine_bench.py17 uv venv /tmp/gpu && source /tmp/gpu/bin/activateSTRING
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHtests/test_closet_llm.py0import sys from mempalace.palace import mine_palace_lock with mine_palace_lock(sys.argv[1]): print("ready", flush=true) STRING
HIGHtests/test_mcp_server.py0import sys from mempalace.palace import mine_palace_lock with mine_palace_lock(sys.argv[1]): print("ready", flush=true) STRING
HIGHtests/test_sqlite_exact_backend.py0import sys from mempalace.palace import mine_palace_lock with mine_palace_lock(sys.argv[1]): print("ready", flush=true) STRING
HIGHmempalace/repair.py0select count(*) from embeddings e join segments s on e.segment_id = s.id join collections c on s.collection = c.id whereSTRING
HIGHmempalace/mcp_server.py0select count(*) from embeddings e join segments s on e.segment_id = s.id join collections c on s.collection = c.id whereSTRING
HIGHmempalace/backends/chroma.py0select count(*) from embeddings e join segments s on e.segment_id = s.id join collections c on s.collection = c.id whereSTRING
Fake / Example Data25 hits · 23 pts
SeverityFileLineSnippetContext
LOWtests/test_closets.py211 content = "lorem ipsum dolor sit amet consectetur adipiscing elit"CODE
LOWtests/test_closets.py211 content = "lorem ipsum dolor sit amet consectetur adipiscing elit"CODE
LOWtests/test_miner_fts5_validation.py181 (src / "a.md").write_text("placeholder")CODE
LOWtests/test_miner_fts5_validation.py231 big = "lorem ipsum " * 500CODE
LOWtests/test_miner_fts5_validation.py283 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py296 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/test_miner_fts5_validation.py336 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py352 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/test_miner_fts5_validation.py487 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py497 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/conftest.py371 kg.add_triple("Alice", "works_at", "Acme Corp", valid_from="2020-01-01", valid_to="2024-12-31")CODE
LOWtests/test_format_miner.py224 f.write_bytes(b"placeholder")CODE
LOWtests/test_format_miner.py232 f.write_bytes(b"placeholder")CODE
LOWtests/test_project_scanner.py186 assert _looks_like_real_name("Jane Doe")CODE
LOWtests/test_project_scanner.py227 ("Jane Doe", "jane@work.com", "r"),CODE
LOWtests/test_project_scanner.py228 ("Jane Doe", "jane@personal.com", "r"),CODE
LOWtests/test_project_scanner.py231 assert people["Jane Doe"].total_commits == 2CODE
LOWtests/test_project_scanner.py232 assert len(people["Jane Doe"].emails) == 2CODE
LOWtests/test_project_scanner.py335def _init_git_repo(path: Path, name: str = "Jane Doe", email: str = "jane@example.com"):CODE
LOWtests/test_project_scanner.py504 assert [person.name for person in people] == ["Jane Doe"]CODE
LOWtests/test_project_scanner.py525 people = [PersonInfo(name="Jane Doe", total_commits=5, repos={"r"})]CODE
LOWtests/test_project_scanner.py532 assert d["people"][0]["name"] == "Jane Doe"CODE
LOWtests/test_project_scanner.py492 _init_git_repo(tmp_path, name="Jane Doe", email="jane@example.com")CODE
LOWtests/test_knowledge_graph.py105 assert "Acme Corp" in employersCODE
LOWtests/test_knowledge_graph.py112 assert "Acme Corp" not in employersCODE
Redundant / Tautological Comments12 hits · 18 pts
SeverityFileLineSnippetContext
LOWtests/test_readme_claims.py556 # Check if either miner references 'hall' in the metadata it writesCOMMENT
LOWtests/test_save_hook_mines.py53 # Check if MEMPAL_DIR defaults to emptyCOMMENT
LOWtests/test_antigravity_hooks_shell.py646 # Set interval to 1 so the modulo gate would normally fire on theCOMMENT
LOWtests/test_miner.py2659 # Set mtime to a known value (2023-07-15 12:00 UTC)COMMENT
LOWtests/benchmarks/test_search_bench.py86 # Check if needle content appears in top 5COMMENT
LOWtests/benchmarks/data_generator.py365 # Write files distributed across room directoriesCOMMENT
LOWtests/benchmarks/test_palace_boost.py173 # Check if boost increases with scale (the hypothesis)COMMENT
LOWmempalace/normalize.py309 # Check if this message is tool_results only (no user text)COMMENT
LOWmempalace/entity_registry.py466 # Check if this is an ambiguous wordCOMMENT
LOWbenchmarks/convomem_bench.py201 # Check if any retrieved message matches evidenceCOMMENT
LOWbenchmarks/membench_bench.py376 # Check if any target turn is retrieved.COMMENT
LOWbenchmarks/longmemeval_bench.py3216 # Print resultsCOMMENT
Verbosity Indicators12 hits · 16 pts
SeverityFileLineSnippetContext
LOWmempalace/onboarding.py84# Step 1: Mode selectionCOMMENT
LOWmempalace/onboarding.py268# Step 6: Ambiguity warningsCOMMENT
LOWmempalace/onboarding.py399 # Step 1: ModeCOMMENT
LOWmempalace/onboarding.py409 # Step 2: PeopleCOMMENT
LOWmempalace/onboarding.py412 # Step 3: ProjectsCOMMENT
LOWmempalace/onboarding.py415 # Step 4: Wings (stored in config, not registry — just show user)COMMENT
LOWmempalace/onboarding.py418 # Step 5: Auto-detect additional people from filesCOMMENT
LOWmempalace/onboarding.py451 # Step 6: Warn about ambiguous namesCOMMENT
LOWmempalace/onboarding.py141# Step 2: PeopleSTRING
LOWmempalace/onboarding.py196# Step 3: ProjectsSTRING
LOWmempalace/onboarding.py222# Step 4: WingsSTRING
LOWmempalace/onboarding.py244# Step 5: Auto-detect from filesSTRING
AI Structural Patterns15 hits · 10 pts
SeverityFileLineSnippetContext
LOWmempalace/miner.py1844CODE
LOWmempalace/miner.py1901CODE
LOWmempalace/searcher.py853CODE
LOWmempalace/searcher.py1956CODE
LOWmempalace/logstream.py206CODE
LOWmempalace/logstream.py625CODE
LOWmempalace/logstream.py914CODE
LOWmempalace/daemon.py1384CODE
LOWmempalace/mcp_server.py2451CODE
LOWmempalace/mcp_server.py4696CODE
LOWmempalace/mcp_server.py4786CODE
LOWmempalace/mcp_server.py4829CODE
LOWbenchmarks/locomo_bench.py621CODE
LOWbenchmarks/longmemeval_bench.py2936CODE
LOWbenchmarks/model_eval/runner.py234CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHmempalace/palace_graph.py628Create an explicit (symmetric) tunnel between two locations in the palace. Tunnels are undirected: ``create_tunnel(STRING
Overly Generic Function Names3 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/test_mcp_server.py5535 def helper(req):CODE
LOWtests/test_mcp_proxy.py95 def handle_request(self, request):CODE
LOWmempalace/mcp_server.py6576def handle_request(request):CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…nchmarks/results_convomem_raw_top10_20260414_1649.json1873 "question": "I just got a Slack message from a colleague that I need to handle later. What's a good way to keep tracCODE