Skip to content

feat(embedding): apply asymmetric query/document prefixes to embed calls - #1858

Open
NullSense wants to merge 2 commits into
repowise-dev:mainfrom
NullSense:feat/asymmetric-embedding-query-doc-prefix
Open

feat(embedding): apply asymmetric query/document prefixes to embed calls#1858
NullSense wants to merge 2 commits into
repowise-dev:mainfrom
NullSense:feat/asymmetric-embedding-query-doc-prefix

test: accept kind= in every embed()/embed_texts() test double

e6aaa23
Select commit
Loading
Failed to load commit list.
Repowise Bot / Repowise / code health succeeded Aug 27, 2026 in 0s

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_request
  • packages/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_empty
  • packages/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_empty
  • packages/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_empty
  • packages/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_store
  • packages/core/src/repowise/core/persistence/vector_store/_base.py::embed_texts: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/_base.py::search: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/_base.py::search_many: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/in_memory.py::search_many: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/lancedb_store.py::search: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/lancedb_store.py::search_many: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/pgvector_store.py::search: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/pgvector_store.py::search_many: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/providers/embedding/base.py::embed: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/providers/embedding/openai.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/cli/test_embedder_resolution.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/persistence/test_decision_semantic_dedup.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/persistence/test_decision_supersession.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/persistence/test_vector_store.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_answer_decision_rows.py::embed_texts: signature, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_answer_decision_rows.py::search: signature, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_answer_question_embedding.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_keyless_vector_leg.py::embed: signature, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_retrieval_leg_visibility.py::embed_texts: signature, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/providers/embedding/base.py::resolve_embed_prefix: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::_captured_input: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::test_default_kind_is_document: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::test_document_prefix_applied_only_to_document_kind: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::test_no_prefix_configured_leaves_the_request_byte_identical: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::test_prefix_applies_to_every_text_in_the_batch: added, 0 caller(s) outside this PR
  • tests/unit/test_persistence/test_openai_embedder.py::test_query_prefix_applied_only_to_query_kind: added, 0 caller(s) outside this PR
  • packages/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_kg
  • packages/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_context
  • packages/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_construction
  • packages/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_seconds
  • packages/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_construction
  • packages/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_index
  • packages/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_raises
  • packages/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_executemany
  • packages/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_typo
  • packages/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_decisions
  • packages/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_conflicts
  • packages/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_rerank
  • packages/core/src/repowise/core/analysis/decisions/semantic_match.py::find_related_decisions: body, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/persistence/vector_store/_base.py::VectorStore: body, 0 caller(s) outside this PR
  • packages/core/src/repowise/core/providers/embedding/base.py::Embedder: body, 0 caller(s) outside this PR
  • packages/server/src/repowise/server/mcp_server/tool_why.py::_semantic_lanes: body, 0 caller(s) outside this PR
  • tests/unit/cli/test_embedder_resolution.py::_WideEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/cli/test_embedder_resolution.py::test_two_real_widths_are_never_compared: body, 0 caller(s) outside this PR
  • tests/unit/persistence/test_decision_semantic_dedup.py::_CountingOrthogonalEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/persistence/test_decision_semantic_dedup.py::_KeywordEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/persistence/test_decision_supersession.py::_TopicEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/persistence/test_vector_store.py::_FixedDimEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/persistence/test_vector_store.py::_RecordingEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_answer_decision_rows.py::_ScriptedStore: body, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_answer_question_embedding.py::_SpyEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_embedder_resolution.py::test_custom_registered_embedder_is_honoured: body, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_keyless_vector_leg.py::_RealisticEmbedder: body, 0 caller(s) outside this PR
  • tests/unit/server/mcp/test_retrieval_leg_visibility.py::_Store: body, 0 caller(s) outside this PR
  • tests/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 months
  • packages/server/src/repowise/server/mcp_server/_answer_pipeline.py: fixed 5x in the last ~6 months
  • tests/unit/cli/test_embedder_resolution.py: fixed 3x in the last ~6 months
  • tests/unit/server/mcp/test_keyless_vector_leg.py: fixed 3x in the last ~6 months
  • tests/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 Ahuja
  • tests/unit/server/mcp/test_keyless_vector_leg.py: 5 commits/90d, 0 dependents, owner Raghav Chamadiya
  • packages/core/src/repowise/core/providers/embedding/ollama.py: 4 commits/90d, 6 dependents, owner biggiesmallcap-blip
  • tests/unit/cli/test_embedder_resolution.py: 7 commits/90d, 2 dependents, owner Raghav Chamadiya
  • tests/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.py co-changes with packages/server/src/repowise/server/mcp_server/tool_search.py (10x)
  • packages/server/src/repowise/server/mcp_server/tool_why.py co-changes with packages/server/src/repowise/server/mcp_server/tool_overview.py (9x)
  • packages/server/src/repowise/server/mcp_server/_answer_pipeline.py co-changes with packages/server/src/repowise/server/mcp_server/tool_search.py (8x)
  • packages/server/src/repowise/server/mcp_server/tool_why.py co-changes with packages/server/src/repowise/server/mcp_server/tool_dead_code.py (7x)
  • packages/server/src/repowise/server/mcp_server/tool_why.py co-changes with packages/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

See this annotation in the file changed.

@repowise-bot 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

See this annotation in the file changed.

@repowise-bot 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

See this annotation in the file changed.

@repowise-bot 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

See this annotation in the file changed.

@repowise-bot 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

See this annotation in the file changed.

@repowise-bot 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.