AI Slop Code RIsk Monitor

MemPalace/mempalace

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

30.6 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for MemPalace/mempalace, a Python project with 59,497 GitHub stars. SynthScan examined 348,645 lines of code across 671 source files, recording 8187 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 30.6 (High pattern signal); it is not an authorship estimate.

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

30.6
Adjusted Signal
30.6
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
59.5K
Stars
Python
Language
348.6K
Lines of Code
671
Files
8.2K
Pattern Hits
2026-10-12
Scan Date
0.34
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 51.3/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 5.0/100 · LOW

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

Agent Over-Engineering Ratio 75.2/100 · CRITICAL

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

PR Review Velocity Impact 81.3/100 · CRITICAL

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

What These Metrics Mean

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

Pattern-Signal History

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

Severity Breakdown

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

CRITICAL 0HIGH 231MEDIUM 1182LOW 6774

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 8187 distinct pattern matches across 22 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 Identifiers5370 hits · 4415 pts
SeverityFileLineSnippetContext
LOWCONTRIBUTING.md46def test_function_never_fabricates_output_on_random_input(s):CODE
LOW⚡tests/test_closets.py210 def test_emits_fallback_line_when_nothing_extractable(self):CODE
LOW⚡tests/test_closets.py217 def test_pointer_references_first_three_drawers(self):CODE
LOW⚡tests/test_closets.py224 def test_includes_date_line_segment_when_metas_provided(self):CODE
LOW⚡tests/test_closets.py510 def test_parses_single_pointer(self):CODE
LOW⚡tests/test_closets.py513 def test_parses_multiple_pointers_per_line(self):CODE
LOW⚡tests/test_closets.py517 def test_dedupes_across_lines(self):CODE
LOW⚡tests/test_closets.py521 def test_empty_doc_returns_empty(self):CODE
LOW⚡tests/test_closets.py530 def test_pure_drawer_when_no_closets(self, palace_path, seeded_collection):CODE
LOW⚡tests/test_closets.py540 def test_closet_boost_marks_hit_as_drawer_plus_closet(self, palace_path, seeded_collection):CODE
LOW⚡tests/test_closets.py590 def test_extracts_capitalized_names(self):CODE
LOW⚡tests/test_closets.py596 def test_empty_for_no_entities(self):CODE
LOW⚡tests/test_closets.py605 def test_stoplist_filters_sentence_starters(self):CODE
LOW⚡tests/test_closets.py703 def test_scores_positive_for_matching_doc(self):CODE
LOW⚡tests/test_closets.py711 def test_scores_zero_when_no_overlap(self):CODE
LOW⚡tests/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_ingested_drawers_carry_the_directory_they_were_read_from(self, tmp_path):CODE
LOWtests/test_closets.py803 def test_ingest_skips_unchanged_on_second_run(self, tmp_path):CODE
LOWtests/test_closets.py817 def test_ingest_detects_same_size_content_edit(self, tmp_path):CODE
LOWtests/test_closets.py854 def test_legacy_state_backfills_content_hash(self, tmp_path):CODE
LOWtests/test_closets.py895 def test_state_file_lives_outside_diary_dir(self, tmp_path):CODE
LOWtests/test_closets.py925 def test_wing_prefixed_drawer_id_prevents_cross_diary_collision(self, tmp_path):CODE
LOWtests/test_closets.py965 def test_diary_multiple_entries_one_drawer_each(self, tmp_path):CODE
LOWtests/test_closets.py986 def test_large_diary_with_oversized_entry_chunks_within_entry(self, tmp_path):CODE
LOWtests/test_closets.py1021 def test_incremental_appends_new_entry_only(self, tmp_path):CODE
LOWtests/test_closets.py1048 def test_entry_count_watermark_matches_drawer_count(self, tmp_path):CODE
LOWtests/test_closets.py1075 def test_diary_chunk_index_is_global_across_entries(self, tmp_path):CODE
LOWtests/test_closets.py1112 def test_diary_entry_deletion_purges_orphan_drawers(self, tmp_path):CODE
LOWtests/test_closets.py1147 def test_diary_header_only_entry_produces_drawer(self, tmp_path):CODE
LOWtests/test_closets.py1173 def test_diary_atomic_batched_upsert_on_failure(self, tmp_path, monkeypatch):CODE
LOWtests/test_closets.py1284 def test_list_tunnels_with_and_without_filter(self):CODE
LOWtests/test_closets.py1298 def test_dedup_same_endpoints_updates_label(self):CODE
LOWtests/test_closets.py1305 def test_follow_tunnels_returns_connected_endpoints(self):CODE
LOWtests/test_closets.py1328 def test_follow_tunnels_works_from_either_endpoint(self):CODE
LOWtests/test_closets.py1341 def test_empty_endpoint_fields_rejected(self):CODE
LOWtests/test_closets.py1356 def test_corrupt_tunnel_file_does_not_lose_new_writes(self):CODE
LOWtests/test_closets.py1374 def test_atomic_write_leaves_no_stray_tmp_file(self):CODE
LOWtests/test_closets.py1383 def test_concurrent_creates_preserve_all_tunnels(self):CODE
LOWtests/test_closets.py1409 def test_created_at_is_timezone_aware(self):CODE
LOWtests/test_closets.py1445 def test_expand_returns_matched_plus_neighbors(self, palace_path):CODE
LOWtests/test_closets.py1464 def test_expand_at_start_of_file_only_has_next_neighbor(self, palace_path):CODE
5310 more matches not shown…
Decorative Section Separators1087 hits · 3638 pts
SeverityFileLineSnippetContext
MEDIUMtools/find_orphan_claude_jsonls.sh3# -----------------------------------------------------------------------------COMMENT
MEDIUMtools/find_orphan_claude_jsonls.sh14# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_closets.py222 # ── Tier 6a — date + line-range pointer segment ────────────────────────COMMENT
MEDIUM⚡tests/test_closets.py506# ── _extract_drawer_ids_from_closet ───────────────────────────────────COMMENT
MEDIUM⚡tests/test_closets.py526# ── search_memories closet-first path ────────────────────────────────COMMENT
MEDIUM⚡tests/test_closets.py586# ── entity metadata ──────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/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.py963 # ── #1539: per-entry drawers, oversized-entry chunking ─────────COMMENT
MEDIUMtests/test_closets.py1242# ── cross-wing tunnels ───────────────────────────────────────────────COMMENT
MEDIUMtests/test_closets.py1316 # ── regression: symmetry, durability, validation, concurrency ─────COMMENT
MEDIUMtests/test_closets.py1416# ── drawer-grep neighbor expansion ────────────────────────────────────COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py24# =============================================================================COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py26# =============================================================================COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py58# =============================================================================COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py60# =============================================================================COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py106# =============================================================================COMMENT
MEDIUM⚡tests/test_hallways_palace_scoped.py108# =============================================================================COMMENT
MEDIUM⚡tests/test_searcher.py69# ── search_memories (API) ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_searcher.py809# ── _tokenize stop-word filter ─────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_searcher.py1152# ── _result_drawer_id logical-id resolution (#2185) ────────────────────COMMENT
MEDIUM⚡tests/test_searcher.py1181# ── since/before date window (#463) ────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py27# ── build_where_filter (unit) ──────────────────────────────────────────COMMENT
MEDIUMtests/test_searcher.py400# ── BM25 internals: None / empty document safety ─────────────────────COMMENT
MEDIUMtests/test_searcher.py438# ── search() (CLI print function) ─────────────────────────────────────COMMENT
MEDIUM⚡tests/test_backups.py244# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_backups.py246# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_miner_fts5_validation.py125# ── 1. Helper returns silently on a clean palace ────────────────────COMMENT
MEDIUM⚡tests/test_miner_fts5_validation.py136# ── 2. Helper raises MineValidationError on corrupt sqlite ──────────COMMENT
MEDIUM⚡tests/test_miner_fts5_validation.py175# ── 3. cmd_mine surfaces MineValidationError as exit-1 + banner ─────COMMENT
MEDIUM⚡tests/test_miner_fts5_validation.py223# ── 4. Dry-run skips validation ─────────────────────────────────────COMMENT
MEDIUMtests/test_miner_fts5_validation.py25# ── Helpers ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_miner_fts5_validation.py868# ── 8. A mine that wrote nothing skips the check (#2684) ───────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py6# ── Config loading ─────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py61# ── Config: force_reload and invalid JSON ──────────────────────────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py101# ── is_true_session_start ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py182# ── extract_timestamp ──────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py205# ── extract_subject ────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_split_mega_files.py238# ── split_file ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_split_mega_files.py133# ── find_session_boundaries ────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_palace_graph_tunnels.py517# =============================================================================COMMENT
MEDIUM⚡tests/test_palace_graph_tunnels.py519# =============================================================================COMMENT
MEDIUMtests/test_palace_graph_tunnels.py590# =============================================================================COMMENT
MEDIUMtests/test_palace_graph_tunnels.py592# =============================================================================COMMENT
MEDIUM⚡tests/test_logstream_sync.py90# ── HLC ───────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_logstream_sync.py140# ── Replica identity ──────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_logstream_sync.py173# ── Migration / backfill ──────────────────────────────────────────────────COMMENT
MEDIUMtests/test_logstream_sync.py392# ── HTTP endpoints + CLI (real wire) ─────────────────────────────────────COMMENT
MEDIUM⚡tests/test_logstream_sync.py339# ── Convergence (engine over simulated wire) ─────────────────────────────STRING
MEDIUMtests/test_logstream_sync.py225# ── Sync primitives ───────────────────────────────────────────────────────STRING
MEDIUM⚡tests/test_corpus_origin_integration.py1049# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_corpus_origin_integration.py1056# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_corpus_origin_integration.py1721# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/test_corpus_origin_integration.py1730# ─────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_corpus_origin_integration.py114# ── Baseline test: pin v3.3.3 behavior ────────────────────────────────────COMMENT
1027 more matches not shown…
Empty Error Handlers214 hits · 1065 pts
SeverityFileLineSnippetContext
HIGHtests/test_update_awareness.py138except OSError:CODE
HIGHtests/test_hybrid_search.py34except Exception:CODE
HIGHtests/conftest.py110except ImportError:CODE
HIGHtests/conftest.py262except AttributeError:CODE
HIGHtests/conftest.py275except (ImportError, AttributeError):CODE
HIGHtests/conftest.py298except (ImportError, AttributeError):CODE
HIGHtests/conftest.py217except Exception:CODE
HIGHtests/conftest.py296except Exception:CODE
HIGHtests/conftest.py226except Exception:CODE
HIGHtests/conftest.py237except Exception:CODE
HIGHtests/conftest.py252except Exception:CODE
HIGHtests/test_milvus_backend.py368except Exception:CODE
HIGHtests/test_mine_lock_lifecycle.py217except Exception:CODE
HIGHtests/test_mine_lock_lifecycle.py223except Exception:CODE
HIGHtests/test_sqlite_exact_backend.py1038except threading.BrokenBarrierError:CODE
HIGHtests/test_known_entities_registry.py527except OSError:CODE
HIGHtests/test_live_pgvector_conformance.py61except Exception:CODE
HIGHtests/test_entity_detector.py737except OSError:CODE
HIGHtests/test_daemon.py259except Exception: # noqa: BLE001 - best-effort; we force-shutdown belowCODE
HIGHtests/test_daemon.py266except Exception: # noqa: BLE001CODE
HIGHtests/test_daemon.py270except Exception: # noqa: BLE001CODE
HIGHtests/test_idle_watchdog_exit.py68except SystemExit:CODE
HIGHtests/test_repair.py3243except Exception:CODE
HIGHtests/test_rooms.py978except RuntimeError:CODE
HIGHtests/test_pgvector_backend.py1253except Exception:CODE
HIGHtests/test_pgvector_backend.py1309except threading.BrokenBarrierError:CODE
HIGHtests/test_migrate.py314except Exception:CODE
HIGHtests/test_migrate.py360except Exception:CODE
HIGHtests/test_encoding_repair.py923except Exception:CODE
HIGHtests/test_inproc_sqlite_locks.py113except OSError:CODE
HIGHtests/test_qdrant_backend.py557except Exception:CODE
HIGHtests/test_service_palace_env.py38except Exception: # noqa: BLE001 - the call's outcome is not what this assertsCODE
HIGHtests/test_service_palace_env.py51except Exception: # noqa: BLE001CODE
HIGHtests/mcp/test_read_tools.py272except Exception:CODE
HIGHtests/benchmarks/conftest.py138except Exception:CODE
HIGHmempalace/repair.py153except OSError:CODE
HIGHmempalace/repair.py612except Exception:CODE
HIGHmempalace/repair.py2822except Exception:CODE
HIGHmempalace/repair.py530except Exception:CODE
HIGHmempalace/repair.py127except OSError:CODE
HIGHmempalace/repair.py539except Exception:CODE
HIGHmempalace/rooms.py892except FileNotFoundError:CODE
HIGHmempalace/sync.py468except (OSError, RuntimeError, ValueError):CODE
HIGHmempalace/sync.py442except (OSError, RuntimeError, ValueError):CODE
HIGHmempalace/query_parser.py284except ValueError:CODE
HIGHmempalace/query_parser.py290except Exception:CODE
HIGHmempalace/query_parser.py428except Exception:CODE
HIGHmempalace/query_parser.py839except Exception:CODE
HIGHmempalace/query_parser.py1410except Exception:CODE
HIGHmempalace/backups.py218except Exception:CODE
HIGHmempalace/config.py505except OSError:CODE
HIGHmempalace/config.py572except OSError:CODE
HIGHmempalace/config.py590except (OSError, NotImplementedError):CODE
HIGHmempalace/config.py565except (OSError, NotImplementedError):CODE
HIGHmempalace/config.py658except (OSError, NotImplementedError):CODE
HIGHmempalace/config.py1903except (OSError, NotImplementedError):CODE
HIGHmempalace/config.py1186except (json.JSONDecodeError, UnicodeDecodeError, OSError):CODE
HIGHmempalace/config.py1665except ValueError:CODE
HIGHmempalace/config.py1695except ValueError:CODE
HIGHmempalace/config.py1925except (OSError, NotImplementedError):CODE
154 more matches not shown…
Excessive Try-Catch Wrapping531 hits · 507 pts
SeverityFileLineSnippetContext
LOWtools/find_orphan_claude_jsonls.sh55 except Exception:CODE
LOWtools/find_orphan_claude_jsonls.sh89except Exception:CODE
MEDIUMtests/test_closets.py1390def worker(i):CODE
LOWtests/test_closets.py1394 except Exception as e:CODE
MEDIUMtests/test_mcp_http_transport.py157def searcher():CODE
MEDIUMtests/test_mcp_http_transport.py199def run_search(req_id):CODE
MEDIUMtests/test_mcp_http_transport.py374def writer():CODE
MEDIUMtests/test_mcp_http_transport.py418def searcher():CODE
MEDIUMtests/test_mcp_http_transport.py525def embedder():CODE
MEDIUMtests/test_mcp_http_transport.py539def reconnect():CODE
LOWtests/test_mcp_http_transport.py160 except Exception as exc:CODE
LOWtests/test_mcp_http_transport.py202 except Exception as exc:CODE
LOWtests/test_mcp_http_transport.py382 except Exception as exc:CODE
LOWtests/test_mcp_http_transport.py421 except Exception as exc:CODE
LOWtests/test_mcp_http_transport.py534 except Exception as exc:CODE
LOWtests/test_mcp_http_transport.py549 except Exception as exc:CODE
LOWtests/test_hybrid_search.py34 except Exception:CODE
LOWtests/conftest.py217 except Exception:CODE
LOWtests/conftest.py226 except Exception:CODE
LOWtests/conftest.py237 except Exception:CODE
LOWtests/conftest.py252 except Exception:CODE
LOWtests/conftest.py296 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
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_http_embedding_lifecycle.py95 except Exception as e:CODE
LOWtests/test_http_embedding_lifecycle.py159 except Exception as exc:CODE
LOWtests/test_http_embedding_lifecycle.py228 except Exception as exc:CODE
LOWtests/test_http_embedding_lifecycle.py249 except Exception as exc:CODE
MEDIUMtests/test_http_embedding_lifecycle.py80def run(name):CODE
MEDIUMtests/test_http_embedding_lifecycle.py142def infer():CODE
MEDIUMtests/test_http_embedding_lifecycle.py218def original():CODE
MEDIUMtests/test_http_embedding_lifecycle.py231def peer():CODE
LOWtests/test_config_non_object.py44 except Exception as exc: # noqa: BLE001 - recorded and compared belowCODE
LOWtests/test_hooks_cli.py1113 except Exception:CODE
LOW⚡tests/test_daemon.py259 except Exception: # noqa: BLE001 - best-effort; we force-shutdown belowCODE
LOW⚡tests/test_daemon.py266 except Exception: # noqa: BLE001CODE
LOW⚡tests/test_daemon.py270 except Exception: # noqa: BLE001CODE
LOWtests/test_repair.py3243 except Exception:CODE
MEDIUMtests/test_pgvector_backend.py1306def racing_connect(dsn):CODE
LOWtests/test_pgvector_backend.py1253 except Exception:CODE
LOWtests/test_pgvector_backend.py1324 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_inproc_sqlite_locks.py305 except Exception as exc: # surfaced belowCODE
LOWtests/test_qdrant_backend.py557 except Exception:CODE
LOW⚡tests/test_service_palace_env.py38 except Exception: # noqa: BLE001 - the call's outcome is not what this assertsCODE
LOW⚡tests/test_service_palace_env.py51 except Exception: # noqa: BLE001CODE
MEDIUMtests/test_embeddinggemma.py536def worker(slot):CODE
LOWtests/test_embeddinggemma.py539 except Exception as exc: # surfaced below; a thread cannot fail the test itselfCODE
LOWtests/mcp/test_guards.py30 except Exception as exc:CODE
LOWtests/mcp/test_read_tools.py272 except Exception:CODE
LOWtests/benchmarks/conftest.py107 except Exception:CODE
LOWtests/benchmarks/conftest.py114 except Exception:CODE
471 more matches not shown…
Unused Imports340 hits · 288 pts
SeverityFileLineSnippetContext
LOWtests/test_miner_fts5_validation.py11CODE
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_rooms_pending_snapshot_contract.py3CODE
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_media.py1CODE
LOWtests/test_chroma_collection_lock.py26CODE
LOWtests/test_antigravity_hooks_shell.py20CODE
LOWtests/test_cursor_hooks_shell.py28CODE
LOWtests/test_hnsw_binary_header.py1CODE
LOWtests/test_hooks_bash_compat.py17CODE
LOWtests/test_dynamics.py10CODE
LOWtests/test_fact_checker.py19CODE
LOWtests/test_palace_locks.py10CODE
LOWtests/test_backends.py186CODE
LOWtests/test_qdrant_bulk_metadata_scroll.py72CODE
LOWtests/test_chroma_caller_vectors.py1CODE
LOWtests/test_service_palace_env.py3CODE
LOWtests/test_cli_write_routing.py1CODE
LOWtests/benchmarks/benchmark_dialect.py1CODE
LOWtests/benchmarks/benchmark_dialect.py3CODE
LOWmempalace/repair.py54CODE
LOWmempalace/repair.py54CODE
LOWmempalace/rooms.py28CODE
LOWmempalace/sync.py22CODE
LOWmempalace/logsync.py28CODE
LOWmempalace/logsync.py28CODE
LOWmempalace/query_parser.py8CODE
LOWmempalace/service.py9CODE
LOWmempalace/onnx_graph.py20CODE
LOWmempalace/media.py3CODE
LOWmempalace/convo_scanner.py22CODE
LOWmempalace/project_scanner.py18CODE
LOWmempalace/hallways.py33CODE
LOWmempalace/miner.py57CODE
LOWmempalace/palace_graph.py21CODE
LOWmempalace/tunnels_tool.py20CODE
LOWmempalace/embedding.py52CODE
LOWmempalace/write_routing.py11CODE
LOWmempalace/hook_shell.py9CODE
LOWmempalace/palace_audit.py26CODE
LOWmempalace/collision_scan.py24CODE
LOWmempalace/embeddinggemma2.py7CODE
LOWmempalace/__init__.py57CODE
280 more matches not shown…
Deep Nesting248 hits · 182 pts
SeverityFileLineSnippetContext
LOWtools/render_jsonl.py20CODE
LOWtests/test_corpus_origin_integration.py1334CODE
LOWtests/conftest.py192CODE
LOWtests/conftest.py207CODE
LOWtests/test_repair_lock_safety.py39CODE
LOWtests/test_http_embedding_lifecycle.py129CODE
LOWtests/test_http_embedding_lifecycle.py180CODE
LOWtests/test_http_embedding_lifecycle.py205CODE
LOWtests/test_http_embedding_lifecycle.py142CODE
LOWtests/test_http_embedding_lifecycle.py231CODE
LOWtests/test_hooks_cli.py670CODE
LOWtests/test_hooks_cli.py703CODE
LOWtests/test_hooks_cli.py1155CODE
LOWtests/test_hooks_cli.py1171CODE
LOWtests/test_hooks_cli.py1198CODE
LOWtests/test_hooks_cli.py1233CODE
LOWtests/test_hooks_cli.py1267CODE
LOWtests/test_hooks_cli.py1316CODE
LOWtests/test_hooks_cli.py1354CODE
LOWtests/test_hooks_cli.py1365CODE
LOWtests/test_hooks_cli.py1520CODE
LOWtests/test_hooks_cli.py1570CODE
LOWtests/test_hooks_cli.py1595CODE
LOWtests/test_hnsw_capacity.py363CODE
LOWtests/test_sqlite_diary_rows.py268CODE
LOWtests/test_chroma_collection_lock.py80CODE
LOWtests/test_logstream_sse.py67CODE
LOWtests/test_miner.py2599CODE
LOWtests/test_sqlite_drawer_rows.py306CODE
LOWtests/test_palace_locks.py56CODE
LOWtests/test_palace_locks.py271CODE
LOWtests/benchmarks/report.py34CODE
LOWmempalace/repair.py219CODE
LOWmempalace/repair.py617CODE
LOWmempalace/repair.py707CODE
LOWmempalace/repair.py1337CODE
LOWmempalace/repair.py1636CODE
LOWmempalace/repair.py2098CODE
LOWmempalace/repair.py2923CODE
LOWmempalace/rooms.py458CODE
LOWmempalace/sync.py699CODE
LOWmempalace/logsync.py51CODE
LOWmempalace/query_parser.py106CODE
LOWmempalace/query_parser.py185CODE
LOWmempalace/query_parser.py326CODE
LOWmempalace/query_parser.py718CODE
LOWmempalace/query_parser.py1220CODE
LOWmempalace/service.py179CODE
LOWmempalace/onnx_graph.py72CODE
LOWmempalace/onnx_graph.py156CODE
LOWmempalace/onnx_graph.py333CODE
LOWmempalace/onnx_graph.py123CODE
LOWmempalace/onnx_graph.py226CODE
LOWmempalace/convo_scanner.py57CODE
LOWmempalace/project_scanner.py526CODE
LOWmempalace/config.py833CODE
LOWmempalace/hallways.py877CODE
LOWmempalace/miner.py648CODE
LOWmempalace/miner.py796CODE
LOWmempalace/miner.py1227CODE
188 more matches not shown…
Over-Commented Block168 hits · 132 pts
SeverityFileLineSnippetContext
LOWpyproject.toml81 # without installing the optional model or its PyTorch dependencies.COMMENT
LOWpyproject.toml101 # mypy — static type checker. Catches lazy ``list`` / ``dict``COMMENT
LOWpyproject.toml141 "soundfile>=0.13.1; python_version >= '3.10'",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_hnsw_payload_health.py181# ── Regression cover for the #1710 cumulative-counter fix ─────────────COMMENT
LOWtests/test_sync.py1861COMMENT
LOWtests/test_format_miner.py561COMMENT
LOWtests/test_hnsw_capacity.py1141COMMENT
LOWtests/test_convo_miner.py361 holder.join(timeout=10)COMMENT
LOWtests/test_palace_locks.py441COMMENT
LOWtests/test_qdrant_bulk_metadata_scroll.py521COMMENT
LOWtests/test_qdrant_bulk_metadata_scroll.py541# this is a deliberate, explicitly-labeled VERBATIM COPY of the realCOMMENT
LOWtests/test_normalize.py461# ── _try_gemini_jsonl ──────────────────────────────────────────────────COMMENT
LOWtests/test_normalize.py2061# Pi agent stores sessions as JSONL underCOMMENT
LOWmempalace/repair.py241 f"no-offset fallback failed after collecting {len(ids)} "COMMENT
LOWmempalace/repair.py261 # HNSW-preflight-sweep work).COMMENT
LOWmempalace/repair.py1141 print(" 3. Recover chroma.sqlite3 offline with sqlite3 `.recover` or `.dump`.")COMMENT
LOWmempalace/repair.py1161# The "intact content table" above is an assumption the message does notCOMMENT
LOWmempalace/repair.py1181# Both alternatives are anchored. sqlite_integrity_errors returns the probe'sCOMMENT
LOWmempalace/repair.py1201# has an authority to be checked against, and a rebuild that reads it is onlyCOMMENT
LOWmempalace/repair.py2361 # (not yet archived). Must never take the mine-lock or rename anything.COMMENT
LOWmempalace/repair.py2621 # because the cached System still holds the pre-rename schema.COMMENT
LOWmempalace/repair.py2741 # whose name is now a broken symlink, as one that was never createdCOMMENT
LOWmempalace/sync.py141# is what the pass degrades to rather than what it normally does. A source'sCOMMENT
LOWmempalace/sync.py161# than assumed to fit.COMMENT
LOWmempalace/sync.py881 if source_file:COMMENT
LOWmempalace/sync.py901 # away, exactly as re-reading neither would let one that left condemnCOMMENT
LOWmempalace/sync.py921 # about neither. Two transitions inside the same window areCOMMENT
LOWmempalace/config.py141# (as_of, valid_from, valid_to, ended).COMMENT
LOWmempalace/config.py621 # it through, and truncating through it would empty a file nobodyCOMMENT
LOWmempalace/config.py781 # "unparsed" it was read and is not a JSON object: a truncated writeCOMMENT
LOWmempalace/hallways.py761 # spellings (``main.zig`` / ``src/main.zig``): the structuralCOMMENT
LOWmempalace/miner.py81 # without it the fstat never runs and a named pipe carrying aCOMMENT
LOWmempalace/miner.py221# runtime `bad allocation` errors on Windows (#1296), but at CHUNK_SIZE=800COMMENT
LOWmempalace/miner.py701COMMENT
LOWmempalace/miner.py1061 registry_path = _registry_write_target(registry_path)COMMENT
LOWmempalace/miner.py1441#COMMENT
LOWmempalace/miner.py1461COMMENT
LOWmempalace/miner.py1961COMMENT
LOWmempalace/miner.py2001 # the source tree for this. A directory that cannot be stat'ed answersCOMMENT
LOWmempalace/palace_graph.py1001# ``entities.json`` and are persisted by wing inCOMMENT
LOWmempalace/embedding.py121# ahead of CPU, every Apple Silicon user running this model would otherwiseCOMMENT
LOWmempalace/embedding.py321_EMBEDDINGGEMMA_ONNX = "model_quantized.onnx"COMMENT
LOWmempalace/__init__.py1"""MemPalace — Give your AI a memory. No API key required."""COMMENT
LOWmempalace/__init__.py61# posthog client is a no-op stub, so this is now harmless — kept as a guard inCOMMENT
LOWmempalace/__init__.py81# search paths) to the 0.x chromadb hnswlib binding. FilteringCOMMENT
LOWmempalace/encoding_repair.py81)COMMENT
LOWmempalace/corpus_origin.py41COMMENT
LOWmempalace/sweeper.py361 # A non-regular match is not a sweep failure, it is nothing to sweep.COMMENT
LOWmempalace/ids.py21# Audits compare like-for-like: drawers without ``id_recipe`` are treatedCOMMENT
LOWmempalace/layers.py201 # absent on virtually every drawer and ties at the default, which usedCOMMENT
LOWmempalace/diary_ingest.py181 # Which directory this diary was read from, so ``sync`` decides anCOMMENT
LOWmempalace/diary_ingest.py201 # transient I/O). Log at debug to preserve diagnosticsCOMMENT
LOWmempalace/migrate.py241COMMENT
108 more matches not shown…
AI Slop Vocabulary27 hits · 82 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/test_palace_graph_tunnels.py93 # instead of raising — keeps read-path filters robust to bad records.COMMENT
MEDIUM⚡tests/test_hooks_cli.py616 # here: _count_human_messages counts both harness shapes, and we assert onlyCOMMENT
MEDIUM⚡tests/test_hooks_cli.py617 # 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
MEDIUM⚡tests/test_hooks_bash_compat.py349 # and the bottom call supplies the ``--hook session-end --harness`` argsCOMMENT
MEDIUM⚡tests/test_cli_logstream.py733 # a harness backgrounds this process to receive.COMMENT
MEDIUMmempalace/repair.py2594 # harness), renaming the directory fails atomically UP FRONT onCOMMENT
MEDIUMmempalace/hallways.py219# harness's tool names, generic nouns, and files every repo has. MatchedCOMMENT
LOWmempalace/room_detector_local.py418 # If still nothing, just use generalCOMMENT
MEDIUM⚡mempalace/format_miner.py322 """Convert ``path`` to plain text via MarkItDown, with comprehensive fringe-case handling.STRING
MEDIUMmempalace/hooks_cli.py908#: Markers of harness-injected text that lands in the transcript withCOMMENT
MEDIUMmempalace/hooks_cli.py1648 # Validate the harness-provided transcript path before touching itCOMMENT
MEDIUMmempalace/backends/base.py828 #: no-op, so a benchmark harness can trust the set. Backends MAY add theirCOMMENT
MEDIUMmempalace/cli/cmd_coord.py155 # silently, leaving a harness waiting on a watcher it believes willCOMMENT
MEDIUMmempalace/mcp_server/runtime.py40# this palace, a stdio server spawned by an agent harness must not open itsCOMMENT
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.sh258# 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
MEDIUMbenchmarks/lean_mempalace/rust/Cargo.toml19# Keep this historical comparison harness outside the production workspace.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
MEDIUM.dsh-plugin/cordis.patch.yml18 # The palace, served through the harness's own MCP client by MemPalace'sCOMMENT
Modern AI Meta-Vocabulary22 hits · 61 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md1082- **`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.toml121# 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.py994 # the embedding model's hard token limit. This trips the size-capCOMMENT
MEDIUM⚡tests/test_miner.py2864 # 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
MEDIUMtests/mcp/test_protocol.py359 # palace scaffold on disk before the user runs ``mempalace init``.COMMENT
MEDIUMmempalace/miner.py1468# would hallucinate dates from any digit-bearing text (Igor's reproductionsCOMMENT
MEDIUMmempalace/miner.py1482# padding from today's date, which is hallucination, not extraction.COMMENT
MEDIUMmempalace/miner.py1671 # (no fuzzy=True) — without it, dateutil hallucinates dates from anyCOMMENT
MEDIUMmempalace/mcp_server/tools_diary.py89 # embedding model never sees a document above ``chunk_size``.COMMENT
MEDIUMmempalace/mcp_server/tools_diary.py103 # if the embedding model fails mid-loop. ``col.add`` (notCOMMENT
MEDIUMmempalace/mcp_server/tools_write.py605 # embedding model never sees a document above ``chunk_size``.COMMENT
MEDIUMhooks/mempal_precompact_hook.sh5# gets compressed to free up context window space.COMMENT
MEDIUMbenchmarks/BENCHMARKS.md761Same 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
Cross-Language Confusion10 hits · 49 pts
SeverityFileLineSnippetContext
HIGHtests/test_version_guard.py229 (".claude-plugin/plugin.json", '{"version": null}'),CODE
HIGH⚡tests/test_hooks_cli.py978 '{"type":"x","cwd":null}\n'CODE
HIGH⚡tests/test_hooks_cli.py973 """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.py1615 Otherwise ``repair --dry-run && repair --yes`` walks into the destructiveSTRING
HIGHtests/mcp/test_protocol.py2103 the alias only fills in when 'entry' is absent or null, not merely falsy.STRING
HIGHtests/mcp/test_write_tools.py92 # One pre-mutation intent (result: null) + one post-mutation outcome.COMMENT
HIGHmempalace/mcp_server/protocol.py848 # 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
Modern Structural Boilerplate48 hits · 46 pts
SeverityFileLineSnippetContext
LOWtests/test_mine_lock_lifecycle.py20def _set_home(monkeypatch, tmp_path: Path) -> None:CODE
LOWtests/test_hnsw_capacity.py406def _set_drawer_created_at(palace: str, timestamps: dict[int, str]) -> None:CODE
LOWmempalace/sync.py31logger = logging.getLogger(__name__)CODE
LOWmempalace/sync.py979__all__ = [CODE
LOWmempalace/logsync.py43__all__ = ["PEERS_FILENAME", "SyncPeerError", "load_peers", "sync_all", "sync_with_peer"]CODE
LOWmempalace/media.py15logger = logging.getLogger(__name__)CODE
LOWmempalace/config.py1549 def set_embedding_model(self, model: str) -> None:CODE
LOWmempalace/config.py1565 def set_backend(self, backend: str) -> None:CODE
LOW⚡mempalace/hallways.py59__all__ = [CODE
LOWmempalace/miner.py868def _set_wing_topics(existing: dict, wing_key: str, topics_for_wing: list, coerce) -> None:CODE
LOWmempalace/room_detector_local.py21logger = logging.getLogger(__name__)CODE
LOWmempalace/embedding.py64logger = logging.getLogger(__name__)CODE
LOWmempalace/embedding.py75def set_embedding_section_hook(hook) -> None:CODE
LOWmempalace/embeddinggemma2.py17logger = logging.getLogger(__name__)CODE
LOWmempalace/__init__.py86__all__ = ["__version__"]CODE
LOWmempalace/wal.py22logger = logging.getLogger(__name__)CODE
LOWmempalace/server_registry.py34logger = logging.getLogger(__name__)CODE
LOWmempalace/format_miner.py97__all__ = [CODE
LOWmempalace/sweeper.py52logger = logging.getLogger(__name__)CODE
LOWmempalace/hub_client.py11logger = logging.getLogger(__name__)CODE
LOWmempalace/diary_ingest.py39logger = logging.getLogger(__name__)CODE
LOWmempalace/dynamics.py311__all__ = [CODE
LOWmempalace/mcp_proxy.py35logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/_inproc_sqlite.py79logger = logging.getLogger(__name__)CODE
LOW⚡mempalace/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.py1339 def _set_embedder_identity(self, palace: PalaceRef, collection_name: str, identity) -> None:CODE
LOWmempalace/backends/qdrant.py1524__all__ = ["QdrantBackend", "QdrantCollection"]CODE
LOWmempalace/backends/registry.py24logger = logging.getLogger(__name__)CODE
LOW⚡mempalace/backends/embedding_wrapper.py143 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/__init__.py58__all__ = [CODE
LOWmempalace/backends/pgvector.py73logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/pgvector.py1092 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/pgvector.py1892 def _set_embedder_identity(self, palace: PalaceRef, collection_name: str, identity) -> None:CODE
LOWmempalace/backends/rust_exact.py29logger = logging.getLogger(__name__)CODE
LOW⚡mempalace/backends/chroma.py3894 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/chroma.py47logger = logging.getLogger(__name__)CODE
LOW⚡mempalace/backends/base.py512 def set_embedder_identity(self, identity: EmbedderIdentity) -> None:CODE
LOWmempalace/backends/sqlite_exact.py46logger = logging.getLogger(__name__)CODE
LOWmempalace/backends/sqlite_exact.py682 def set_embedder_identity(self, identity) -> None:CODE
LOWmempalace/backends/sqlite_exact.py1989__all__ = ["SQLiteExactBackend", "SQLiteExactCollection"]STRING
LOWmempalace/sources/media.py19logger = logging.getLogger(__name__)CODE
LOWmempalace/sources/registry.py29logger = logging.getLogger(__name__)CODE
LOWmempalace/sources/__init__.py48__all__ = [CODE
Structural Annotation Overuse28 hits · 45 pts
SeverityFileLineSnippetContext
LOW⚡mempalace/onboarding.py84# Step 1: Mode selectionCOMMENT
LOW⚡mempalace/onboarding.py268# Step 6: Ambiguity warningsCOMMENT
LOW⚡mempalace/onboarding.py399 # Step 1: ModeCOMMENT
LOW⚡mempalace/onboarding.py409 # Step 2: PeopleCOMMENT
LOW⚡mempalace/onboarding.py412 # Step 3: ProjectsCOMMENT
LOW⚡mempalace/onboarding.py415 # Step 4: Wings (stored in config, not registry — just show user)COMMENT
LOW⚡mempalace/onboarding.py418 # Step 5: Auto-detect additional people from filesCOMMENT
LOWmempalace/onboarding.py451 # Step 6: Warn about ambiguous namesCOMMENT
LOW⚡mempalace/onboarding.py141# Step 2: PeopleSTRING
LOW⚡mempalace/onboarding.py196# Step 3: ProjectsSTRING
LOW⚡mempalace/onboarding.py222# Step 4: WingsSTRING
LOW⚡mempalace/onboarding.py244# Step 5: Auto-detect from filesSTRING
LOW⚡mempalace/instructions/status.md5## Step 1: Gather Palace StatusCOMMENT
LOW⚡mempalace/instructions/status.md12## Step 2: Display Wing/Room/Drawer CountsCOMMENT
LOW⚡mempalace/instructions/status.md22## Step 3: Knowledge Graph Stats (MCP only)COMMENT
LOW⚡mempalace/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
LOW⚡mempalace/instructions/init.md48## Step 4: Ask for project directoryCOMMENT
LOW⚡mempalace/instructions/init.md54## Step 5: Initialize the palaceCOMMENT
LOW⚡mempalace/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
LOWmempalace/instructions/audit.md9## Step 1: Run the auditCOMMENT
LOWmempalace/instructions/audit.md26## Step 2: Present the scorecardCOMMENT
LOWmempalace/instructions/audit.md47## Step 3: Repair session, one layer at a timeCOMMENT
LOWmempalace/instructions/audit.md229## Step 4: Re-run and reportCOMMENT
Self-Referential Comments10 hits · 38 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_hall_detection.py109 # Create a conversation file with technical contentCOMMENT
MEDIUMtests/test_repair.py545 # Create a valid sqlite file so the repair preflight can run quick_check.COMMENT
MEDIUMtests/test_miner.py2997 # Create a real file with known mtime.COMMENT
MEDIUM⚡tests/test_backends.py2615 # Create the collection using the default (minilm-based) EF.COMMENT
MEDIUM⚡tests/mcp/test_protocol.py841 # Create a collection so status worksCOMMENT
MEDIUM⚡tests/mcp/test_protocol.py868 # Create a real collection so _get_collection succeedsCOMMENT
MEDIUMtests/mcp/test_read_tools.py32 # Create the DB file (init does this) but NOT the collectionCOMMENT
MEDIUMtests/benchmarks/test_knowledge_graph_bench.py58 # Create a hub entity connected to many othersCOMMENT
MEDIUM⚡hooks/cursor/lib/common.sh26# This file is sourced, not executed, so it intentionally has noCOMMENT
MEDIUM⚡hooks/antigravity/lib/common.sh32# This file is sourced, not executed, so it intentionally has noCOMMENT
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_sqlite_exact_backend.py0import sys from mempalace.palace import mine_palace_lock with mine_palace_lock(sys.argv[1]): print("ready", flush=true) STRING
HIGHtests/mcp/test_read_tools.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/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
HIGHmempalace/mcp_server/tools_read.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 Data27 hits · 24 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_closets.py211 content = "lorem ipsum dolor sit amet consectetur adipiscing elit"CODE
LOW⚡tests/test_closets.py211 content = "lorem ipsum dolor sit amet consectetur adipiscing elit"CODE
LOW⚡tests/test_miner_fts5_validation.py182 (src / "a.md").write_text("placeholder")CODE
LOW⚡tests/test_miner_fts5_validation.py232 big = "lorem ipsum " * 500CODE
LOWtests/test_miner_fts5_validation.py284 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py297 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/test_miner_fts5_validation.py337 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py353 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/test_miner_fts5_validation.py546 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py556 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/test_miner_fts5_validation.py915 (src / "big.md").write_text("lorem ipsum " * 200)CODE
LOWtests/test_miner_fts5_validation.py928 (src / "big.md").write_text("lorem ipsum dolor " * 200)CODE
LOWtests/conftest.py443 kg.add_triple("Alice", "works_at", "Acme Corp", valid_from="2020-01-01", valid_to="2024-12-31")CODE
LOW⚡tests/test_format_miner.py224 f.write_bytes(b"placeholder")CODE
LOW⚡tests/test_format_miner.py232 f.write_bytes(b"placeholder")CODE
LOW⚡tests/test_project_scanner.py186 assert _looks_like_real_name("Jane Doe")CODE
LOW⚡tests/test_project_scanner.py227 ("Jane Doe", "jane@work.com", "r"),CODE
LOW⚡tests/test_project_scanner.py228 ("Jane Doe", "jane@personal.com", "r"),CODE
LOW⚡tests/test_project_scanner.py231 assert people["Jane Doe"].total_commits == 2CODE
LOW⚡tests/test_project_scanner.py232 assert len(people["Jane Doe"].emails) == 2CODE
LOW⚡tests/test_project_scanner.py335def _init_git_repo(path: Path, name: str = "Jane Doe", email: str = "jane@example.com"):CODE
LOW⚡tests/test_project_scanner.py504 assert [person.name for person in people] == ["Jane Doe"]CODE
LOW⚡tests/test_project_scanner.py525 people = [PersonInfo(name="Jane Doe", total_commits=5, repos={"r"})]CODE
LOW⚡tests/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
LOW⚡tests/test_knowledge_graph.py105 assert "Acme Corp" in employersCODE
LOW⚡tests/test_knowledge_graph.py112 assert "Acme Corp" not in employersCODE
Redundant / Tautological Comments14 hits · 21 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_readme_claims.py789 # 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
LOW⚡tests/test_miner.py2840 # 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/query_parser.py336 # Check if there is an embedded command/dsl string in query, command, or inputCOMMENT
LOWmempalace/query_parser.py728 # Check if there is an embedded command/dsl string in command, input, dsl, pqlCOMMENT
LOWmempalace/normalize.py329 # Check if this message is tool_results only (no user text)COMMENT
LOWmempalace/entity_registry.py324 # 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
AI Structural Patterns19 hits · 16 pts
SeverityFileLineSnippetContext
LOWmempalace/miner.py2253CODE
LOWmempalace/miner.py2310CODE
LOWmempalace/logstream.py206CODE
LOWmempalace/logstream.py674CODE
LOWmempalace/logstream.py903CODE
LOWmempalace/logstream.py972CODE
LOWmempalace/daemon.py1623CODE
LOWmempalace/searcher/query.py170CODE
LOWmempalace/searcher/media_search.py14CODE
LOWmempalace/searcher/sqlite_bm25.py109CODE
LOWmempalace/searcher/cli_search.py168CODE
LOWmempalace/mcp_server/tools_read.py580CODE
LOWmempalace/mcp_server/tools_coord.py14CODE
LOWmempalace/mcp_server/tools_coord.py117CODE
LOWmempalace/mcp_server/tools_coord.py184CODE
LOWmempalace/mcp_server/tools_coord.py275CODE
LOWbenchmarks/locomo_bench.py566CODE
LOWbenchmarks/longmemeval_bench.py2936CODE
LOWbenchmarks/model_eval/runner.py234CODE
Verbosity Indicators12 hits · 16 pts
SeverityFileLineSnippetContext
LOW⚡mempalace/onboarding.py84# Step 1: Mode selectionCOMMENT
LOW⚡mempalace/onboarding.py268# Step 6: Ambiguity warningsCOMMENT
LOW⚡mempalace/onboarding.py399 # Step 1: ModeCOMMENT
LOW⚡mempalace/onboarding.py409 # Step 2: PeopleCOMMENT
LOW⚡mempalace/onboarding.py412 # Step 3: ProjectsCOMMENT
LOW⚡mempalace/onboarding.py415 # Step 4: Wings (stored in config, not registry — just show user)COMMENT
LOW⚡mempalace/onboarding.py418 # Step 5: Auto-detect additional people from filesCOMMENT
LOWmempalace/onboarding.py451 # Step 6: Warn about ambiguous namesCOMMENT
LOW⚡mempalace/onboarding.py141# Step 2: PeopleSTRING
LOW⚡mempalace/onboarding.py196# Step 3: ProjectsSTRING
LOW⚡mempalace/onboarding.py222# Step 4: WingsSTRING
LOW⚡mempalace/onboarding.py244# Step 5: Auto-detect from filesSTRING
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHmempalace/palace_graph.py760Create 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_proxy.py111 def handle_request(self, request):CODE
LOWtests/mcp/test_protocol.py2137 def helper(req):CODE
LOWmempalace/mcp_server/protocol.py709def handle_request(request):CODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_cli_hallways.py148CODE
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