feat(embedding): apply asymmetric query/document prefixes to embed calls - #1858
feat(embedding): apply asymmetric query/document prefixes to embed calls#1858NullSense wants to merge 2 commits into
Health gate passed
Repository health 7.3 -> 7.3. No configured gate rule tripped.
Details
Symbols changed (blast radius)
packages/core/src/repowise/core/providers/embedding/ollama.py::embed: signature, 7 caller(s) outside this PR:tests/unit/test_persistence/test_ollama_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_posts_batch_to_native_endpoint,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_raises_when_server_returns_wrong_width_explicit,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_raises_when_server_returns_wrong_width_inferred,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_supports_legacy_single_embedding_response,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_width_check_not_triggered_on_empty,tests/unit/test_persistence/test_ollama_embedder.py::test_env_timeout_is_applied_to_the_requestpackages/core/src/repowise/core/providers/embedding/openrouter.py::embed: signature, 7 caller(s) outside this PR:tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_batch_returns_correct_count,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_passes_model_and_input,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_uses_openrouter_base_url,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_width_check_not_triggered_on_emptypackages/core/src/repowise/core/providers/embedding/edenai.py::embed: signature, 6 caller(s) outside this PR:tests/unit/test_persistence/test_edenai_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_passes_model_and_input,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_uses_edenai_base_url,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_width_check_not_triggered_on_emptypackages/core/src/repowise/core/providers/embedding/gemini.py::embed: signature, 6 caller(s) outside this PR:tests/unit/test_persistence/test_gemini_embedder.py::test_embed_batch_returns_correct_count,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_raises_when_api_returns_wrong_width_custom_dim,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_width_check_not_triggered_on_emptypackages/core/src/repowise/core/persistence/vector_store/in_memory.py::search: signature, 1 caller(s) outside this PR:tests/unit/generation/test_embed_metadata.py::test_title_survives_into_the_vector_storepackages/core/src/repowise/core/persistence/vector_store/_base.py::embed_texts: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/_base.py::search: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/_base.py::search_many: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/in_memory.py::search_many: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/lancedb_store.py::search: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/lancedb_store.py::search_many: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/pgvector_store.py::search: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/pgvector_store.py::search_many: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/providers/embedding/base.py::embed: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/providers/embedding/openai.py::embed: signature, 0 caller(s) outside this PRtests/unit/cli/test_embedder_resolution.py::embed: signature, 0 caller(s) outside this PRtests/unit/persistence/test_decision_semantic_dedup.py::embed: signature, 0 caller(s) outside this PRtests/unit/persistence/test_decision_supersession.py::embed: signature, 0 caller(s) outside this PRtests/unit/persistence/test_vector_store.py::embed: signature, 0 caller(s) outside this PRtests/unit/server/mcp/test_answer_decision_rows.py::embed_texts: signature, 0 caller(s) outside this PRtests/unit/server/mcp/test_answer_decision_rows.py::search: signature, 0 caller(s) outside this PRtests/unit/server/mcp/test_answer_question_embedding.py::embed: signature, 0 caller(s) outside this PRtests/unit/server/mcp/test_keyless_vector_leg.py::embed: signature, 0 caller(s) outside this PRtests/unit/server/mcp/test_retrieval_leg_visibility.py::embed_texts: signature, 0 caller(s) outside this PRpackages/core/src/repowise/core/providers/embedding/base.py::resolve_embed_prefix: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::_captured_input: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::test_default_kind_is_document: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::test_document_prefix_applied_only_to_document_kind: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::test_no_prefix_configured_leaves_the_request_byte_identical: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::test_prefix_applies_to_every_text_in_the_batch: added, 0 caller(s) outside this PRtests/unit/test_persistence/test_openai_embedder.py::test_query_prefix_applied_only_to_query_kind: added, 0 caller(s) outside this PRpackages/core/src/repowise/core/providers/embedding/base.py::MockEmbedder: body, 44 caller(s) outside this PR:packages/cli/src/repowise/cli/commands/doctor_cmd/repo_checks.py::_run_repo_checks,tests/integration/persistence/test_embed_batch_pg.py::test_embed_batch_writes_embeddings_postgres,tests/integration/test_mcp.py::mcp_env,tests/integration/test_persistence.py::TestVectorSearch::vector_store,tests/unit/cli/test_doctor_embed_recipe.py::_build_repo,tests/unit/cli/test_doctor_information_floor.py::_build_repo,tests/unit/cli/test_doctor_resume_stub.py::_build_repo,tests/unit/cli/test_doctor_store_reconciliation.py::_build_repo,tests/unit/cli/test_doctor_vector_decisions.py::test_decisions_not_counted_as_orphans,tests/unit/cli/test_doctor_vector_decisions.py::test_genuine_orphan_still_detected,tests/unit/cli/test_doctor_vector_decisions.py::test_repair_deletes_only_genuine_orphan_not_decisions,tests/unit/cli/test_format_json_rollout.py::test_vector_store_refusal_prints_to_stderr,tests/unit/cli/test_persist_result_sweep.py::test_persist_result_index_done_sweeps_fts_and_vector,tests/unit/cli/test_persist_result_sweep.py::test_persist_result_keeps_pages_a_resume_skipped,tests/unit/cli/test_shared_helpers.py::test_build_vector_store_returns_a_store,tests/unit/generation/test_embed_metadata.py::test_title_survives_into_the_vector_store,tests/unit/persistence/conftest.py::mock_embedder,tests/unit/persistence/test_coordinator_health.py::test_consistent_store_reports_zero_drift_per_population,tests/unit/persistence/test_coordinator_health.py::test_missing_decision_vectors_isolated_to_decision_drift,tests/unit/persistence/test_coordinator_health.py::test_only_decision_vectors_does_not_inflate_page_drift,tests/unit/persistence/test_embed_text_cap.py::test_embed_texts_reports_truncation_too,tests/unit/persistence/test_vector_evidence_snippet.py::store,tests/unit/persistence/test_vector_store_batching.py::test_in_memory_delete_many_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_in_memory_delete_many_removes_only_listed_ids,tests/unit/persistence/test_vector_store_batching.py::test_lancedb_batch_summaries_roundtrip,tests/unit/persistence/test_vector_store_batching.py::test_lancedb_delete_many_roundtrip,tests/unit/persistence/test_vector_store_batching.py::test_pg_batch_summaries_empty_paths,tests/unit/persistence/test_vector_store_batching.py::test_pg_batch_summaries_single_query_first_row_wins,tests/unit/persistence/test_vector_store_batching.py::test_pg_delete_many_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_pg_delete_many_single_update_with_in_params,tests/unit/persistence/test_vector_store_batching.py::test_pg_embed_batch_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_pg_embed_batch_single_executemany,tests/unit/server/conftest.py::app,tests/unit/server/mcp/conftest.py::setup_mcp,tests/unit/server/mcp/conftest.py::vector_store,tests/unit/server/mcp/test_context.py::setup_mcp_multi,tests/unit/server/test_mcp_decision_graph.py::setup_mcp_decisions,tests/unit/server/test_mcp_decision_graph.py::vector_store,tests/unit/server/test_mcp_kg_enrichment.py::setup_mcp_no_kg,tests/unit/server/test_mcp_kg_enrichment.py::setup_mcp_with_kgpackages/core/src/repowise/core/persistence/vector_store/in_memory.py::InMemoryVectorStore: body, 33 caller(s) outside this PR:packages/cli/src/repowise/cli/providers/vector_store.py::build_vector_store,packages/cli/src/repowise/cli/tool_bridge.py::_open_vector_store,packages/core/src/repowise/core/pipeline/phases/generation.py::run_generation,packages/core/src/repowise/core/workspace/registry.py::RepoRegistry::_load_context,packages/server/src/repowise/server/mcp_server/_server.py::_lifespan,packages/server/src/repowise/server/mcp_server/_server.py::_load_vector_stores,packages/server/src/repowise/server/search_helpers.py::_build_repo_vector_store,packages/server/src/repowise/server/search_helpers.py::build_primary_vector_store,tests/integration/test_mcp.py::mcp_env,tests/integration/test_persistence.py::TestVectorSearch::vector_store,tests/unit/cli/test_doctor_vector_decisions.py::test_decisions_not_counted_as_orphans,tests/unit/cli/test_doctor_vector_decisions.py::test_genuine_orphan_still_detected,tests/unit/cli/test_doctor_vector_decisions.py::test_repair_deletes_only_genuine_orphan_not_decisions,tests/unit/cli/test_persist_result_sweep.py::test_persist_result_index_done_sweeps_fts_and_vector,tests/unit/cli/test_persist_result_sweep.py::test_persist_result_keeps_pages_a_resume_skipped,tests/unit/generation/test_embed_metadata.py::test_title_survives_into_the_vector_store,tests/unit/persistence/conftest.py::in_memory_vector_store,tests/unit/persistence/test_coordinator_health.py::test_consistent_store_reports_zero_drift_per_population,tests/unit/persistence/test_coordinator_health.py::test_missing_decision_vectors_isolated_to_decision_drift,tests/unit/persistence/test_coordinator_health.py::test_only_decision_vectors_does_not_inflate_page_drift,tests/unit/persistence/test_embed_text_cap.py::test_embed_texts_reports_truncation_too,tests/unit/persistence/test_vector_store_batching.py::test_in_memory_delete_many_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_in_memory_delete_many_removes_only_listed_ids,tests/unit/server/conftest.py::app,tests/unit/server/mcp/conftest.py::setup_mcp,tests/unit/server/mcp/conftest.py::vector_store,tests/unit/server/mcp/test_context.py::setup_mcp_multi,tests/unit/server/test_mcp_decision_graph.py::setup_mcp_decisions,tests/unit/server/test_mcp_decision_graph.py::vector_store,tests/unit/server/test_mcp_kg_enrichment.py::setup_mcp_no_kg,tests/unit/server/test_mcp_kg_enrichment.py::setup_mcp_with_kg,tests/unit/server/test_mcp_kg_enrichment.py::vector_store,tests/unit/server/test_mcp_workspace.py::_make_repo_contextpackages/core/src/repowise/core/providers/embedding/edenai.py::EdenAIEmbedder: body, 23 caller(s) outside this PR:packages/server/src/repowise/server/app.py::_build_embedder,tests/unit/test_persistence/test_edenai_embedder.py::test_api_key_from_env,tests/unit/test_persistence/test_edenai_embedder.py::test_default_base_url,tests/unit/test_persistence/test_edenai_embedder.py::test_default_model,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_cohere_multilingual_eu,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_from_env,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_gemini_is_full_width_here,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_openai_large,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_openai_small,tests/unit/test_persistence/test_edenai_embedder.py::test_dimensions_titan_v2,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_passes_model_and_input,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_uses_edenai_base_url,tests/unit/test_persistence/test_edenai_embedder.py::test_embed_width_check_not_triggered_on_empty,tests/unit/test_persistence/test_edenai_embedder.py::test_eu_base_url_from_env,tests/unit/test_persistence/test_edenai_embedder.py::test_explicit_dimensions_override_the_table,tests/unit/test_persistence/test_edenai_embedder.py::test_malformed_env_dimensions_raise,tests/unit/test_persistence/test_edenai_embedder.py::test_missing_api_key_raises,tests/unit/test_persistence/test_edenai_embedder.py::test_timeout_honours_the_shared_env_var,tests/unit/test_persistence/test_edenai_embedder.py::test_timeout_provider_env_wins,tests/unit/test_persistence/test_edenai_embedder.py::test_unknown_model_raises_at_constructionpackages/core/src/repowise/core/providers/embedding/ollama.py::OllamaEmbedder: body, 17 caller(s) outside this PR:packages/server/src/repowise/server/app.py::_build_embedder,tests/unit/test_persistence/test_embedding_timeout_resolution.py::test_each_embedder_keeps_its_own_default,tests/unit/test_persistence/test_embedding_timeout_resolution.py::test_no_embedder_is_destroyed_by_a_typo,tests/unit/test_persistence/test_embedding_timeout_resolution.py::test_ollama_honours_the_shared_variable,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_posts_batch_to_native_endpoint,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_raises_when_server_returns_wrong_width_explicit,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_raises_when_server_returns_wrong_width_inferred,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_supports_legacy_single_embedding_response,tests/unit/test_persistence/test_ollama_embedder.py::test_embed_width_check_not_triggered_on_empty,tests/unit/test_persistence/test_ollama_embedder.py::test_env_timeout_is_applied_to_the_request,tests/unit/test_persistence/test_ollama_embedder.py::test_explicit_timeout_overrides_env,tests/unit/test_persistence/test_ollama_embedder.py::test_model_and_base_url_can_come_from_env,tests/unit/test_persistence/test_ollama_embedder.py::test_qwen3_dimensions_are_inferred,tests/unit/test_persistence/test_ollama_embedder.py::test_repowise_embedding_timeout_is_a_fallback,tests/unit/test_persistence/test_ollama_embedder.py::test_timeout_can_come_from_env,tests/unit/test_persistence/test_ollama_embedder.py::test_timeout_defaults_to_thirty_secondspackages/core/src/repowise/core/providers/embedding/openrouter.py::OpenRouterEmbedder: body, 16 caller(s) outside this PR:packages/server/src/repowise/server/app.py::_build_embedder,tests/unit/test_persistence/test_openrouter_embedder.py::test_api_key_from_env,tests/unit/test_persistence/test_openrouter_embedder.py::test_default_model,tests/unit/test_persistence/test_openrouter_embedder.py::test_dimensions_gemini,tests/unit/test_persistence/test_openrouter_embedder.py::test_dimensions_openai_large,tests/unit/test_persistence/test_openrouter_embedder.py::test_dimensions_openai_small,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_batch_returns_correct_count,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_passes_model_and_input,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_uses_openrouter_base_url,tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_width_check_not_triggered_on_empty,tests/unit/test_persistence/test_openrouter_embedder.py::test_malformed_env_raises_the_same_message,tests/unit/test_persistence/test_openrouter_embedder.py::test_missing_api_key_raises,tests/unit/test_persistence/test_openrouter_embedder.py::test_unknown_model_raises_at_constructionpackages/core/src/repowise/core/persistence/vector_store/lancedb_store.py::LanceDBVectorStore: body, 15 caller(s) outside this PR:packages/cli/src/repowise/cli/commands/doctor_cmd/repo_checks.py::_run_repo_checks,packages/cli/src/repowise/cli/commands/reindex_cmd.py::_reindex,packages/cli/src/repowise/cli/providers/vector_store.py::build_vector_store,packages/cli/src/repowise/cli/tool_bridge.py::_open_vector_store,packages/core/src/repowise/core/workspace/registry.py::RepoRegistry::_load_vector_stores,packages/server/src/repowise/server/mcp_server/_server.py::_load_vector_stores,packages/server/src/repowise/server/search_helpers.py::_build_repo_vector_store,tests/unit/cli/test_doctor_embed_recipe.py::_build_repo,tests/unit/cli/test_doctor_information_floor.py::_build_repo,tests/unit/cli/test_doctor_resume_stub.py::_build_repo,tests/unit/cli/test_doctor_store_reconciliation.py::_build_repo,tests/unit/persistence/test_vector_evidence_snippet.py::store,tests/unit/persistence/test_vector_store_batching.py::test_lancedb_batch_summaries_roundtrip,tests/unit/persistence/test_vector_store_batching.py::test_lancedb_delete_many_roundtrip,tests/unit/server/test_search_persistence.py::test_rest_search_reopens_cli_lancedb_indexpackages/core/src/repowise/core/providers/embedding/gemini.py::GeminiEmbedder: body, 12 caller(s) outside this PR:packages/server/src/repowise/server/app.py::_build_embedder,tests/unit/test_persistence/test_gemini_embedder.py::test_api_key_from_gemini_env,tests/unit/test_persistence/test_gemini_embedder.py::test_api_key_from_google_env,tests/unit/test_persistence/test_gemini_embedder.py::test_custom_dimensions,tests/unit/test_persistence/test_gemini_embedder.py::test_default_dimensions,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_batch_returns_correct_count,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_empty_returns_empty,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_raises_when_api_returns_wrong_width,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_raises_when_api_returns_wrong_width_custom_dim,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_returns_normalized_vectors,tests/unit/test_persistence/test_gemini_embedder.py::test_embed_width_check_not_triggered_on_empty,tests/unit/test_persistence/test_gemini_embedder.py::test_missing_api_key_raisespackages/core/src/repowise/core/persistence/vector_store/pgvector_store.py::PgVectorStore: body, 7 caller(s) outside this PR:tests/integration/persistence/test_embed_batch_pg.py::test_embed_batch_writes_embeddings_postgres,tests/unit/persistence/test_vector_store_batching.py::test_pg_batch_summaries_empty_paths,tests/unit/persistence/test_vector_store_batching.py::test_pg_batch_summaries_single_query_first_row_wins,tests/unit/persistence/test_vector_store_batching.py::test_pg_delete_many_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_pg_delete_many_single_update_with_in_params,tests/unit/persistence/test_vector_store_batching.py::test_pg_embed_batch_empty_is_noop,tests/unit/persistence/test_vector_store_batching.py::test_pg_embed_batch_single_executemanypackages/core/src/repowise/core/providers/embedding/openai.py::OpenAIEmbedder: body, 3 caller(s) outside this PR:packages/server/src/repowise/server/app.py::_build_embedder,tests/unit/test_persistence/test_embedding_timeout_resolution.py::test_each_embedder_keeps_its_own_default,tests/unit/test_persistence/test_embedding_timeout_resolution.py::test_no_embedder_is_destroyed_by_a_typopackages/core/src/repowise/core/analysis/decisions/semantic_match.py::find_duplicate_decision: body, 1 caller(s) outside this PR:packages/core/src/repowise/core/persistence/crud/decisions.py::bulk_upsert_decisionspackages/core/src/repowise/core/analysis/decisions/semantic_match.py::find_related_decisions_many: body, 1 caller(s) outside this PR:packages/core/src/repowise/core/analysis/decisions/evolution.py::detect_supersessions_and_conflictspackages/server/src/repowise/server/mcp_server/_answer_pipeline.py::question_vector: body, 1 caller(s) outside this PR:packages/server/src/repowise/server/mcp_server/_neighbor_rerank.py::expand_via_neighbor_rerankpackages/core/src/repowise/core/analysis/decisions/semantic_match.py::find_related_decisions: body, 0 caller(s) outside this PRpackages/core/src/repowise/core/persistence/vector_store/_base.py::VectorStore: body, 0 caller(s) outside this PRpackages/core/src/repowise/core/providers/embedding/base.py::Embedder: body, 0 caller(s) outside this PRpackages/server/src/repowise/server/mcp_server/tool_why.py::_semantic_lanes: body, 0 caller(s) outside this PRtests/unit/cli/test_embedder_resolution.py::_WideEmbedder: body, 0 caller(s) outside this PRtests/unit/cli/test_embedder_resolution.py::test_two_real_widths_are_never_compared: body, 0 caller(s) outside this PRtests/unit/persistence/test_decision_semantic_dedup.py::_CountingOrthogonalEmbedder: body, 0 caller(s) outside this PRtests/unit/persistence/test_decision_semantic_dedup.py::_KeywordEmbedder: body, 0 caller(s) outside this PRtests/unit/persistence/test_decision_supersession.py::_TopicEmbedder: body, 0 caller(s) outside this PRtests/unit/persistence/test_vector_store.py::_FixedDimEmbedder: body, 0 caller(s) outside this PRtests/unit/persistence/test_vector_store.py::_RecordingEmbedder: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_answer_decision_rows.py::_ScriptedStore: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_answer_question_embedding.py::_SpyEmbedder: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_embedder_resolution.py::test_custom_registered_embedder_is_honoured: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_keyless_vector_leg.py::_RealisticEmbedder: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_retrieval_leg_visibility.py::_Store: body, 0 caller(s) outside this PRtests/unit/server/mcp/test_why_search_payload.py::test_search_embeds_the_query_once: body, 0 caller(s) outside this PR
Review priority (recent bug-fix history)
packages/server/src/repowise/server/mcp_server/tool_why.py: fixed 10x in the last ~6 monthspackages/server/src/repowise/server/mcp_server/_answer_pipeline.py: fixed 5x in the last ~6 monthstests/unit/cli/test_embedder_resolution.py: fixed 3x in the last ~6 monthstests/unit/server/mcp/test_keyless_vector_leg.py: fixed 3x in the last ~6 monthstests/unit/server/mcp/test_embedder_resolution.py: fixed 3x in the last ~6 months
Touched hotspots (blast radius)
packages/core/src/repowise/core/persistence/vector_store/_base.py: 8 commits/90d, 8 dependents, owner Swati Ahujatests/unit/server/mcp/test_keyless_vector_leg.py: 5 commits/90d, 0 dependents, owner Raghav Chamadiyapackages/core/src/repowise/core/providers/embedding/ollama.py: 4 commits/90d, 6 dependents, owner biggiesmallcap-bliptests/unit/cli/test_embedder_resolution.py: 7 commits/90d, 2 dependents, owner Raghav Chamadiyatests/unit/persistence/test_vector_store.py: 1 commits/90d, 1 dependents, owner Raghav Chamadiya
Hidden coupling (co-change partners not in this PR)
packages/server/src/repowise/server/mcp_server/tool_why.pyco-changes withpackages/server/src/repowise/server/mcp_server/tool_search.py(10x)packages/server/src/repowise/server/mcp_server/tool_why.pyco-changes withpackages/server/src/repowise/server/mcp_server/tool_overview.py(9x)packages/server/src/repowise/server/mcp_server/_answer_pipeline.pyco-changes withpackages/server/src/repowise/server/mcp_server/tool_search.py(8x)packages/server/src/repowise/server/mcp_server/tool_why.pyco-changes withpackages/server/src/repowise/server/mcp_server/tool_dead_code.py(7x)packages/server/src/repowise/server/mcp_server/tool_why.pyco-changes withpackages/server/src/repowise/server/mcp_server/tool_symbol.py(7x)
Change risk
- Raw change-risk score: 9.1/10 (banded moderate, riskier than 63% of this repo's commits)
- Driven by: more lines added than baseline
- Driven by: more scattered than baseline
Annotations
Check warning on line 87 in packages/core/src/repowise/core/providers/embedding/ollama.py
repowise-bot / Repowise / code health
Signature changed: embed
7 callers outside this PR call `embed`: `tests/unit/test_persistence/test_ollama_embedder.py::test_embed_empty_returns_empty`, `tests/unit/test_persistence/test_ollama_embedder.py::test_embed_posts_batch_to_native_endpoint`, `tests/unit/test_persistence/test_ollama_embedder.py::test_embed_raises_when_server_returns_wrong_width_explicit` (+4 more). They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.
Check warning on line 88 in packages/core/src/repowise/core/providers/embedding/openrouter.py
repowise-bot / Repowise / code health
Signature changed: embed
7 callers outside this PR call `embed`: `tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_batch_returns_correct_count`, `tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_empty_returns_empty`, `tests/unit/test_persistence/test_openrouter_embedder.py::test_embed_passes_model_and_input` (+4 more). They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.
Check warning on line 104 in packages/core/src/repowise/core/providers/embedding/edenai.py
repowise-bot / Repowise / code health
Signature changed: embed
6 callers outside this PR call `embed`: `tests/unit/test_persistence/test_edenai_embedder.py::test_embed_empty_returns_empty`, `tests/unit/test_persistence/test_edenai_embedder.py::test_embed_passes_model_and_input`, `tests/unit/test_persistence/test_edenai_embedder.py::test_embed_raises_when_api_returns_wrong_width` (+3 more). They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.
Check warning on line 82 in packages/core/src/repowise/core/providers/embedding/gemini.py
repowise-bot / Repowise / code health
Signature changed: embed
6 callers outside this PR call `embed`: `tests/unit/test_persistence/test_gemini_embedder.py::test_embed_batch_returns_correct_count`, `tests/unit/test_persistence/test_gemini_embedder.py::test_embed_empty_returns_empty`, `tests/unit/test_persistence/test_gemini_embedder.py::test_embed_raises_when_api_returns_wrong_width` (+3 more). They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.
Check warning on line 69 in packages/core/src/repowise/core/persistence/vector_store/in_memory.py
repowise-bot / Repowise / code health
Signature changed: search
1 caller outside this PR call `search`: `tests/unit/generation/test_embed_metadata.py::test_title_survives_into_the_vector_store`. They are not part of this change, so nothing in this diff proves they still compile or still pass the right arguments.