haiku.rag/tests
Yiorgis Gozadinos d9ac221ca0
Refuse a chunk id that names a chunk in two databases
A chunk id is unique within a database and says nothing across them, so a
database copied from another holds the same ids. `qualified_id` keys the
two in-memory identity sites on the database and the id together:
`merge_results` was dropping the second database's result when a query
repeated, and the arrival map that breaks fused score ties was ranking one
of the pair as the other.

Everything serialized records the id alone, so there ambiguity is refused
rather than qualified. `resolve_citations` raises `AmbiguousCitationError`
for a cited id held by two of the databases searched, where it used to
resolve to whichever result came last; `_register_citations` raises for one
already cited from another database in an earlier question. `_cite` turns
both into a `ModelRetry` asking for other evidence. The direct-id fallback
asks every database the question covers instead of taking the first that
answers, so an id no search returned is refused on the same terms.
`all_found` collects them and `first_found` reads its first, which document
reads keep doing on purpose.

Also drop a duplicated 0.77.0 heading from the changelog.
2026-08-25 17:38:25 +03:00
..
capabilities Refuse a chunk id that names a chunk in two databases 2026-08-25 17:38:25 +03:00
cassettes Ask and analyze across several databases 2026-08-24 10:03:46 +03:00
chat Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
data Remove repliqa from test setup 2026-06-01 10:40:52 +03:00
docker Add a docker-compose for integration test services 2026-06-04 11:13:16 +03:00
ingester Move source adapters out of the ingester package 2026-08-20 11:46:55 +03:00
sandbox Ask the client what it covers 2026-08-25 14:16:22 +03:00
sources Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
store Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
tools Select documents to filter by id, not by displayed name 2026-08-24 15:27:59 +03:00
__init__.py Use LLM-as-a-judge to test QA 2025-06-25 18:18:28 +03:00
conftest.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
json_body_serializer.py Keep cross-encoder rerank scores apart when they saturate 2026-08-07 14:07:53 +03:00
services.py Add a docker-compose for integration test services 2026-06-04 11:13:16 +03:00
test_app.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_ask_images.py Accept images on ask/analyze 2026-07-25 10:23:55 +03:00
test_cascade_delete.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_chunk.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_chunker.py Reject unknown and out-of-range configuration values 2026-08-19 15:32:51 +03:00
test_cli.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_client.py Compose a set out of single-database sessions 2026-08-25 08:56:09 +03:00
test_client_analyze.py replace haiku.skills with native Pydantic AI capabilities 2026-07-24 15:26:17 +03:00
test_config.py Make the documented configuration match the code 2026-08-19 15:52:50 +03:00
test_context.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_context_enhancement.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_converters.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_database_autocreate.py Test vacuum against real table state 2026-07-27 12:11:01 +03:00
test_database_scope.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_docling_serve_client.py Wire providers.docling_serve.timeout through to the client 2026-08-19 13:30:45 +03:00
test_doctor.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_document.py Load document blobs only when asked 2026-08-06 13:04:51 +03:00
test_download_models.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_duplicate_ingestion.py Re-check URI under the write lock to prevent duplicate ingestion 2026-07-08 11:26:45 +03:00
test_embedder.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_embedder_config.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_enrichment_batching.py Stop the reranker fetch reading text it discards 2026-08-18 18:00:00 +03:00
test_filter.py Rename document_meta identity column document_id to id 2026-07-08 16:32:55 +03:00
test_info.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_inspector.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_lancedb_connection.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_logging.py Additional tests 2026-02-13 18:08:46 +02:00
test_mcp.py Move ConfigMismatchError to the store exceptions module 2026-08-24 10:03:46 +03:00
test_multi_db.py Refuse a chunk id that names a chunk in two databases 2026-08-25 17:38:25 +03:00
test_multi_db_ask.py Refuse a chunk id that names a chunk in two databases 2026-08-25 17:38:25 +03:00
test_pdf_attachments.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_pdf_concurrency.py Serialize all in-process pdfium access under a shared lock 2026-06-14 10:50:42 +03:00
test_pdf_split.py Cover MCP, ingester and converter error paths 2026-07-26 19:14:26 +03:00
test_picture_description.py cover picture-description provider and rebuild edge cases 2026-05-05 14:20:37 +03:00
test_picture_in_context.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_processing.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_reader.py Make get_config the only configuration lookup 2026-08-19 14:43:40 +03:00
test_rebuild.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_reranker.py Add per-endpoint api_key to model and embedding config 2026-08-23 23:54:40 +03:00
test_s3_integration.py Resolve the databases a command works on, once 2026-08-25 15:48:47 +03:00
test_s3_source.py canonical metadata keys: source_revision + content_type, bump to 0.50.0 2026-05-26 11:43:30 +03:00
test_search.py Expand context through the database a result came from 2026-08-25 16:11:31 +03:00
test_search_phases.py Resolve the search type once per search 2026-08-24 15:28:21 +03:00
test_settings.py Move ConfigMismatchError to the store exceptions module 2026-08-24 10:03:46 +03:00
test_telemetry.py Route eval scripts through the shared telemetry configure 2026-07-10 11:38:33 +03:00
test_title_generation.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_uri.py Resolve file:// URIs to paths through url2pathname 2026-08-21 10:22:26 +03:00
test_utils.py Ask the client what it covers 2026-08-25 14:16:22 +03:00
test_vacuum_debounce.py Type writing against one database 2026-08-25 10:09:23 +03:00
test_versioning.py Ask the session which database an operation works on 2026-08-25 09:28:20 +03:00