mempalace/tests
Igor Lins e Silva cef1c62fe7 feat(embedding): EF-mismatch error helper, offline tests, migration docs
Three follow-ups bundled for the embeddinggemma EF added in 51702e9:

1. Offline tests for EmbeddinggemmaONNX (10 tests, 0.08s, no network).
   Mocks huggingface_hub.hf_hub_download, tokenizers.Tokenizer.from_file,
   and onnxruntime.InferenceSession so CI never pulls the 300 MB model.
   Guarded with pytest.importorskip so the file is skipped when the
   multilingual extra isn't installed. Covers: stable name(), lazy-load
   runs exactly once, output shape (n, 384) after MRL truncation, L2
   normalization, sim prefix applied, dispatch from
   get_embedding_function(model="embeddinggemma"), cache key separates
   models, helpful ImportError when deps missing, env override.

2. Friendlier ChromaDB EF-name-mismatch error. Switching
   MEMPALACE_EMBEDDING_MODEL on an existing palace previously surfaced
   ChromaDB's bare "Embedding function conflict: new: X vs persisted: Y"
   ValueError. Now ChromaBackend.get_collection() wraps that error and
   points users at the two recovery paths: revert the env var, or run
   `mempalace repair rebuild-index --palace <path>`. New
   _explain_ef_mismatch helper + 3 tests (unit + end-to-end).

3. Docs: CHANGELOG [Unreleased] entry covers both the new EF and the
   error wrapper. README Requirements section mentions the multilingual
   extra and points at the embedding.py docstring for the migration note.
2026-05-14 05:00:48 -03:00
..
benchmarks test(mcp): migrate _kg monkeypatches to _get_kg (#1136) 2026-05-03 17:43:00 +05:00
conftest.py Update conftest.py as part of fix(tests): isolate palace lock subprocess state 2026-05-09 11:20:33 +02:00
test_backends.py feat(embedding): EF-mismatch error helper, offline tests, migration docs 2026-05-14 05:00:48 -03:00
test_chroma_collection_lock.py fix(tests): use spawn instead of fork for lock-test subprocesses 2026-05-09 20:11:08 -03:00
test_claude_plugin_hook_wrappers.py test: normalize wrapper script path for bash on Windows 2026-04-19 10:34:11 +02:00
test_cli.py fix(mine): identify lock holder + exit non-zero on contention 2026-05-08 01:00:00 -03:00
test_closet_llm.py test(closet_llm): use _ for unused return values per copilot review 2026-05-07 12:49:27 -03:00
test_closets.py test(diary): write fixture with explicit utf-8 to fix Windows hash assert 2026-05-07 17:41:19 -03:00
test_collection_metric_invariant.py fix(test): use tmp_path for full-stack invariant test (Windows CI) 2026-04-25 00:39:37 -03:00
test_config.py fix(kg): tighten temporal handling and cleanup 2026-05-08 15:27:54 +00:00
test_config_extra.py test(config): make palace_path tests portable across POSIX and Windows 2026-04-24 11:13:51 +02:00
test_convo_miner.py feat(normalize): auto-rebuild stale drawers via NORMALIZE_VERSION schema gate 2026-04-13 16:20:55 -03:00
test_convo_miner_size_cap.py Raise convo_miner MAX_FILE_SIZE cap 10 MB → 500 MB 2026-04-18 12:52:01 -03:00
test_convo_miner_unit.py test: tidy embedding follow-up imports 2026-04-24 23:10:20 +00:00
test_convo_scanner.py fix(llm): tighter refinement — word boundaries, JSON extraction, authoritative sources 2026-04-24 01:30:40 -03:00
test_corpus_origin.py feat(init): context-aware corpus detection 2026-04-26 12:37:26 -07:00
test_corpus_origin_integration.py feat(privacy): blocking consent gate for env-fallback LLM API keys 2026-04-27 00:44:57 -07:00
test_dedup.py refactor: route all chromadb access through ChromaBackend 2026-04-14 00:31:16 -03:00
test_dialect.py fix: align cmd_compress dict keys with compression_stats() return values (#569) 2026-04-11 16:16:31 -07:00
test_embedding.py test: isolate embedding module state with monkeypatch 2026-04-24 23:11:29 +00:00
test_embeddinggemma.py feat(embedding): EF-mismatch error helper, offline tests, migration docs 2026-05-14 05:00:48 -03:00
test_empty_chromadb_results.py fix(searcher): guard against empty ChromaDB query results (#195) (#865) 2026-04-15 00:26:38 -07:00
test_entity_detector.py feat(graph): cross-wing tunnels by shared topics (#1180) 2026-04-24 23:06:26 -03:00
test_entity_registry.py fix(entity_registry): atomic write to prevent partial corruption on crash 2026-05-04 11:08:14 +02:00
test_exporter.py fix(exporter): refuse symlinks at file targets and skip tests on Windows 2026-05-07 12:51:47 -03:00
test_fact_checker.py fix(cli, fact-checker): per-stream stdio errors policy on Windows 2026-05-03 21:37:12 +05:00
test_general_extractor.py style: format test files with ruff 2026-04-08 21:08:49 +03:00
test_hall_detection.py fix: README audit — 42 TDD tests + hall detection + 7 claim fixes (#835) 2026-04-13 17:11:11 -07:00
test_hnsw_capacity.py fix: use configured collection in recovery paths 2026-05-07 09:10:00 -03:00
test_hnsw_payload_health.py fix(storage): quarantine bloated HNSW link payloads 2026-05-04 06:45:29 +00:00
test_hooks_cli.py fix(hooks): per-target PID guard with atomic claim (#1212, #1206) 2026-05-08 02:09:00 -03:00
test_hooks_shell.py fix(hooks): MEMPAL_PYTHON override for .sh hooks' internal python3 calls 2026-04-21 01:43:08 -03:00
test_hybrid_candidate_union.py fix(searcher): address Copilot review on #1306 2026-05-03 06:09:10 -03:00
test_hybrid_search.py merge: pr/closet-llm-generic + harden LLM regen path for production 2026-04-13 18:40:36 -03:00
test_i18n.py Merge pull request #1051 from itfarrier/feat/i18n-belarusian 2026-04-21 01:09:54 -03:00
test_i18n_lang_case.py fix(i18n): resolve language codes case-insensitively (#927) 2026-04-15 23:33:42 +02:00
test_init_gitignore_protection.py fix(init): auto-add per-project files to .gitignore in git repos (#185) (#866) 2026-04-15 00:26:41 -07:00
test_instructions_cli.py fix: add explicit UTF-8 encoding to read_text() calls (#776) 2026-04-16 16:00:29 +05:00
test_kg_thread_safety.py fix: add missing self._lock to KnowledgeGraph.close() 2026-04-14 13:09:10 -07:00
test_knowledge_graph.py fix(kg): close sqlite connections during cleanup 2026-05-08 14:44:04 +00:00
test_knowledge_graph_extra.py test: bring coverage to 85%, set threshold to 85, reset version to 3.0.11 2026-04-08 21:38:12 +03:00
test_known_entities_registry.py feat(graph): cross-wing tunnels by shared topics (#1180) 2026-04-24 23:06:26 -03:00
test_layers.py fix: guard None metadata/doc in tool_check_duplicate and Layer1/Layer2 2026-04-19 11:13:50 +03:00
test_llm_client.py feat(privacy): blocking consent gate for env-fallback LLM API keys 2026-04-27 00:44:57 -07:00
test_llm_refine.py feat(graph): cross-wing tunnels by shared topics (#1180) 2026-04-24 23:06:26 -03:00
test_mcp_server.py Merge develop into main for v3.3.5 release 2026-05-10 01:05:36 -03:00
test_mcp_stdio_protection.py fix(mcp): redirect stdout to stderr during import to protect JSON-RPC channel (#225) (#864) 2026-04-15 00:26:51 -07:00
test_migrate.py fix(migrate): verify write roundtrip before bailout 2026-05-05 09:01:05 +00:00
test_miner.py Merge pull request #1004 from coogie/coogie/fix/miner-routing 2026-05-09 01:36:51 -03:00
test_miner_jsonl_visibility.py Harden sweeper for production: verbatim tool blocks, full session_id, logged failures 2026-04-18 13:14:32 -03:00
test_normalize.py fix(normalize): discard user/gemini turns before session_metadata sentinel 2026-04-27 21:41:48 +00:00
test_onboarding.py fix: add explicit UTF-8 encoding to read_text() calls (#776) 2026-04-16 16:00:29 +05:00
test_palace_graph.py fix(palace_graph): skip None metadata in build_graph 2026-04-25 11:06:32 -07:00
test_palace_graph_tunnels.py style: ruff format three test files 2026-04-28 22:18:22 -03:00
test_palace_locks.py Merge remote-tracking branch 'origin/develop' into pr-1417-fix-kg-datetimes 2026-05-09 21:12:40 -03:00
test_project_scanner.py feat(graph): cross-wing tunnels by shared topics (#1180) 2026-04-24 23:06:26 -03:00
test_query_sanitizer.py fix: make quote trimming explicit 2026-04-12 22:19:58 -03:00
test_readme_claims.py docs+tests: fix CI after README slim (#875) 2026-04-14 21:59:55 -03:00
test_repair.py chore(tests): wrap sqlite3 connections in contextlib.closing 2026-05-09 20:25:47 -03:00
test_room_detector_local.py fix: skip unreachable reparse points in detect_rooms_from_folders (#558) 2026-04-11 16:16:06 -07:00
test_save_hook_mines.py test(hooks): skip bash subprocess validator test on Windows 2026-04-27 02:45:04 -03:00
test_save_hook_verbose.py feat: add MEMPAL_VERBOSE toggle — developers see diaries in chat (#871) 2026-04-14 10:55:56 -07:00
test_searcher.py Merge develop into main for v3.3.5 release 2026-05-10 01:05:36 -03:00
test_sources.py chore(tests): wrap sqlite3 connections in contextlib.closing 2026-05-09 20:25:47 -03:00
test_spellcheck.py style: format test files with ruff 2026-04-08 21:08:49 +03:00
test_spellcheck_extra.py test: bring coverage to 85%, set threshold to 85, reset version to 3.0.11 2026-04-08 21:38:12 +03:00
test_split_mega_files.py test: expand coverage to 70%, fix mcp_server CI crash (threshold 60%) 2026-04-08 21:07:03 +03:00
test_sweeper.py Address Copilot review: cursor tie-break, honest metrics, accurate comments 2026-04-18 13:22:18 -03:00
test_sync.py fix(test_sync): use tmp_dir for elsewhere path so it stays absolute on Windows 2026-05-09 04:12:18 +05:00
test_version_consistency.py fix: unify package and MCP version reporting 2026-04-07 08:53:25 +01:00